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