1# Generate a list of CMake library targets so that other CMake projects can 2# link against them. LLVM calls its version of this file LLVMExports.cmake, but 3# the usual CMake convention seems to be ${Project}Targets.cmake. 4set(LLD_INSTALL_PACKAGE_DIR lib${LLVM_LIBDIR_SUFFIX}/cmake/lld) 5set(lld_cmake_builddir "${CMAKE_BINARY_DIR}/${LLD_INSTALL_PACKAGE_DIR}") 6 7# Keep this in sync with llvm/cmake/CMakeLists.txt! 8set(LLVM_INSTALL_PACKAGE_DIR lib${LLVM_LIBDIR_SUFFIX}/cmake/llvm) 9set(llvm_cmake_builddir "${LLVM_BINARY_DIR}/${LLVM_INSTALL_PACKAGE_DIR}") 10 11get_property(LLD_EXPORTS GLOBAL PROPERTY LLD_EXPORTS) 12export(TARGETS ${LLD_EXPORTS} FILE ${lld_cmake_builddir}/LLDTargets.cmake) 13 14# Generate LLDConfig.cmake for the build tree. 15set(LLD_CONFIG_CMAKE_DIR "${lld_cmake_builddir}") 16set(LLD_CONFIG_LLVM_CMAKE_DIR "${llvm_cmake_builddir}") 17set(LLD_CONFIG_INCLUDE_EXPORTS "include(\"${lld_cmake_builddir}/LLDTargets.cmake\")") 18set(LLD_CONFIG_INCLUDE_DIRS 19 "${LLD_SOURCE_DIR}/include" 20 "${LLD_BINARY_DIR}/include" 21 ) 22configure_file( 23 ${CMAKE_CURRENT_SOURCE_DIR}/LLDConfig.cmake.in 24 ${lld_cmake_builddir}/LLDConfig.cmake 25 @ONLY) 26set(LLD_CONFIG_CMAKE_DIR) 27set(LLD_CONFIG_LLVM_CMAKE_DIR) 28 29# Generate LLDConfig.cmake for the install tree. 30set(LLD_CONFIG_CODE " 31# Compute the installation prefix from this LLVMConfig.cmake file location. 32get_filename_component(LLD_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH)") 33# Construct the proper number of get_filename_component(... PATH) 34# calls to compute the installation prefix. 35string(REGEX REPLACE "/" ";" _count "${LLD_INSTALL_PACKAGE_DIR}") 36foreach(p ${_count}) 37 set(LLD_CONFIG_CODE "${LLD_CONFIG_CODE} 38get_filename_component(LLD_INSTALL_PREFIX \"\${LLD_INSTALL_PREFIX}\" PATH)") 39endforeach(p) 40set(LLD_CONFIG_CMAKE_DIR "\${LLD_INSTALL_PREFIX}/${LLD_INSTALL_PACKAGE_DIR}") 41set(LLD_CONFIG_LLVM_CMAKE_DIR "\${LLD_INSTALL_PREFIX}/${LLVM_INSTALL_PACKAGE_DIR}") 42get_config_exports_includes(LLD LLD_CONFIG_INCLUDE_EXPORTS) 43set(LLD_CONFIG_INCLUDE_DIRS "\${LLD_INSTALL_PREFIX}/include") 44configure_file( 45 ${CMAKE_CURRENT_SOURCE_DIR}/LLDConfig.cmake.in 46 ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/LLDConfig.cmake 47 @ONLY) 48set(LLD_CONFIG_CODE) 49set(LLD_CONFIG_CMAKE_DIR) 50 51if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) 52 install_distribution_exports(LLD) 53 54 install(FILES 55 ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/LLDConfig.cmake 56 DESTINATION ${LLD_INSTALL_PACKAGE_DIR} 57 COMPONENT lld-cmake-exports) 58 59 if(NOT LLVM_ENABLE_IDE) 60 # Add a dummy target so this can be used with LLVM_DISTRIBUTION_COMPONENTS 61 add_custom_target(lld-cmake-exports) 62 add_llvm_install_targets(install-lld-cmake-exports 63 COMPONENT lld-cmake-exports) 64 endif() 65endif() 66