1
1
cmake_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 ()
2
11
3
12
if ($ENV{BUILD_NUMBER} )
4
13
math (EXPR BUILD_NUMBER "$ENV{BUILD_NUMBER} % 65535" )
@@ -8,48 +17,63 @@ project(SwiftDifferentiation
8
17
LANGUAGES Swift C
9
18
VERSION 6.1.0${BUILD_NUMBER} )
10
19
20
+ if (NOT PROJECT_IS_TOP_LEVEL )
21
+ message (SEND_ERROR "Swift Differentiation must build as a standalone project" )
22
+ endif ()
23
+
11
24
set (CMAKE_POSITION_INDEPENDENT_CODE YES )
12
25
set (CMAKE_Swift_LANGUAGE_VERSION 5 )
13
26
14
27
list (APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR} /../cmake/modules" )
15
28
16
- if (NOT PROJECT_IS_TOP_LEVEL )
17
- message (SEND_ERROR "Swift Differentiation must build as a standalone project" )
18
- endif ()
19
-
20
29
set (${PROJECT_NAME} _SWIFTC_SOURCE_DIR
21
30
"${PROJECT_SOURCE_DIR} /../../../"
22
31
CACHE FILEPATH "Path to the root source directory of the Swift compiler" )
23
32
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 )
25
42
26
- include (gyb )
27
43
include (AvailabilityMacros )
28
- include (CatalystSupport )
29
44
include (EmitSwiftInterface )
30
- include (ResourceEmbedding )
31
45
include (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} )
32
58
33
59
option (${PROJECT_NAME} _ENABLE_VECTOR_TYPES "Enable vector support"
34
60
${SwiftCore_ENABLE_VECTOR_TYPES} )
35
61
36
- option (${PROJECT_NAME} _ENABLE_LIBRARY_EVOLUTION "Enable library evolution"
37
- ${SwiftCore_ENABLE_LIBRARY_EVOLUTION} )
38
62
39
63
add_compile_options (
40
64
$< $< COMPILE_LANGUAGE:Swift> :-explicit-module-build>
41
65
$< $< COMPILE_LANGUAGE:Swift> :-nostdlibimport>
42
66
$< $< COMPILE_LANGUAGE:Swift> :-parse-stdlib>
43
67
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-library-level api>"
44
- $< $< COMPILE_LANGUAGE:Swift> :-enforce-exclusivity=unchecked>
45
- "$<$<COMPILE_LANGUAGE:Swift>:SHELL:-target-min-inlining-version min>"
46
68
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature NoncopyableGenerics2>"
47
69
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature SuppressedAssociatedTypes>"
48
70
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature SE427NoInferenceOnExtension>"
49
71
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature NonescapableTypes>"
50
72
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature LifetimeDependence>"
51
73
"$<$<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> )
53
77
54
78
if (SwiftDifferentiation_ENABLE_VECTOR_TYPES )
55
79
gyb_expand (SIMDDifferentiation.swift.gyb SIMDDifferentiation.swift )
@@ -65,22 +89,22 @@ add_library(swift_Differentiation
65
89
DifferentialOperators.swift
66
90
DifferentiationUtilities.swift
67
91
OptionalDifferentiation.swift
68
- $< $< BOOL:${SwiftDifferentiation_ENABLE_VECTOR_TYPES } > :SIMDDifferentiation.swift>
92
+ $< $< BOOL:${${PROJECT_NAME} _ENABLE_VECTOR_TYPES }> :SIMDDifferentiation.swift>
69
93
TgmathDerivatives.swift
70
94
FloatingPointDifferentiation.swift
71
95
linker-support/magic-symbols-for-install-name.c )
72
96
73
- set_target_properties (swift_Differentiation PROPERTIES
74
- Swift_MODULE_NAME _Differentiation )
75
-
76
97
if (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" )
78
100
endif ()
79
101
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 )
81
107
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 "" )
84
108
85
109
install (TARGETS swift_Differentiation
86
110
EXPORT SwiftSupplementalTargets
@@ -94,3 +118,5 @@ install_swift_interface(swift_Differentiation)
94
118
# Configure plist creation for Darwin platforms.
95
119
generate_plist ("${CMAKE_PROJECT_NAME} " "${CMAKE_PROJECT_VERSION} " swift_Differentiation )
96
120
embed_manifest (swift_Differentiation )
121
+
122
+ include ("${${PROJECT_NAME} _VENDOR_MODULE_DIR}/swift_Differentiation.cmake" OPTIONAL )
0 commit comments