# Copyright 2020 The SwiftShader Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. set(ROOT_PROJECT_COMPILE_OPTIONS ${SWIFTSHADER_COMPILE_OPTIONS} ${WARNINGS_AS_ERRORS} ) set(REACTOR_SRC_FILES Assert.cpp Assert.hpp Debug.cpp Debug.hpp ExecutableMemory.cpp ExecutableMemory.hpp Nucleus.hpp Pragma.cpp Pragma.hpp PragmaInternals.hpp Print.hpp Reactor.cpp Reactor.hpp ReactorDebugInfo.cpp ReactorDebugInfo.hpp Routine.hpp SIMD.cpp SIMD.hpp Swizzle.hpp ) set(SUBZERO_SRC_FILES Optimizer.cpp SubzeroReactor.cpp ) set(LLVM_SRC_FILES CPUID.cpp CPUID.hpp LLVMAsm.cpp LLVMAsm.hpp LLVMJIT.cpp LLVMReactor.cpp LLVMReactor.hpp LLVMReactorDebugInfo.cpp LLVMReactorDebugInfo.hpp ) if(REACTOR_EMIT_DEBUG_INFO) if(WIN32) # Boost stacktrace uses COM on Windows. # On Windows, cache COM instances in TLS for performance. list(APPEND REACTOR_PRIVATE_COMPILE_DEFINITIONS "BOOST_STACKTRACE_USE_WINDBG_CACHED") else() # Boost stacktrace uses libbacktrace list(APPEND REACTOR_PRIVATE_COMPILE_DEFINITIONS "BOOST_STACKTRACE_USE_BACKTRACE") list(APPEND REACTOR_PRIVATE_LINK_LIBRARIES libbacktrace) endif() list(APPEND REACTOR_PRIVATE_LINK_LIBRARIES Boost::boost) endif(REACTOR_EMIT_DEBUG_INFO) list(APPEND REACTOR_PRIVATE_COMPILE_DEFINITIONS "REACTOR_ANONYMOUS_MMAP_NAME=swiftshader_jit") # SubzeroReactor library add_library(ReactorSubzero STATIC EXCLUDE_FROM_ALL ${REACTOR_SRC_FILES} ${SUBZERO_SRC_FILES} ) set_target_properties(ReactorSubzero PROPERTIES POSITION_INDEPENDENT_CODE 1 FOLDER "Reactor" ) target_include_directories(ReactorSubzero PUBLIC . ) target_compile_definitions(ReactorSubzero PUBLIC ${REACTOR_PUBLIC_COMPILE_DEFINITIONS} PRIVATE ${REACTOR_PRIVATE_COMPILE_DEFINITIONS} ) target_compile_options(ReactorSubzero PRIVATE ${ROOT_PROJECT_COMPILE_OPTIONS} ) target_link_libraries(ReactorSubzero PRIVATE subzero marl ${REACTOR_PRIVATE_LINK_LIBRARIES} ) # ReactorLLVM library add_library(ReactorLLVM STATIC EXCLUDE_FROM_ALL ${REACTOR_SRC_FILES} ${LLVM_SRC_FILES} ) set_target_properties(ReactorLLVM PROPERTIES POSITION_INDEPENDENT_CODE 1 FOLDER "Reactor" ) target_include_directories(ReactorLLVM PUBLIC . ) target_compile_definitions(ReactorLLVM PUBLIC ${REACTOR_PUBLIC_COMPILE_DEFINITIONS} PRIVATE ${REACTOR_PRIVATE_COMPILE_DEFINITIONS} ) target_compile_options(ReactorLLVM PRIVATE ${ROOT_PROJECT_COMPILE_OPTIONS} ) target_link_libraries(ReactorLLVM PRIVATE llvm ${REACTOR_PRIVATE_LINK_LIBRARIES} ) # ReactorLLVMSubmodule library add_library(ReactorLLVMSubmodule STATIC EXCLUDE_FROM_ALL ${REACTOR_SRC_FILES} ${LLVM_SRC_FILES} ) set_target_properties(ReactorLLVMSubmodule PROPERTIES POSITION_INDEPENDENT_CODE 1 FOLDER "Reactor" ) target_include_directories(ReactorLLVMSubmodule PUBLIC . "${THIRD_PARTY_DIR}/llvm-project/llvm/include" "${CMAKE_BINARY_DIR}/third_party/llvm-project/llvm/include" ) target_compile_definitions(ReactorLLVMSubmodule PUBLIC ${REACTOR_PUBLIC_COMPILE_DEFINITIONS} PRIVATE ${REACTOR_PRIVATE_COMPILE_DEFINITIONS} ) target_compile_options(ReactorLLVMSubmodule PRIVATE ${ROOT_PROJECT_COMPILE_OPTIONS} ) target_link_libraries(ReactorLLVMSubmodule PRIVATE ${llvm_libs} ${REACTOR_PRIVATE_LINK_LIBRARIES} )