Skip to content

Commit 34dce93

Browse files
authored
Merge pull request #3316 from compnerd/multiple-platforms
stdlib: build multiple platform libraries simultaneously
2 parents a2529e2 + 7e229f7 commit 34dce93

File tree

6 files changed

+56
-65
lines changed

6 files changed

+56
-65
lines changed

cmake/modules/AddSwift.cmake

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1012,6 +1012,12 @@ endfunction()
10121012
# SWIFT_MODULE_DEPENDS_WATCHOS
10131013
# Swift modules this library depends on when built for watchOS.
10141014
#
1015+
# SWIFT_MODULE_DEPENDS_FREEBSD
1016+
# Swift modules this library depends on when built for FreeBSD.
1017+
#
1018+
# SWIFT_MODULE_DEPENDS_LINUX
1019+
# Swift modules this library depends on when built for Linux.
1020+
#
10151021
# FRAMEWORK_DEPENDS
10161022
# System frameworks this library depends on.
10171023
#
@@ -1076,7 +1082,7 @@ function(add_swift_library name)
10761082
cmake_parse_arguments(SWIFTLIB
10771083
"${SWIFTLIB_options}"
10781084
"INSTALL_IN_COMPONENT;DEPLOYMENT_VERSION_IOS"
1079-
"DEPENDS;LINK_LIBRARIES;SWIFT_MODULE_DEPENDS;SWIFT_MODULE_DEPENDS_OSX;SWIFT_MODULE_DEPENDS_IOS;SWIFT_MODULE_DEPENDS_TVOS;SWIFT_MODULE_DEPENDS_WATCHOS;FRAMEWORK_DEPENDS;FRAMEWORK_DEPENDS_WEAK;FRAMEWORK_DEPENDS_OSX;FRAMEWORK_DEPENDS_IOS_TVOS;COMPONENT_DEPENDS;FILE_DEPENDS;TARGET_SDKS;C_COMPILE_FLAGS;SWIFT_COMPILE_FLAGS;SWIFT_COMPILE_FLAGS_OSX;SWIFT_COMPILE_FLAGS_IOS;SWIFT_COMPILE_FLAGS_TVOS;SWIFT_COMPILE_FLAGS_WATCHOS;LINK_FLAGS;PRIVATE_LINK_LIBRARIES;INTERFACE_LINK_LIBRARIES;INCORPORATE_OBJECT_LIBRARIES"
1085+
"DEPENDS;LINK_LIBRARIES;SWIFT_MODULE_DEPENDS;SWIFT_MODULE_DEPENDS_OSX;SWIFT_MODULE_DEPENDS_IOS;SWIFT_MODULE_DEPENDS_TVOS;SWIFT_MODULE_DEPENDS_WATCHOS;SWIFT_MODULE_DEPENDS_FREEBSD;SWIFT_MODULE_DEPENDS_LINUX;FRAMEWORK_DEPENDS;FRAMEWORK_DEPENDS_WEAK;FRAMEWORK_DEPENDS_OSX;FRAMEWORK_DEPENDS_IOS_TVOS;COMPONENT_DEPENDS;FILE_DEPENDS;TARGET_SDKS;C_COMPILE_FLAGS;SWIFT_COMPILE_FLAGS;SWIFT_COMPILE_FLAGS_OSX;SWIFT_COMPILE_FLAGS_IOS;SWIFT_COMPILE_FLAGS_TVOS;SWIFT_COMPILE_FLAGS_WATCHOS;LINK_FLAGS;PRIVATE_LINK_LIBRARIES;INTERFACE_LINK_LIBRARIES;INCORPORATE_OBJECT_LIBRARIES"
10801086
${ARGN})
10811087
set(SWIFTLIB_SOURCES ${SWIFTLIB_UNPARSED_ARGUMENTS})
10821088

@@ -1195,6 +1201,12 @@ function(add_swift_library name)
11951201
elseif("${sdk}" STREQUAL "WATCHOS" OR "${sdk}" STREQUAL "WATCHOS_SIMULATOR")
11961202
list(APPEND swiftlib_module_depends_flattened
11971203
${SWIFTLIB_SWIFT_MODULE_DEPENDS_WATCHOS})
1204+
elseif("${sdk}" STREQUAL "FREEBSD")
1205+
list(APPEND swiftlib_module_depends_flattened
1206+
${SWIFTLIB_SWIFT_MODULE_DEPENDS_FREEBSD})
1207+
elseif("${sdk}" STREQUAL "LINUX")
1208+
list(APPEND swiftlib_module_depends_flattened
1209+
${SWIFTLIB_SWIFT_MODULE_DEPENDS_LINUX})
11981210
endif()
11991211

