1212##
1313##===----------------------------------------------------------------------===##
1414
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+
1531# SwiftSyntax Dependency
16- include (FetchContent)
17- find_package (SwiftSyntax)
32+ find_package (SwiftSyntax QUIET )
1833if (NOT SwiftSyntax_FOUND)
34+ include (FetchContent)
35+
1936 # If building at desk, check out and link against the SwiftSyntax repo's targets
2037 FetchContent_Declare(SwiftSyntax
2138 GIT_REPOSITORY https://github.com/swiftlang/swift-syntax.git
2239 GIT_TAG 4c6cc0a3b9e8f14b3ae2307c5ccae4de6167ac2c) # 600.0.0-prerelease-2024-06-12
2340 FetchContent_MakeAvailable(SwiftSyntax)
41+ else ()
42+ message (STATUS "Using swift-syntax from ${SwiftSyntax_DIR} " )
2443endif ()
2544
2645add_library (FoundationMacros SHARED
2746 FoundationMacros.swift
2847 PredicateMacro.swift)
29-
48+
3049target_compile_definitions (FoundationMacros PRIVATE FOUNDATION_MACROS_LIBRARY)
3150
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>" )
3856
3957target_link_libraries (FoundationMacros PUBLIC
4058 SwiftSyntax::SwiftSyntax
@@ -43,18 +61,19 @@ target_link_libraries(FoundationMacros PUBLIC
4361 SwiftSyntax::SwiftSyntaxBuilder
4462)
4563
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}
4764set_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}
4874 INSTALL_RPATH "$ORIGIN/../../../swift/${SWIFT_SYSTEM_NAME} :$ORIGIN/.."
4975 INSTALL_REMOVE_ENVIRONMENT_RPATH ON )
5076
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-
5777install (TARGETS FoundationMacros
58- ARCHIVE DESTINATION lib/swift/host/plugins
5978 LIBRARY DESTINATION lib/swift/host/plugins
6079 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} )
0 commit comments