79 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(FLANG_INSTALL_PACKAGE_DIR "${CMAKE_INSTALL_PACKAGEDIR}/flang" CACHE STRING9 "Path for CMake subdirectory for Flang (defaults to '${CMAKE_INSTALL_PACKAGEDIR}/flang')")10# CMAKE_INSTALL_PACKAGEDIR might be absolute, so don't reuse below.11set(flang_cmake_builddir "${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/cmake/flang")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(FLANG_EXPORTS GLOBAL PROPERTY FLANG_EXPORTS)21export(TARGETS ${FLANG_EXPORTS} FILE ${flang_cmake_builddir}/FlangTargets.cmake)22 23# Generate FlangConfig.cmake for the build tree.24set(FLANG_CONFIG_CMAKE_DIR "${flang_cmake_builddir}")25set(FLANG_CONFIG_LLVM_CMAKE_DIR "${llvm_cmake_builddir}")26set(FLANG_CONFIG_INCLUDE_EXPORTS "include(\"${flang_cmake_builddir}/FlangTargets.cmake\")")27set(FLANG_CONFIG_INCLUDE_DIRS28 "${FLANG_SOURCE_DIR}/include"29 "${FLANG_BINARY_DIR}/include"30 )31configure_file(32 ${CMAKE_CURRENT_SOURCE_DIR}/FlangConfig.cmake.in33 ${flang_cmake_builddir}/FlangConfig.cmake34 @ONLY)35configure_file(36 ${CMAKE_CURRENT_SOURCE_DIR}/FlangConfigVersion.cmake.in37 ${flang_cmake_builddir}/FlangConfigVersion.cmake38 @ONLY)39set(FLANG_CONFIG_CMAKE_DIR)40set(FLANG_CONFIG_LLVM_CMAKE_DIR)41 42# Generate FlangConfig.cmake for the install tree.43find_prefix_from_config(FLANG_CONFIG_CODE FLANG_INSTALL_PREFIX "${FLANG_INSTALL_PACKAGE_DIR}")44 45extend_path(FLANG_CONFIG_CMAKE_DIR "\${FLANG_INSTALL_PREFIX}" "${FLANG_INSTALL_PACKAGE_DIR}")46extend_path(FLANG_CONFIG_LLVM_CMAKE_DIR "\${FLANG_INSTALL_PREFIX}" "${LLVM_INSTALL_PACKAGE_DIR}")47get_config_exports_includes(Flang FLANG_CONFIG_INCLUDE_EXPORTS)48extend_path(FLANG_CONFIG_INCLUDE_DIRS "\${FLANG_INSTALL_PREFIX}" "${CMAKE_INSTALL_INCLUDEDIR}")49 50configure_file(51 ${CMAKE_CURRENT_SOURCE_DIR}/FlangConfig.cmake.in52 ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/FlangConfig.cmake53 @ONLY)54configure_file(55 ${CMAKE_CURRENT_SOURCE_DIR}/FlangConfigVersion.cmake.in56 ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/FlangConfigVersion.cmake57 @ONLY)58 59set(FLANG_CONFIG_CODE)60set(FLANG_CONFIG_CMAKE_DIR)61set(FLANG_CONFIG_EXPORTS_FILE)62 63if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)64 install_distribution_exports(Flang)65 66 install(FILES67 ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/FlangConfig.cmake68 ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/FlangConfigVersion.cmake69 DESTINATION ${FLANG_INSTALL_PACKAGE_DIR}70 COMPONENT flang-cmake-exports)71 72 if(NOT LLVM_ENABLE_IDE)73 # Add a dummy target so this can be used with LLVM_DISTRIBUTION_COMPONENTS74 add_custom_target(flang-cmake-exports)75 add_llvm_install_targets(install-flang-cmake-exports76 COMPONENT flang-cmake-exports)77 endif()78endif()79