Skip to content

Commit 5e308a3

Browse files
authored
Merge pull request swiftlang#24701 from Rostepher/cleanup-standalone-overlay-cmake
[Build System: CMake] Cleanup the StandaloneOveraly CMake module.
2 parents 9043ec4 + 5c06d77 commit 5e308a3

File tree

1 file changed

+85
-37
lines changed

1 file changed

+85
-37
lines changed

cmake/modules/StandaloneOverlay.cmake

Lines changed: 85 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3,46 +3,97 @@
33
# a top-level build of the CMAKE_SOURCE_DIR. Otherwise, define a guard variable
44
# and return.
55
if(DEFINED SWIFT_MASTER_LOADED
6-
OR NOT ${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_SOURCE_DIR})
6+
OR NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
77
set(SWIFT_MASTER_LOADED TRUE)
88
return()
99
endif()
1010

11-
set(CMAKE_INSTALL_PREFIX "${SWIFT_DEST_ROOT}${TOOLCHAIN_DIR}/usr")
1211

13-
set(SWIFT_STDLIB_BUILD_TYPE "Release" CACHE STRING
14-
"Build type for the Swift standard library and SDK overlays [Debug, RelWithDebInfo, Release, MinSizeRel]")
12+
# -----------------------------------------------------------------------------
13+
# Preconditions
14+
15+
include(SwiftUtils)
16+
17+
precondition(CMAKE_INSTALL_PREFIX)
18+
precondition(SWIFT_DEST_ROOT)
19+
precondition(SWIFT_HOST_VARIANT_SDK)
20+
precondition(SWIFT_SOURCE_ROOT)
21+
precondition(TOOLCHAIN_DIR)
22+
23+
24+
# -----------------------------------------------------------------------------
25+
# Cache Variables and Options
26+
27+
set(SWIFT_SOURCE_DIR "${SWIFT_SOURCE_ROOT}/swift" CACHE PATH
28+
"Path to the directory containing the Swift sources.")
29+
30+
set(SWIFT_DARWIN_XCRUN_TOOLCHAIN "XcodeDefault" CACHE STRING
31+
"The name of the toolchain to pass to 'xcrun'.")
32+
33+
set(SWIFT_DARWIN_DEPLOYMENT_VERSION_OSX "10.9" CACHE STRING
34+
"Minimum deployment target version for macOS.")
35+
set(SWIFT_DARWIN_DEPLOYMENT_VERSION_IOS "7.0" CACHE STRING
36+
"Minimum deployment target version for iOS.")
37+
set(SWIFT_DARWIN_DEPLOYMENT_VERSION_TVOS "9.0" CACHE STRING
38+
"Minimum deployment target version for tvOS.")
39+
set(SWIFT_DARWIN_DEPLOYMENT_VERSION_WATCHOS "2.0" CACHE STRING
40+
"Minimum deployment target version for watchOS.")
41+
42+
set(SWIFT_INSTALL_COMPONENTS "sdk-overlay" CACHE STRING
43+
"A semicolon-separated list of install components.")
44+
45+
set(SWIFT_SDKS "${SWIFT_HOST_VARIANT_SDK}" CACHE STRING
46+
"List of Swift SDKs to build.")
47+
48+
set(SWIFT_NATIVE_LLVM_TOOLS_PATH "${TOOLCHAIN_DIR}/usr/bin" CACHE STRING
49+
"Path to LLVM tools that are executable on the build machine.")
50+
set(SWIFT_NATIVE_CLANG_TOOLS_PATH "${TOOLCHAIN_DIR}/usr/bin" CACHE STRING
51+
"Path to Clang tools that are executable on the build machine.")
52+
set(SWIFT_NATIVE_SWIFT_TOOLS_PATH "${TOOLCHAIN_DIR}/usr/bin" CACHE STRING
53+
"Path to Swift tools that are executable on the build machine.")
54+
55+
option(SWIFT_ENABLE_PARSEABLE_MODULE_INTERFACES
56+
"Generate .swiftinterface files alongside .swiftmodule files."
57+
TRUE)
58+
59+
set(SWIFT_STDLIB_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING
60+
"Build type for the Swift standard library and SDK overlays.")
61+
1562
set_property(CACHE SWIFT_STDLIB_BUILD_TYPE PROPERTY
16-
STRINGS "Debug" "RelWithDebInfo" "Release" "MinSizeRel")
63+
STRINGS
64+
"Debug" "RelWithDebInfo" "Release" "MinSizeRel")
1765

18-
# Only happens if it's called from a top-level cmake invocation.
19-
set(BUILD_STANDALONE TRUE)
20-
set(SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES "SHARED")
21-
set(SWIFT_INSTALL_COMPONENTS "sdk-overlay" CACHE STRING "")
22-
set(SWIFT_DARWIN_DEPLOYMENT_VERSION_OSX "10.9" CACHE STRING "")
23-
set(SWIFT_DARWIN_DEPLOYMENT_VERSION_IOS "7.0" CACHE STRING "")
24-
set(SWIFT_DARWIN_DEPLOYMENT_VERSION_TVOS "9.0" CACHE STRING "")
25-
set(SWIFT_DARWIN_DEPLOYMENT_VERSION_WATCHOS "2.0" CACHE STRING "")
26-
set(SWIFT_ENABLE_PARSEABLE_MODULE_INTERFACES TRUE)
66+
# -----------------------------------------------------------------------------
67+
# Constants
2768

