1
1
set (SWIFT_INSTALL_PACKAGE_DIR lib${LLVM_LIBDIR_SUFFIX}/cmake/swift )
2
2
set (swift_cmake_builddir "${SWIFT_BINARY_DIR} /${SWIFT_INSTALL_PACKAGE_DIR} " )
3
3
4
- # Generate build-tree exports list only
5
- set (SWIFT_EXPORTS_FILE ${swift_cmake_builddir} /SwiftExports.cmake )
4
+ # Exports for those who want to build against an installed Swift
5
+ set (SWIFT_EXPORTS_FILE " ${swift_cmake_builddir} /SwiftExports.cmake" )
6
6
get_property (SWIFT_EXPORTS GLOBAL PROPERTY SWIFT_EXPORTS )
7
- get_property (SWIFT_BUILDTREE_EXPORTS GLOBAL PROPERTY SWIFT_BUILDTREE_EXPORTS )
8
-
9
- set (SWIFT_CONFIG_EXPORTS ${SWIFT_EXPORTS} ${SWIFT_BUILDTREE_EXPORTS} )
10
- export (TARGETS ${SWIFT_CONFIG_EXPORTS} FILE ${SWIFT_EXPORTS_FILE} )
7
+ export (TARGETS ${SWIFT_EXPORTS} FILE ${SWIFT_EXPORTS_FILE} )
11
8
9
+ # Export targets that are only available when building against a Swift build
10
+ # tree
11
+ set (SWIFT_BUILDTREE_EXPORTS_FILE "${swift_cmake_builddir} /SwiftBuildTreeExports.cmake" )
12
+ get_property (SWIFT_BUILDTREE_EXPORTS GLOBAL PROPERTY SWIFT_BUILDTREE_EXPORTS )
13
+ export (TARGETS ${SWIFT_BUILDTREE_EXPORTS} FILE ${SWIFT_BUILDTREE_EXPORTS_FILE} )
12
14
13
- set (SWIFT_INCLUDE_DIRS ${SWIFT_INCLUDE_DIR} ${SWIFT_MAIN_INCLUDE_DIR} )
14
- set (SWIFT_LIBRARY_DIRS ${SWIFT_LIBRARY_OUTPUT_INTDIR} )
15
+ # Generate SwiftConfig.cmake for the build tree
16
+ set (SWIFT_CONFIG_EXPORTS "${SWIFT_EXPORTS} ;${SWIFT_BUILDTREE_EXPORTS} " )
17
+ set (SWIFT_CONFIG_EXPORTS_FILE "${SWIFT_EXPORTS_FILE} " )
18
+ set (SWIFT_CONFIG_BINARY_DIR "${SWIFT_BINARY_DIR} " )
19
+ set (SWIFT_CONFIG_INCLUDE_DIRS
20
+ "${SWIFT_INCLUDE_DIR} "
21
+ "${SWIFT_MAIN_INCLUDE_DIR} "
22
+ )
23
+ set (SWIFT_CONFIG_INCLUDE_DIR "${SWIFT_INCLUDE_DIR} " )
24
+ set (SWIFT_CONFIG_LIBRARY_DIRS "${SWIFT_LIBRARY_OUTPUT_INTDIR} " )
25
+ set (SWIFT_CONFIG_CMAKE_DIR "${CMAKE_CURRENT_SOURCE_DIR} " )
26
+ set (swift_config_include_buildtree_exports
27
+ "include(\" ${SWIFT_BUILDTREE_EXPORTS_FILE} \" )" )
15
28
16
29
configure_file (
17
30
SwiftConfig.cmake.in
18
31
${swift_cmake_builddir} /SwiftConfig.cmake
19
- @ONLY )
32
+ @ONLY )
33
+ set (swift_config_include_buildtree_exports )
34
+
35
+ # Generate SwiftConfig.cmake for the install tree
36
+ set (SWIFT_CONFIG_CODE
37
+ "# Compute the installation prefix from this SwiftConfig.cmake location.
38
+ get_filename_component(SWIFT_INSTALL_PREFIX \"\$ {CMAKE_CURRENT_LIST_FILE}\" PATH)" )
39
+ # Construct the proper number of get_filename_component(... PATH)
40
+ # calls to compute the installation prefix.
41
+ file (TO_CMAKE_PATH "${SWIFT_INSTALL_PACKAGE_DIR} " SWIFT_INSTALL_PACKAGE_DIR )
42
+ string (REGEX REPLACE "/" ";" _count "${SWIFT_INSTALL_PACKAGE_DIR} " )
43
+ foreach (p ${_count} )
44
+ set (SWIFT_CONFIG_CODE "${SWIFT_CONFIG_CODE}
45
+ get_filename_component(SWIFT_INSTALL_PREFIX \"\$ {SWIFT_INSTALL_PREFIX}\" PATH)" )
46
+ endforeach (p )
47
+ set (SWIFT_CONFIG_BINARY_DIR "\$ {SWIFT_INSTALL_PREFIX}" )
48
+ set (SWIFT_CONFIG_CMAKE_DIR "\$ {SWIFT_INSTALL_PREFIX}/${SWIFT_INSTALL_PACKAGE_DIR} " )
49
+ set (SWIFT_CONFIG_EXPORTS "${SWIFT_EXPORTS} " )
50
+ set (SWIFT_CONFIG_EXPORTS_FILE "\$ {SWIFT_CMAKE_DIR}/SwiftExports.cmake" )
51
+ set (SWIFT_CONFIG_INCLUDE_DIRS "\$ {SWIFT_INSTALL_PREFIX}/include" )
52
+ set (SWIFT_CONFIG_LIBRARY_DIRS "\$ {SWIFT_INSTALL_PREFIX}/lib\$ {LLVM_LIBDIR_SUFFIX}" )
53
+ configure_file (
54
+ SwiftConfig.cmake.in
55
+ ${CMAKE_CURRENT_BINARY_DIR} /CMakeFiles/SwiftConfig.cmake
56
+ @ONLY )
57
+
58
+ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY )
59
+ get_property (swift_has_exports GLOBAL PROPERTY SWIFT_HAS_EXPORTS )
60
+ if (swift_has_exports )
61
+ install (EXPORT SwiftExports DESTINATION ${SWIFT_INSTALL_PACKAGE_DIR} )
62
+ endif ()
63
+ install (FILES
64
+ ${CMAKE_CURRENT_BINARY_DIR} /CMakeFiles/SwiftConfig.cmake
65
+ DESTINATION ${SWIFT_INSTALL_PACKAGE_DIR} )
66
+ endif ()
0 commit comments