Skip to content

Commit 6416cd2

Browse files
authored
Merge pull request #83298 from compnerd/differentiation-repair
Differentiation repair
2 parents 2abdcc9 + d1c75f2 commit 6416cd2

File tree

1 file changed

+47
-21
lines changed

1 file changed

+47
-21
lines changed
Lines changed: 47 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
11
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()
211

312
if($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+
1124
set(CMAKE_POSITION_INDEPENDENT_CODE YES)
1225
set(CMAKE_Swift_LANGUAGE_VERSION 5)
1326

1427
list(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-
2029
set(${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)
2743
include(AvailabilityMacros)
28-
include(CatalystSupport)
2944
include(EmitSwiftInterface)
30-
include(ResourceEmbedding)
3145
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})
3258

3359
option(${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

3963
add_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

5478
if(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-
7697
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")
78100
endif()
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

85109
install(TARGETS swift_Differentiation
86110
EXPORT SwiftSupplementalTargets
@@ -94,3 +118,5 @@ install_swift_interface(swift_Differentiation)
94118
# Configure plist creation for Darwin platforms.
95119
generate_plist("${CMAKE_PROJECT_NAME}" "${CMAKE_PROJECT_VERSION}" swift_Differentiation)
96120
embed_manifest(swift_Differentiation)
121+
122+
include("${${PROJECT_NAME}_VENDOR_MODULE_DIR}/swift_Differentiation.cmake" OPTIONAL)

0 commit comments

Comments
 (0)