xref: /aosp_15_r20/external/llvm/cmake/modules/CMakeLists.txt (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Workerset(LLVM_INSTALL_PACKAGE_DIR lib${LLVM_LIBDIR_SUFFIX}/cmake/llvm)
2*9880d681SAndroid Build Coastguard Workerset(llvm_cmake_builddir "${LLVM_BINARY_DIR}/${LLVM_INSTALL_PACKAGE_DIR}")
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerget_property(LLVM_EXPORTS GLOBAL PROPERTY LLVM_EXPORTS)
5*9880d681SAndroid Build Coastguard Workerexport(TARGETS ${LLVM_EXPORTS}
6*9880d681SAndroid Build Coastguard Worker  FILE ${llvm_cmake_builddir}/LLVMExports.cmake)
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Workerget_property(LLVM_AVAILABLE_LIBS GLOBAL PROPERTY LLVM_LIBS)
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Workerforeach(lib ${LLVM_AVAILABLE_LIBS})
11*9880d681SAndroid Build Coastguard Worker  get_property(llvm_lib_deps GLOBAL PROPERTY LLVMBUILD_LIB_DEPS_${lib})
12*9880d681SAndroid Build Coastguard Worker  set(all_llvm_lib_deps
13*9880d681SAndroid Build Coastguard Worker    "${all_llvm_lib_deps}\nset_property(GLOBAL PROPERTY LLVMBUILD_LIB_DEPS_${lib} ${llvm_lib_deps})")
14*9880d681SAndroid Build Coastguard Workerendforeach(lib)
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard Worker# Generate LLVMConfig.cmake for the build tree.
17*9880d681SAndroid Build Coastguard Workerset(LLVM_CONFIG_CODE "
18*9880d681SAndroid Build Coastguard Worker# LLVM_BUILD_* values available only from LLVM build tree.
19*9880d681SAndroid Build Coastguard Workerset(LLVM_BUILD_BINARY_DIR \"${LLVM_BINARY_DIR}\")
20*9880d681SAndroid Build Coastguard Workerset(LLVM_BUILD_LIBRARY_DIR \"${LLVM_LIBRARY_DIR}\")
21*9880d681SAndroid Build Coastguard Workerset(LLVM_BUILD_MAIN_INCLUDE_DIR \"${LLVM_MAIN_INCLUDE_DIR}\")
22*9880d681SAndroid Build Coastguard Workerset(LLVM_BUILD_MAIN_SRC_DIR \"${LLVM_MAIN_SRC_DIR}\")
23*9880d681SAndroid Build Coastguard Worker")
24*9880d681SAndroid Build Coastguard Workerset(LLVM_CONFIG_INCLUDE_DIRS
25*9880d681SAndroid Build Coastguard Worker  "${LLVM_MAIN_INCLUDE_DIR}"
26*9880d681SAndroid Build Coastguard Worker  "${LLVM_INCLUDE_DIR}"
27*9880d681SAndroid Build Coastguard Worker  )
28*9880d681SAndroid Build Coastguard Workerset(LLVM_CONFIG_LIBRARY_DIRS
29*9880d681SAndroid Build Coastguard Worker  "${LLVM_LIBRARY_DIR}"
30*9880d681SAndroid Build Coastguard Worker  )
31*9880d681SAndroid Build Coastguard Workerset(LLVM_CONFIG_CMAKE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
32*9880d681SAndroid Build Coastguard Workerset(LLVM_CONFIG_BINARY_DIR "${LLVM_BINARY_DIR}")
33*9880d681SAndroid Build Coastguard Workerset(LLVM_CONFIG_TOOLS_BINARY_DIR "${LLVM_TOOLS_BINARY_DIR}")
34*9880d681SAndroid Build Coastguard Workerset(LLVM_CONFIG_EXPORTS_FILE "${llvm_cmake_builddir}/LLVMExports.cmake")
35*9880d681SAndroid Build Coastguard Workerconfigure_file(
36*9880d681SAndroid Build Coastguard Worker  LLVMConfig.cmake.in
37*9880d681SAndroid Build Coastguard Worker  ${llvm_cmake_builddir}/LLVMConfig.cmake
38*9880d681SAndroid Build Coastguard Worker  @ONLY)
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard Worker# For compatibility with projects that include(LLVMConfig)
41*9880d681SAndroid Build Coastguard Worker# via CMAKE_MODULE_PATH, place API modules next to it.
42*9880d681SAndroid Build Coastguard Worker# This should be removed in the future.
43*9880d681SAndroid Build Coastguard Workerfile(COPY .
44*9880d681SAndroid Build Coastguard Worker  DESTINATION ${llvm_cmake_builddir}
45*9880d681SAndroid Build Coastguard Worker  FILES_MATCHING PATTERN *.cmake
46*9880d681SAndroid Build Coastguard Worker  PATTERN .svn EXCLUDE
47*9880d681SAndroid Build Coastguard Worker  PATTERN CMakeFiles EXCLUDE
48*9880d681SAndroid Build Coastguard Worker  )
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Worker# Generate LLVMConfig.cmake for the install tree.
51*9880d681SAndroid Build Coastguard Workerset(LLVM_CONFIG_CODE "
52*9880d681SAndroid Build Coastguard Worker# Compute the installation prefix from this LLVMConfig.cmake file location.
53*9880d681SAndroid Build Coastguard Workerget_filename_component(LLVM_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH)")
54*9880d681SAndroid Build Coastguard Worker# Construct the proper number of get_filename_component(... PATH)
55*9880d681SAndroid Build Coastguard Worker# calls to compute the installation prefix.
56*9880d681SAndroid Build Coastguard Workerstring(REGEX REPLACE "/" ";" _count "${LLVM_INSTALL_PACKAGE_DIR}")
57*9880d681SAndroid Build Coastguard Workerforeach(p ${_count})
58*9880d681SAndroid Build Coastguard Worker  set(LLVM_CONFIG_CODE "${LLVM_CONFIG_CODE}
59*9880d681SAndroid Build Coastguard Workerget_filename_component(LLVM_INSTALL_PREFIX \"\${LLVM_INSTALL_PREFIX}\" PATH)")
60*9880d681SAndroid Build Coastguard Workerendforeach(p)
61*9880d681SAndroid Build Coastguard Workerset(LLVM_CONFIG_INCLUDE_DIRS "\${LLVM_INSTALL_PREFIX}/include")
62*9880d681SAndroid Build Coastguard Workerset(LLVM_CONFIG_LIBRARY_DIRS "\${LLVM_INSTALL_PREFIX}/lib\${LLVM_LIBDIR_SUFFIX}")
63*9880d681SAndroid Build Coastguard Workerset(LLVM_CONFIG_CMAKE_DIR "\${LLVM_INSTALL_PREFIX}/${LLVM_INSTALL_PACKAGE_DIR}")
64*9880d681SAndroid Build Coastguard Workerset(LLVM_CONFIG_BINARY_DIR "\${LLVM_INSTALL_PREFIX}")
65*9880d681SAndroid Build Coastguard Workerset(LLVM_CONFIG_TOOLS_BINARY_DIR "\${LLVM_INSTALL_PREFIX}/bin")
66*9880d681SAndroid Build Coastguard Workerset(LLVM_CONFIG_EXPORTS_FILE "\${LLVM_CMAKE_DIR}/LLVMExports.cmake")
67*9880d681SAndroid Build Coastguard Workerconfigure_file(
68*9880d681SAndroid Build Coastguard Worker  LLVMConfig.cmake.in
69*9880d681SAndroid Build Coastguard Worker  ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/LLVMConfig.cmake
70*9880d681SAndroid Build Coastguard Worker  @ONLY)
71*9880d681SAndroid Build Coastguard Worker
72*9880d681SAndroid Build Coastguard Worker# Generate LLVMConfigVersion.cmake for build and install tree.
73*9880d681SAndroid Build Coastguard Workerconfigure_file(
74*9880d681SAndroid Build Coastguard Worker  LLVMConfigVersion.cmake.in
75*9880d681SAndroid Build Coastguard Worker  ${llvm_cmake_builddir}/LLVMConfigVersion.cmake
76*9880d681SAndroid Build Coastguard Worker  @ONLY)
77*9880d681SAndroid Build Coastguard Worker
78*9880d681SAndroid Build Coastguard Workerif (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
79*9880d681SAndroid Build Coastguard Worker  install(EXPORT LLVMExports DESTINATION ${LLVM_INSTALL_PACKAGE_DIR})
80*9880d681SAndroid Build Coastguard Worker
81*9880d681SAndroid Build Coastguard Worker  install(FILES
82*9880d681SAndroid Build Coastguard Worker    ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/LLVMConfig.cmake
83*9880d681SAndroid Build Coastguard Worker    ${llvm_cmake_builddir}/LLVMConfigVersion.cmake
84*9880d681SAndroid Build Coastguard Worker    LLVM-Config.cmake
85*9880d681SAndroid Build Coastguard Worker    DESTINATION ${LLVM_INSTALL_PACKAGE_DIR})
86*9880d681SAndroid Build Coastguard Worker
87*9880d681SAndroid Build Coastguard Worker  install(DIRECTORY .
88*9880d681SAndroid Build Coastguard Worker    DESTINATION ${LLVM_INSTALL_PACKAGE_DIR}
89*9880d681SAndroid Build Coastguard Worker    FILES_MATCHING PATTERN *.cmake
90*9880d681SAndroid Build Coastguard Worker    PATTERN .svn EXCLUDE
91*9880d681SAndroid Build Coastguard Worker    PATTERN LLVMConfig.cmake EXCLUDE
92*9880d681SAndroid Build Coastguard Worker    PATTERN LLVMConfigVersion.cmake EXCLUDE
93*9880d681SAndroid Build Coastguard Worker    PATTERN LLVM-Config.cmake EXCLUDE
94*9880d681SAndroid Build Coastguard Worker    PATTERN GetHostTriple.cmake EXCLUDE
95*9880d681SAndroid Build Coastguard Worker    PATTERN CheckAtomic.cmake EXCLUDE)
96*9880d681SAndroid Build Coastguard Workerendif()
97