28-
set(SWIFT_SOURCE_DIR "${SWIFT_SOURCE_ROOT}/swift" CACHE PATH "")
29-
set(SWIFT_NATIVE_SWIFT_TOOLS_PATH "${TOOLCHAIN_DIR}/usr/bin" CACHE PATH "")
30-
set(SWIFT_SDKS ${SWIFT_HOST_VARIANT_SDK})
69+
set(CMAKE_INSTALL_PREFIX
70+
"${SWIFT_DEST_ROOT}${TOOLCHAIN_DIR}/usr")
3171

3272
list(APPEND CMAKE_MODULE_PATH
3373
"${SWIFT_SOURCE_ROOT}/llvm/cmake/modules"
34-
"${PROJECT_SOURCE_DIR}/../../../../cmake/modules")
74+
"${PROJECT_SOURCE_DIR}/../../../../cmake/modules"
75+
"${PROJECT_SOURCE_DIR}/../../../cmake/modules")
3576

36-
set(SWIFT_DARWIN_XCRUN_TOOLCHAIN "XcodeDefault" CACHE STRING
37-
"The name of the toolchain to pass to 'xcrun'")
77+
78+
set(SWIFT_APPLE_PLATFORMS
79+
OSX IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR WATCHOS WATCHOS_SIMULATOR)
80+
81+
# Flags used to indicate we are building a standalone overlay.
82+
# FIXME: We should cut this down to a single flag.
83+
set(BUILD_STANDALONE TRUE)
84+
set(SWIFT_BUILD_STANDALONE_OVERLAY TRUE)
85+
86+
set(SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES "SHARED")
87+
88+
89+
# -----------------------------------------------------------------------------
3890

3991
include(SwiftToolchainUtils)
4092
if(NOT SWIFT_LIPO)
4193
find_toolchain_tool(SWIFT_LIPO "${SWIFT_DARWIN_XCRUN_TOOLCHAIN}" lipo)
4294
endif()
4395

4496
include(AddLLVM)
45-
include(SwiftUtils)
4697
include(SwiftSharedCMakeConfig)
4798
include(AddSwift)
4899
include(SwiftHandleGybSources)
@@ -51,25 +102,22 @@ include(SwiftSource)
51102
include(SwiftComponents)
52103
include(DarwinSDKs)
53104

54-
# These variables should be passed as -D variables to cmake.
55-
# e.g. cmake -G Ninja -DSWIFT_HOST_VARIANT_SDK=OSX ..
56-
precondition(CMAKE_INSTALL_PREFIX)
57-
precondition(SWIFT_SOURCE_ROOT)
58-
precondition(SWIFT_DEST_ROOT)
59-
precondition(SWIFT_HOST_VARIANT_SDK)
60-
precondition(TOOLCHAIN_DIR)
61105

62106
# Without this line, installing components is broken. This needs refactoring.
63107
swift_configure_components()
64108

65-
# Some overlays include the runtime's headers,
66-
# and some of those headers are generated at build time.
67-
add_subdirectory("${SWIFT_SOURCE_DIR}/include" "${SWIFT_SOURCE_DIR}/include")
68-
add_subdirectory("${SWIFT_SOURCE_DIR}/apinotes" "${SWIFT_SOURCE_DIR}/apinotes")
69109

70-
precondition(unknown_sdks NEGATE MESSAGE "Unknown SDKs: ${unknown_sdks}")
71-
precondition(SWIFT_CONFIGURED_SDKS MESSAGE "No SDKs selected.")
72-
precondition(SWIFT_HOST_VARIANT_SDK MESSAGE "No SDK for host tools.")
110+
list_subtract(
111+
"${SWIFT_SDKS}"
112+
"${SWIFT_CONFIGURED_SDKS}"
113+
unknown_sdks)
114+
115+
precondition(unknown_sdks NEGATE
116+
MESSAGE
117+
"Unknown SDKs: ${unknown_sdks}")
118+
73119

74-
# ARCH is set somewhere later.
75-
#precondition(SWIFT_HOST_VARIANT_ARCH MESSAGE "No arch for host tools")
120+
# Some overlays include the runtime's headers, and some of those headers are
121+
# generated at build time.
122+
add_subdirectory("${SWIFT_SOURCE_DIR}/include" "${SWIFT_SOURCE_DIR}/include")
123+
add_subdirectory("${SWIFT_SOURCE_DIR}/apinotes" "${SWIFT_SOURCE_DIR}/apinotes")

0 commit comments

Comments
 (0)