11cmake_minimum_required (VERSION 3.29)
2+ # TODO before requiring CMake 4.1 or later
3+ # and/or enforcing CMP0195, please check/update
4+ # the implementation of `emit_swift_interface`
5+ # in `EmitSwiftInterface.cmake`
6+ # to ensure it keeps laying down nested swiftmodule folders
7+
8+ if (POLICY CMP0157 AND CMAKE_Swift_COMPILER_USE_OLD_DRIVER)
9+ cmake_policy (SET CMP0157 OLD)
10+ endif ()
211
312if ($ENV{BUILD_NUMBER} )
413 math (EXPR BUILD_NUMBER "$ENV{BUILD_NUMBER} % 65535" )
@@ -8,48 +17,63 @@ project(SwiftDifferentiation
817 LANGUAGES Swift C
918 VERSION 6.1.0${BUILD_NUMBER} )
1019
20+ if (NOT PROJECT_IS_TOP_LEVEL)
21+ message (SEND_ERROR "Swift Differentiation must build as a standalone project" )
22+ endif ()
23+
1124set (CMAKE_POSITION_INDEPENDENT_CODE YES )
1225set (CMAKE_Swift_LANGUAGE_VERSION 5)
1326
1427list (APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR} /../cmake/modules" )
1528
16- if (NOT PROJECT_IS_TOP_LEVEL)
17- message (SEND_ERROR "Swift Differentiation must build as a standalone project" )
18- endif ()
19-
2029set (${PROJECT_NAME} _SWIFTC_SOURCE_DIR
2130 "${PROJECT_SOURCE_DIR} /../../../"
2231 CACHE FILEPATH "Path to the root source directory of the Swift compiler" )
2332
24- find_package (SwiftCore)
33+ # Hook point for vendor-specific extensions to the build system
34+ # Allowed extension points:
35+ # - DefaultSettings.cmake
36+ # - Settings.cmake
37+ set (${PROJECT_NAME} _VENDOR_MODULE_DIR "${CMAKE_SOURCE_DIR} /../cmake/modules/vendor"
38+ CACHE FILEPATH "Location for private build system extension" )
39+
40+ find_package (SwiftCore REQUIRED)
41+ include (GNUInstallDirs)
2542
26- include (gyb)
2743include (AvailabilityMacros)
28- include (CatalystSupport)
2944include (EmitSwiftInterface)
30- include (ResourceEmbedding)
3145include (InstallSwiftInterface)
46+ include (gyb)
47+ include (ResourceEmbedding)
48+ include (CatalystSupport)
49+
50+ option (${PROJECT_NAME} _INSTALL_NESTED_SUBDIR "Install libraries under a platform and architecture subdirectory" ON )
51+ set (${PROJECT_NAME} _INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR} /swift$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS} >>:_static>$<$<BOOL:${${PROJECT_NAME} _INSTALL_NESTED_SUBDIR}>:/${${PROJECT_NAME} _PLATFORM_SUBDIR}/${${PROJECT_NAME} _ARCH_SUBDIR}>" CACHE STRING "" )
52+ set (${PROJECT_NAME} _INSTALL_SWIFTMODULEDIR "${CMAKE_INSTALL_LIBDIR} /swift$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS} >>:_static>$<$<BOOL:${${PROJECT_NAME} _INSTALL_NESTED_SUBDIR}>:/${${PROJECT_NAME} _PLATFORM_SUBDIR}>" CACHE STRING "" )
53+
54+ include ("${${PROJECT_NAME} _VENDOR_MODULE_DIR}/Settings.cmake" OPTIONAL )
55+
56+ option (${PROJECT_NAME} _ENABLE_LIBRARY_EVOLUTION "Generate ABI resilient runtime libraries"
57+ ${SwiftCore_ENABLE_LIBRARY_EVOLUTION} )
3258
3359option (${PROJECT_NAME} _ENABLE_VECTOR_TYPES "Enable vector support"
3460 ${SwiftCore_ENABLE_VECTOR_TYPES} )
3561
36- option (${PROJECT_NAME} _ENABLE_LIBRARY_EVOLUTION "Enable library evolution"
37- ${SwiftCore_ENABLE_LIBRARY_EVOLUTION} )
3862
3963add_compile_options (
4064 $<$<COMPILE_LANGUAGE:Swift>:-explicit-module-build >
4165 $<$<COMPILE_LANGUAGE:Swift>:-nostdlibimport>
4266 $<$<COMPILE_LANGUAGE:Swift>:-parse-stdlib>
4367 "$<$<COMPILE_LANGUAGE:Swift>:SHELL:-library-level api>"
44- $<$<COMPILE_LANGUAGE:Swift>:-enforce-exclusivity=unchecked>
45- "$<$<COMPILE_LANGUAGE:Swift>:SHELL:-target-min-inlining-version min>"
4668 "$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature NoncopyableGenerics2>"
4769 "$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature SuppressedAssociatedTypes>"
4870 "$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature SE427NoInferenceOnExtension>"
4971 "$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature NonescapableTypes>"
5072 "$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature LifetimeDependence>"
5173 "$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature MemberImportVisibility>"
52- $<$<AND :$<BOOL :${SwiftDifferentiation_ENABLE_LIBRARY_EVOLUTION} >,$<COMPILE_LANGUAGE:Swift>>:-enable-library-evolution>)
74+ "$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xfrontend -enforce-exclusivity=unchecked>"
75+ "$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xfrontend -target-min-inlining-version -Xfrontend min>"
76+ $<$<AND :$<BOOL :${${PROJECT_NAME} _ENABLE_LIBRARY_EVOLUTION}>,$<COMPILE_LANGUAGE:Swift>>:-enable-library-evolution>)
5377
5478if (SwiftDifferentiation_ENABLE_VECTOR_TYPES)
5579 gyb_expand(SIMDDifferentiation.swift.gyb SIMDDifferentiation.swift)
@@ -65,22 +89,22 @@ add_library(swift_Differentiation
6589 DifferentialOperators.swift
6690 DifferentiationUtilities.swift
6791 OptionalDifferentiation.swift
68- $<$<BOOL :${SwiftDifferentiation_ENABLE_VECTOR_TYPES } >:SIMDDifferentiation.swift>
92+ $<$<BOOL :${${PROJECT_NAME} _ENABLE_VECTOR_TYPES }>:SIMDDifferentiation.swift>
6993 TgmathDerivatives.swift
7094 FloatingPointDifferentiation.swift
7195 linker-support/magic-symbols-for-install -name .c)
7296
73- set_target_properties (swift_Differentiation PROPERTIES
74- Swift_MODULE_NAME _Differentiation)
75-
7697if (APPLE AND BUILD_SHARED_LIBS )
77- target_link_options (swift_Differentiation PRIVATE "SHELL:-Xlinker -headerpad_max_install_names" )
98+ target_link_options (swift_Differentiation PRIVATE
99+ "SHELL:-Xlinker -headerpad_max_install_names" )
78100endif ()
79101
80- target_link_libraries (swift_Differentiation PRIVATE swiftCore)
102+ set_target_properties (swift_Differentiation PROPERTIES
103+ Swift_MODULE_NAME _Differentiation)
104+
105+ target_link_libraries (swift_Differentiation PRIVATE
106+ swiftCore)
81107
82- set (${PROJECT_NAME} _INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR} /swift$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS} >>:_static>$<$<BOOL:${Supplemental_INSTALL_NESTED_SUBDIR} >:/${Supplemental_PLATFORM_SUBDIR} /${Supplemental_ARCH_SUBDIR} >" CACHE STRING "" )
83- set (${PROJECT_NAME} _INSTALL_SWIFTMODULEDIR "${CMAKE_INSTALL_LIBDIR} /swift$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS} >>:_static>$<$<BOOL:${Supplemental_INSTALL_NESTED_SUBDIR} >:/${Supplemental_PLATFORM_SUBDIR} >" CACHE STRING "" )
84108
85109install (TARGETS swift_Differentiation
86110 EXPORT SwiftSupplementalTargets
@@ -94,3 +118,5 @@ install_swift_interface(swift_Differentiation)
94118# Configure plist creation for Darwin platforms.
95119generate_plist("${CMAKE_PROJECT_NAME} " "${CMAKE_PROJECT_VERSION} " swift_Differentiation)
96120embed_manifest(swift_Differentiation)
121+
122+ include ("${${PROJECT_NAME} _VENDOR_MODULE_DIR}/swift_Differentiation.cmake" OPTIONAL )
0 commit comments