12001212
set(swiftlib_module_dependency_targets)

stdlib/private/StdlibUnittest/CMakeLists.txt

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,19 @@
1-
set(swift_stdlib_unittest_platform_sources)
2-
set(swift_stdlib_unittest_module_depends
3-
SwiftPrivate SwiftPrivatePthreadExtras SwiftPrivateLibcExtras)
4-
set(swift_stdlib_unittest_framework_depends)
1+
52
set(swift_stdlib_unittest_compile_flags
63
"-Xfrontend" "-disable-objc-attr-requires-foundation-module")
7-
84
if (SWIFT_RUNTIME_ENABLE_LEAK_CHECKER)
95
list(APPEND swift_stdlib_unittest_compile_flags "-DSWIFT_RUNTIME_ENABLE_LEAK_CHECKER")
106
endif()
11-
12-
if(SWIFT_HOST_VARIANT MATCHES "${SWIFT_DARWIN_VARIANTS}")
13-
list(APPEND swift_stdlib_unittest_platform_sources
14-
GetOSVersion.mm)
15-
list(APPEND swift_stdlib_unittest_module_depends
16-
Darwin
17-
Foundation)
18-
list(APPEND swift_stdlib_unittest_framework_depends
19-
Foundation)
20-
endif()
21-
if(SWIFT_HOST_VARIANT STREQUAL "linux" OR SWIFT_HOST_VARIANT STREQUAL "freebsd")
22-
list(APPEND swift_stdlib_unittest_module_depends
23-
Glibc)
24-
endif()
257
if(SWIFT_SERIALIZE_STDLIB_UNITTEST)
268
list(APPEND swift_stdlib_unittest_compile_flags "-Xfrontend" "-sil-serialize-all")
279
endif()
2810

11+
# TODO: extend this through a similar mechanism to SWIFT_MODULE_DEPENDS
12+
set(swift_stdlib_unittest_framework_depends)
13+
if(SWIFT_HOST_VARIANT MATCHES "${SWIFT_DARWIN_VARIANTS}")
14+
list(APPEND swift_stdlib_unittest_framework_depends Foundation)
15+
endif()
16+
2917
add_swift_library(swiftStdlibUnittest ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_STDLIB
3018
# This file should be listed the first. Module name is inferred from the
3119
# filename.
@@ -42,9 +30,15 @@ add_swift_library(swiftStdlibUnittest ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_STD
4230
StringConvertible.swift.gyb
4331
TestHelpers.swift
4432
TypeIndexed.swift
45-
${swift_stdlib_unittest_platform_sources}
33+
GetOSVersion.mm
4634

47-
SWIFT_MODULE_DEPENDS ${swift_stdlib_unittest_module_depends}
35+
SWIFT_MODULE_DEPENDS SwiftPrivate SwiftPrivatePthreadExtras SwiftPrivateLibcExtras
36+
SWIFT_MODULE_DEPENDS_IOS Darwin Foundation
37+
SWIFT_MODULE_DEPENDS_OSX Darwin Foundation
38+
SWIFT_MODULE_DEPENDS_TVOS Darwin Foundation
39+
SWIFT_MODULE_DEPENDS_WATCHOS Darwin Foundation
40+
SWIFT_MODULE_DEPENDS_LINUX Glibc
41+
SWIFT_MODULE_DEPENDS_FREEBSD Glibc
4842
SWIFT_COMPILE_FLAGS ${swift_stdlib_unittest_compile_flags}
4943
FRAMEWORK_DEPENDS ${swift_stdlib_unittest_framework_depends}
5044
INSTALL_IN_COMPONENT stdlib-experimental)

stdlib/private/StdlibUnittest/GetOSVersion.mm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13+
#if defined(__APPLE__)
1314
#include <Foundation/Foundation.h>
1415

1516
#include "swift/Runtime/Config.h"
@@ -33,4 +34,5 @@
3334
[SystemVersion release];
3435
return Result;
3536
}
37+
#endif
3638

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,16 @@
1-
set(swift_private_darwin_extras_module_depends
2-
SwiftPrivate)
3-
4-
if(SWIFT_HOST_VARIANT MATCHES "${SWIFT_DARWIN_VARIANTS}")
5-
list(APPEND swift_private_darwin_extras_module_depends
6-
Darwin)
7-
elseif(SWIFT_HOST_VARIANT STREQUAL "linux" OR SWIFT_HOST_VARIANT STREQUAL "freebsd")
8-
list(APPEND swift_private_darwin_extras_module_depends
9-
Glibc)
10-
endif()
11-
121
add_swift_library(swiftSwiftPrivateLibcExtras ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_STDLIB
132
# This file should be listed the first. Module name is inferred from the
143
# filename.
154
SwiftPrivateLibcExtras.swift
165
Subprocess.c
176
Subprocess.swift
187

19-
SWIFT_MODULE_DEPENDS ${swift_private_darwin_extras_module_depends}
8+
SWIFT_MODULE_DEPENDS SwiftPrivate
209
SWIFT_COMPILE_FLAGS ${STDLIB_SIL_SERIALIZE_ALL}
10+
SWIFT_MODULE_DEPENDS_OSX Darwin
11+
SWIFT_MODULE_DEPENDS_IOS Darwin
12+
SWIFT_MODULE_DEPENDS_TVOS Darwin
13+
SWIFT_MODULE_DEPENDS_WATCHOS Darwin
14+
SWIFT_MODULE_DEPENDS_LINUX Glibc
15+
SWIFT_MODULE_DEPENDS_FREEBSD Glibc
2116
INSTALL_IN_COMPONENT stdlib-experimental)
Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,15 @@
1-
set(swift_private_pthread_extras_module_depends)
2-
3-
if(SWIFT_HOST_VARIANT MATCHES "${SWIFT_DARWIN_VARIANTS}")
4-
list(APPEND swift_private_pthread_extras_module_depends
5-
Darwin)
6-
elseif(SWIFT_HOST_VARIANT STREQUAL "linux" OR SWIFT_HOST_VARIANT STREQUAL "freebsd")
7-
list(APPEND swift_private_pthread_extras_module_depends
8-
Glibc)
9-
endif()
10-
111
add_swift_library(swiftSwiftPrivatePthreadExtras ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_STDLIB
122
# This file should be listed the first. Module name is inferred from the
133
# filename.
144
SwiftPrivatePthreadExtras.swift
155
PthreadBarriers.swift
166

17-
SWIFT_MODULE_DEPENDS ${swift_private_pthread_extras_module_depends}
7+
SWIFT_MODULE_DEPENDS_IOS Darwin
8+
SWIFT_MODULE_DEPENDS_OSX Darwin
9+
SWIFT_MODULE_DEPENDS_TVOS Darwin
10+
SWIFT_MODULE_DEPENDS_WATCHOS Darwin
11+
SWIFT_MODULE_DEPENDS_LINUX Glibc
12+
SWIFT_MODULE_DEPENDS_FREEBSD Glibc
1813
SWIFT_COMPILE_FLAGS ${STDLIB_SIL_SERIALIZE_ALL}
1914
INSTALL_IN_COMPONENT stdlib-experimental)
2015

