1*67e74705SXin Li# Generate a list of CMake library targets so that other CMake projects can 2*67e74705SXin Li# link against them. LLVM calls its version of this file LLVMExports.cmake, but 3*67e74705SXin Li# the usual CMake convention seems to be ${Project}Targets.cmake. 4*67e74705SXin Liset(CLANG_INSTALL_PACKAGE_DIR lib${LLVM_LIBDIR_SUFFIX}/cmake/clang) 5*67e74705SXin Liset(clang_cmake_builddir "${CMAKE_BINARY_DIR}/${CLANG_INSTALL_PACKAGE_DIR}") 6*67e74705SXin Li 7*67e74705SXin Liget_property(CLANG_EXPORTS GLOBAL PROPERTY CLANG_EXPORTS) 8*67e74705SXin Liexport(TARGETS ${CLANG_EXPORTS} FILE ${clang_cmake_builddir}/ClangTargets.cmake) 9*67e74705SXin Li 10*67e74705SXin Li# Generate ClangConfig.cmake for the build tree. 11*67e74705SXin Liset(CLANG_CONFIG_CMAKE_DIR "${clang_cmake_builddir}") 12*67e74705SXin Liset(CLANG_CONFIG_EXPORTS_FILE "${clang_cmake_builddir}/ClangTargets.cmake") 13*67e74705SXin Liconfigure_file( 14*67e74705SXin Li ${CMAKE_CURRENT_SOURCE_DIR}/ClangConfig.cmake.in 15*67e74705SXin Li ${clang_cmake_builddir}/ClangConfig.cmake 16*67e74705SXin Li @ONLY) 17*67e74705SXin Liset(CLANG_CONFIG_CMAKE_DIR) 18*67e74705SXin Liset(CLANG_CONFIG_EXPORTS_FILE) 19*67e74705SXin Li 20*67e74705SXin Li# Generate ClangConfig.cmake for the install tree. 21*67e74705SXin Liset(CLANG_CONFIG_CODE " 22*67e74705SXin Li# Compute the installation prefix from this LLVMConfig.cmake file location. 23*67e74705SXin Liget_filename_component(CLANG_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH)") 24*67e74705SXin Li# Construct the proper number of get_filename_component(... PATH) 25*67e74705SXin Li# calls to compute the installation prefix. 26*67e74705SXin Listring(REGEX REPLACE "/" ";" _count "${CLANG_INSTALL_PACKAGE_DIR}") 27*67e74705SXin Liforeach(p ${_count}) 28*67e74705SXin Li set(CLANG_CONFIG_CODE "${CLANG_CONFIG_CODE} 29*67e74705SXin Liget_filename_component(CLANG_INSTALL_PREFIX \"\${CLANG_INSTALL_PREFIX}\" PATH)") 30*67e74705SXin Liendforeach(p) 31*67e74705SXin Liset(CLANG_CONFIG_CMAKE_DIR "\${CLANG_INSTALL_PREFIX}/${CLANG_INSTALL_PACKAGE_DIR}") 32*67e74705SXin Liset(CLANG_CONFIG_EXPORTS_FILE "\${CLANG_CMAKE_DIR}/ClangTargets.cmake") 33*67e74705SXin Liconfigure_file( 34*67e74705SXin Li ${CMAKE_CURRENT_SOURCE_DIR}/ClangConfig.cmake.in 35*67e74705SXin Li ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/ClangConfig.cmake 36*67e74705SXin Li @ONLY) 37*67e74705SXin Liset(CLANG_CONFIG_CODE) 38*67e74705SXin Liset(CLANG_CONFIG_CMAKE_DIR) 39*67e74705SXin Liset(CLANG_CONFIG_EXPORTS_FILE) 40*67e74705SXin Li 41*67e74705SXin Liif (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) 42*67e74705SXin Li install(EXPORT ClangTargets DESTINATION ${CLANG_INSTALL_PACKAGE_DIR}) 43*67e74705SXin Li 44*67e74705SXin Li install(FILES 45*67e74705SXin Li ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/ClangConfig.cmake 46*67e74705SXin Li DESTINATION ${CLANG_INSTALL_PACKAGE_DIR}) 47*67e74705SXin Liendif() 48