12
12
##
13
13
##===----------------------------------------------------------------------===##
14
14
15
+ cmake_minimum_required (VERSION 3.22)
16
+
17
+ if (POLICY CMP0156)
18
+ # Deduplicate linked libraries where appropriate
19
+ cmake_policy (SET CMP0156 NEW)
20
+ endif ()
21
+ if (POLICY CMP0157)
22
+ # New Swift build model: improved incremental build performance and LSP support
23
+ cmake_policy (SET CMP0157 NEW)
24
+ endif ()
25
+
26
+ project (FoundationMacros
27
+ LANGUAGES Swift)
28
+
29
+ include (GNUInstallDirs)
30
+
15
31
# SwiftSyntax Dependency
16
- include (FetchContent)
17
- find_package (SwiftSyntax)
32
+ find_package (SwiftSyntax QUIET )
18
33
if (NOT SwiftSyntax_FOUND)
34
+ include (FetchContent)
35
+
19
36
# If building at desk, check out and link against the SwiftSyntax repo's targets
20
37
FetchContent_Declare(SwiftSyntax
21
38
GIT_REPOSITORY https://github.com/swiftlang/swift-syntax.git
22
39
GIT_TAG 4c6cc0a3b9e8f14b3ae2307c5ccae4de6167ac2c) # 600.0.0-prerelease-2024-06-12
23
40
FetchContent_MakeAvailable(SwiftSyntax)
41
+ else ()
42
+ message (STATUS "Using swift-syntax from ${SwiftSyntax_DIR} " )
24
43
endif ()
25
44
26
45
add_library (FoundationMacros SHARED
27
46
FoundationMacros.swift
28
47
PredicateMacro.swift)
29
-
48
+
30
49
target_compile_definitions (FoundationMacros PRIVATE FOUNDATION_MACROS_LIBRARY)
31
50
32
- set_target_properties (FoundationMacros
33
- PROPERTIES
34
- ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /lib
35
- LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /lib
36
- INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_BINARY_DIR} /lib
37
- )
51
+ target_compile_options (FoundationMacros PRIVATE -parse-as-library)
52
+ target_compile_options (FoundationMacros PRIVATE
53
+ "SHELL:$<$<COMPILE_LANGUAGE:Swift>:-Xfrontend -enable-experimental-feature -Xfrontend AccessLevelOnImport>"
54
+ "SHELL:$<$<COMPILE_LANGUAGE:Swift>:-Xfrontend -enable-experimental-feature -Xfrontend StrictConcurrency>"
55
+ "SHELL:$<$<COMPILE_LANGUAGE:Swift>:-Xfrontend -enable-upcoming-feature -Xfrontend InferSendableFromCaptures>" )
38
56
39
57
target_link_libraries (FoundationMacros PUBLIC
40
58
SwiftSyntax::SwiftSyntax
@@ -43,18 +61,19 @@ target_link_libraries(FoundationMacros PUBLIC
43
61
SwiftSyntax::SwiftSyntaxBuilder
44
62
)
45
63
46
- # The macro is installed into lib/swift/host/plugins, but needs to load libraries from lib/swift/host and lib/swift/${SWIFT_SYSTEM_NAME}
47
64
set_target_properties (FoundationMacros PROPERTIES
65
+ ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /lib
66
+ LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /lib
67
+ PDB_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /bin
68
+ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /bin
69
+
70
+ INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_BINARY_DIR} /lib
71
+
72
+ # The macro is installed into lib/swift/host/plugins, but needs to load
73
+ # libraries from lib/swift/host and lib/swift/${SWIFT_SYSTEM_NAME}
48
74
INSTALL_RPATH "$ORIGIN/../../../swift/${SWIFT_SYSTEM_NAME} :$ORIGIN/.."
49
75
INSTALL_REMOVE_ENVIRONMENT_RPATH ON )
50
76
51
- target_compile_options (FoundationMacros PRIVATE -parse-as-library)
52
- target_compile_options (FoundationMacros PRIVATE
53
- "SHELL:$<$<COMPILE_LANGUAGE:Swift>:-Xfrontend -enable-experimental-feature -Xfrontend AccessLevelOnImport>"
54
- "SHELL:$<$<COMPILE_LANGUAGE:Swift>:-Xfrontend -enable-experimental-feature -Xfrontend StrictConcurrency>"
55
- "SHELL:$<$<COMPILE_LANGUAGE:Swift>:-Xfrontend -enable-upcoming-feature -Xfrontend InferSendableFromCaptures>" )
56
-
57
77
install (TARGETS FoundationMacros
58
- ARCHIVE DESTINATION lib/swift/host/plugins
59
78
LIBRARY DESTINATION lib/swift/host/plugins
60
79
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} )
0 commit comments