75 lines · plain
1include(GNUInstallPackageDir)2include(ExtendPath)3include(FindPrefixFromConfig)4 5# Generate a list of CMake library targets so that other CMake projects can6# link against them. LLVM calls its version of this file LLVMExports.cmake, but7# the usual CMake convention seems to be ${Project}Targets.cmake.8set(LLD_INSTALL_PACKAGE_DIR "${CMAKE_INSTALL_PACKAGEDIR}/lld" CACHE STRING9 "Path for CMake subdirectory for LLD (defaults to '${CMAKE_INSTALL_PACKAGEDIR}/lld')")10# CMAKE_INSTALL_PACKAGEDIR might be absolute, so don't reuse below.11set(lld_cmake_builddir "${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/cmake/lld")12 13# Keep this in sync with llvm/cmake/CMakeLists.txt!14set(LLVM_INSTALL_PACKAGE_DIR "${CMAKE_INSTALL_PACKAGEDIR}/llvm" CACHE STRING15 "Path for CMake subdirectory for LLVM (defaults to '${CMAKE_INSTALL_PACKAGEDIR}/llvm')")16# CMAKE_INSTALL_PACKAGEDIR might be absolute, so don't reuse below.17string(REPLACE "${CMAKE_CFG_INTDIR}" "." llvm_cmake_builddir "${LLVM_LIBRARY_DIR}")18set(llvm_cmake_builddir "${llvm_cmake_builddir}/cmake/llvm")19 20get_property(LLD_EXPORTS GLOBAL PROPERTY LLD_EXPORTS)21export(TARGETS ${LLD_EXPORTS} FILE ${lld_cmake_builddir}/LLDTargets.cmake)22 23# Generate LLDConfig.cmake for the build tree.24set(LLD_CONFIG_CMAKE_DIR "${lld_cmake_builddir}")25set(LLD_CONFIG_LLVM_CMAKE_DIR "${llvm_cmake_builddir}")26set(LLD_CONFIG_INCLUDE_EXPORTS "include(\"${lld_cmake_builddir}/LLDTargets.cmake\")")27set(LLD_CONFIG_INCLUDE_DIRS28 "${LLD_SOURCE_DIR}/include"29 "${LLD_BINARY_DIR}/include"30 )31configure_file(32 ${CMAKE_CURRENT_SOURCE_DIR}/LLDConfig.cmake.in33 ${lld_cmake_builddir}/LLDConfig.cmake34 @ONLY)35configure_file(36 ${CMAKE_CURRENT_SOURCE_DIR}/LLDConfigVersion.cmake.in37 ${lld_cmake_builddir}/LLDConfigVersion.cmake38 @ONLY)39set(LLD_CONFIG_CMAKE_DIR)40set(LLD_CONFIG_LLVM_CMAKE_DIR)41 42# Generate LLDConfig.cmake for the install tree.43find_prefix_from_config(LLD_CONFIG_CODE LLD_INSTALL_PREFIX "${LLD_INSTALL_PACKAGE_DIR}")44extend_path(LLD_CONFIG_CMAKE_DIR "\${LLD_INSTALL_PREFIX}" "${LLD_INSTALL_PACKAGE_DIR}")45extend_path(LLD_CONFIG_LLVM_CMAKE_DIR "\${LLD_INSTALL_PREFIX}" "${LLVM_INSTALL_PACKAGE_DIR}")46get_config_exports_includes(LLD LLD_CONFIG_INCLUDE_EXPORTS)47extend_path(LLD_CONFIG_INCLUDE_DIRS "\${LLD_INSTALL_PREFIX}" "${CMAKE_INSTALL_INCLUDEDIR}")48configure_file(49 ${CMAKE_CURRENT_SOURCE_DIR}/LLDConfig.cmake.in50 ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/LLDConfig.cmake51 @ONLY)52configure_file(53 ${CMAKE_CURRENT_SOURCE_DIR}/LLDConfigVersion.cmake.in54 ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/LLDConfigVersion.cmake55 @ONLY)56set(LLD_CONFIG_CODE)57set(LLD_CONFIG_CMAKE_DIR)58 59if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)60 install_distribution_exports(LLD)61 62 install(FILES63 ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/LLDConfig.cmake64 ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/LLDConfigVersion.cmake65 DESTINATION ${LLD_INSTALL_PACKAGE_DIR}66 COMPONENT lld-cmake-exports)67 68 if(NOT LLVM_ENABLE_IDE)69 # Add a dummy target so this can be used with LLVM_DISTRIBUTION_COMPONENTS70 add_custom_target(lld-cmake-exports)71 add_llvm_install_targets(install-lld-cmake-exports72 COMPONENT lld-cmake-exports)73 endif()74endif()75