| list(APPEND LLVM_COMMON_DEPENDS intrinsics_gen) |
| |
| list(APPEND LLVM_TABLEGEN_FLAGS -I ${LLVM_MAIN_SRC_DIR}/lib/Target) |
| |
| add_llvm_component_library(LLVMTarget |
| Target.cpp |
| TargetIntrinsicInfo.cpp |
| TargetLoweringObjectFile.cpp |
| TargetMachine.cpp |
| TargetMachineC.cpp |
| |
| ADDITIONAL_HEADER_DIRS |
| ${LLVM_MAIN_INCLUDE_DIR}/llvm/Target |
| |
| LINK_COMPONENTS |
| Analysis |
| Core |
| MC |
| Support |
| ) |
| |
| # When building shared objects for each target there are some internal APIs |
| # that are used across shared objects which we can't hide. |
| if (NOT BUILD_SHARED_LIBS AND NOT APPLE AND |
| NOT (${CMAKE_SYSTEM_NAME} MATCHES "AIX") AND |
| NOT DEFINED CMAKE_CXX_VISIBILITY_PRESET) |
| # Set default visibility to hidden, so we don't export all the Target classes |
| # in libLLVM.so. |
| set(CMAKE_CXX_VISIBILITY_PRESET hidden) |
| endif() |
| |
| foreach(t ${LLVM_TARGETS_TO_BUILD}) |
| message(STATUS "Targeting ${t}") |
| add_subdirectory(${t}) |
| endforeach() |
| |
| # Currently we do not allow libraries from lib to reference targets directly. |
| # This property is used to enforce that convention. It is important because the |
| # logic in llvm_map_components_to_libnames is order dependent on the target |
| # libraries being created. |
| set_property(GLOBAL PROPERTY LLVM_TARGETS_CONFIGURED On) |