stdlib/public/Platform/CMakeLists.txt

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,21 @@ set(swift_platform_sources
66
TiocConstants.swift
77
tgmath.swift.gyb)
88

9-
if(SWIFT_HOST_VARIANT MATCHES "${SWIFT_DARWIN_VARIANTS}")
10-
set(swift_platform_name swiftDarwin)
11-
set(swift_platform_sources
12-
Darwin.swift
13-
${swift_platform_sources}
14-
POSIXError.swift
15-
MachError.swift)
16-
set(swift_platform_flags
17-
SWIFT_COMPILE_FLAGS -Xfrontend -disable-objc-attr-requires-foundation-module
18-
API_NOTES_NON_OVERLAY)
19-
else()
20-
set(swift_platform_name swiftGlibc)
21-
set(swift_platform_sources
22-
Glibc.swift
23-
${swift_platform_sources})
24-
set(swift_platform_flags
25-
DEPENDS glibc_modulemap)
26-
endif()
9+
add_swift_library(swiftDarwin ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY
10+
Darwin.swift
11+
${swift_platform_sources}
12+
POSIXError.swift
13+
MachError.swift
14+
15+
SWIFT_COMPILE_FLAGS -Xfrontend -disable-objc-attr-requires-foundation-module
16+
TARGET_SDKS IOS IOS_SIMULATOR OSX TVOS TVOS_SIMULATOR WATCHOS WATCHOS_SIMULATOR
17+
API_NOTES_NON_OVERLAY)
2718

28-
add_swift_library(${swift_platform_name} ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY
19+
add_swift_library(swiftGlibc ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY
20+
Glibc.swift
2921
${swift_platform_sources}
30-
${swift_platform_flags})
22+
TARGET_SDKS ANDROID CYGWIN FREEBSD LINUX
23+
DEPENDS glibc_modulemap)
3124

3225
set(glibc_modulemap_target_list)
3326
foreach(sdk ${SWIFT_SDKS})

0 commit comments

Comments
 (0)