Skip to content

Commit 29eadee

Browse files
committed
Add MinimalStdlib build-script product, build is in main CI jobs and PR testing jobs
1 parent e8be44d commit 29eadee

File tree

6 files changed

+156
-2
lines changed

6 files changed

+156
-2
lines changed

utils/build-presets.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1607,6 +1607,8 @@ swiftsyntax
16071607
swiftformat
16081608
swiftdocc
16091609

1610+
build-minimal-stdlib
1611+
16101612
# Don't generate the SwiftSyntax gyb files. Instead verify that up-to-date ones
16111613
# are checked in.
16121614
swiftsyntax-verify-generated-files

utils/build_swift/build_swift/defaults.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ def llvm_install_components():
119119
platforms.
120120
"""
121121
components = ['llvm-ar', 'llvm-cov', 'llvm-profdata', 'IndexStore', 'clang',
122-
'clang-resource-headers', 'compiler-rt', 'clangd']
122+
'clang-resource-headers', 'compiler-rt', 'clangd', 'LTO']
123123
if os.sys.platform == 'darwin':
124124
components.extend(['dsymutil'])
125125
else:

utils/build_swift/build_swift/driver_arguments.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -739,6 +739,9 @@ def create_argument_parser():
739739
toggle_true('build_swift_inspect'),
740740
help='build SwiftInspect using swiftpm against the just built '
741741
'toolchain')
742+
option(['--build-minimal-stdlib'], toggle_true('build_minimalstdlib'),
743+
help='build the \'minimal\' freestanding stdlib variant into a '
744+
'separate build directory ')
742745

743746
option('--xctest', toggle_true('build_xctest'),
744747
help='build xctest')

utils/swift_build_support/swift_build_support/build_script_invocation.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,8 @@ def compute_product_pipelines(self):
654654
is_enabled=self.args.build_swiftdocc)
655655
builder.add_product(products.SwiftDocCRender,
656656
is_enabled=self.args.install_swiftdocc)
657+
builder.add_product(products.MinimalStdlib,
658+
is_enabled=self.args.build_minimalstdlib)
657659

658660
# Keep SwiftDriver at last.
659661
# swift-driver's integration with the build scripts is not fully

utils/swift_build_support/swift_build_support/products/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
from .llbuild import LLBuild
2626
from .lldb import LLDB
2727
from .llvm import LLVM
28+
from .minimalstdlib import MinimalStdlib
2829
from .ninja import Ninja
2930
from .playgroundsupport import PlaygroundSupport
3031
from .skstresstester import SKStressTester
@@ -45,7 +46,6 @@
4546
__all__ = [
4647
'BackDeployConcurrency',
4748
'CMark',
48-
'Ninja',
4949
'Foundation',
5050
'LibCXX',
5151
'LibDispatch',
@@ -56,6 +56,7 @@
5656
'LLBuild',
5757
'LLDB',
5858
'LLVM',
59+
'MinimalStdlib',
5960
'Ninja',
6061
'PlaygroundSupport',
6162
'Swift',
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
# swift_build_support/products/minimalstdlib.py -----------------*- python -*-
2+
#
3+
# This source file is part of the Swift.org open source project
4+
#
5+
# Copyright (c) 2014 - 2021 Apple Inc. and the Swift project authors
6+
# Licensed under Apache License v2.0 with Runtime Library Exception
7+
#
8+
# See https://swift.org/LICENSE.txt for license information
9+
# See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
10+
#
11+
# ----------------------------------------------------------------------------
12+
13+
import os
14+
import platform
15+
16+
from . import cmake_product
17+
from . import cmark
18+
from . import libcxx
19+
from . import llvm
20+
from . import swift
21+
22+
23+
class MinimalStdlib(cmake_product.CMakeProduct):
24+
@classmethod
25+
def product_source_name(cls):
26+
return os.path.join("swift")
27+
28+
@classmethod
29+
def is_build_script_impl_product(cls):
30+
return False
31+
32+
@classmethod
33+
def is_before_build_script_impl_product(cls):
34+
return False
35+
36+
def should_build(self, host_target):
37+
return platform.system() == 'Darwin'
38+
39+
def build(self, host_target):
40+
build_variant = 'MinSizeRel'
41+
self.cmake_options.define('CMAKE_BUILD_TYPE:STRING', build_variant)
42+
self.cmake_options.define('SWIFT_STDLIB_BUILD_TYPE:STRING', build_variant)
43+
44+
build_root = os.path.dirname(self.build_dir)
45+
llvm_build_dir = os.path.join('..', build_root, '%s-%s' % ('llvm', host_target))
46+
llvm_cmake_dir = os.path.join(llvm_build_dir, 'lib', 'cmake', 'llvm')
47+
self.cmake_options.define('LLVM_DIR:PATH', llvm_cmake_dir)
48+
49+
# Use the just-built toolchain
50+
toolchain_dir = self.install_toolchain_path(host_target)
51+
self.cmake_options.define('TOOLCHAIN_DIR:PATH', toolchain_dir)
52+
self.cmake_options.define('SWIFT_NATIVE_CLANG_TOOLS_PATH:STRING', toolchain_dir + '/bin')
53+
self.cmake_options.define('SWIFT_NATIVE_LLVM_TOOLS_PATH:STRING', toolchain_dir + '/bin')
54+
self.cmake_options.define('SWIFT_NATIVE_SWIFT_TOOLS_PATH:STRING', toolchain_dir + '/bin')
55+
56+
# Build the freestanding variant, with these options
57+
self.cmake_options.define('SWIFT_SDKS:STRING', 'FREESTANDING')
58+
self.cmake_options.define('SWIFT_FREESTANDING_ARCHS:STRING', 'x86_64;arm64')
59+
self.cmake_options.define('SWIFT_FREESTANDING_FLAVOR:STRING', 'apple')
60+
self.cmake_options.define('SWIFT_FREESTANDING_IS_DARWIN:BOOL', 'FALSE')
61+
self.cmake_options.define('SWIFT_FREESTANDING_MODULE_NAME:STRING', 'macos')
62+
self.cmake_options.define('SWIFT_FREESTANDING_SDK:STRING', 'macosx')
63+
self.cmake_options.define('SWIFT_FREESTANDING_TRIPLE_NAME:STRING', 'macosx11.0')
64+
self.cmake_options.define('SWIFT_PRIMARY_VARIANT_ARCH:STRING', 'x86_64')
65+
self.cmake_options.define('SWIFT_PRIMARY_VARIANT_SDK:STRING', 'FREESTANDING')
66+
self.cmake_options.define('SWIFT_HOST_TRIPLE:STRING', 'x86_64-apple-macosx10.13')
67+
self.cmake_options.define('SWIFT_HOST_VARIANT', 'macosx')
68+
self.cmake_options.define('SWIFT_HOST_VARIANT_ARCH', 'x86_64')
69+
self.cmake_options.define('SWIFT_HOST_VARIANT_SDK', 'OSX')
70+
self.cmake_options.define('SWIFT_STDLIB_ASSERTIONS:BOOL', 'FALSE')
71+
72+
# Configure build to only build the stdlib, and only a static version of it
73+
self.cmake_options.define('SWIFT_BUILD_DYNAMIC_SDK_OVERLAY:BOOL', 'FALSE')
74+
self.cmake_options.define('SWIFT_BUILD_DYNAMIC_STDLIB:BOOL', 'FALSE')
75+
self.cmake_options.define('SWIFT_BUILD_REMOTE_MIRROR:BOOL', 'FALSE')
76+
self.cmake_options.define('SWIFT_BUILD_RUNTIME_WITH_HOST_COMPILER:BOOL', 'FALSE')
77+
self.cmake_options.define('SWIFT_BUILD_STATIC_SDK_OVERLAY:BOOL', 'FALSE')
78+
self.cmake_options.define('SWIFT_BUILD_STATIC_STDLIB:BOOL', 'TRUE')
79+
self.cmake_options.define('SWIFT_INCLUDE_TESTS:BOOL', 'TRUE')
80+
self.cmake_options.define('SWIFT_INCLUDE_TOOLS:BOOL', 'FALSE')
81+
82+
# Stdlib feature flags
83+
self.cmake_options.define('SWIFT_ENABLE_BACKTRACING:BOOL', 'FALSE')
84+
self.cmake_options.define('SWIFT_ENABLE_DISPATCH:BOOL', 'FALSE')
85+
self.cmake_options.define('SWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY:BOOL', 'TRUE')
86+
self.cmake_options.define('SWIFT_ENABLE_EXPERIMENTAL_DIFFERENTIABLE_PROGRAMMING:BOOL', 'FALSE')
87+
self.cmake_options.define('SWIFT_ENABLE_EXPERIMENTAL_DISTRIBUTED:BOOL', 'FALSE')
88+
self.cmake_options.define('SWIFT_ENABLE_EXPERIMENTAL_OBSERVATION:BOOL', 'FALSE')
89+
self.cmake_options.define('SWIFT_ENABLE_REFLECTION:BOOL', 'FALSE')
90+
self.cmake_options.define('SWIFT_ENABLE_RUNTIME_FUNCTION_COUNTERS:BOOL', 'FALSE')
91+
self.cmake_options.define('SWIFT_IMPLICIT_CONCURRENCY_IMPORT:BOOL', 'FALSE')
92+
self.cmake_options.define('SWIFT_RUNTIME_CRASH_REPORTER_CLIENT:BOOL', 'FALSE')
93+
self.cmake_options.define('SWIFT_RUNTIME_ENABLE_LEAK_CHECKER:BOOL', 'FALSE')
94+
self.cmake_options.define('SWIFT_RUNTIME_STATIC_IMAGE_INSPECTION:BOOL', 'FALSE')
95+
self.cmake_options.define('SWIFT_STDLIB_BUILD_PRIVATE:BOOL', 'TRUE')
96+
self.cmake_options.define('SWIFT_STDLIB_CONCURRENCY_TRACING:BOOL', 'FALSE')
97+
self.cmake_options.define('SWIFT_STDLIB_DISABLE_INSTANTIATION_CACHES:BOOL', 'TRUE')
98+
self.cmake_options.define('SWIFT_STDLIB_ENABLE_DEBUG_PRECONDITIONS_IN_RELEASE', 'FALSE')
99+
self.cmake_options.define('SWIFT_STDLIB_ENABLE_LTO:STRING', 'full')
100+
self.cmake_options.define('SWIFT_STDLIB_ENABLE_OBJC_INTEROP:BOOL', 'FALSE')
101+
self.cmake_options.define('SWIFT_STDLIB_ENABLE_PRESPECIALIZATION:BOOL', 'FALSE')
102+
self.cmake_options.define('SWIFT_STDLIB_ENABLE_STDLIBCORE_EXCLUSIVITY_CHECKING:BOOL', 'FALSE')
103+
self.cmake_options.define('SWIFT_STDLIB_ENABLE_UNICODE_DATA', 'FALSE')
104+
self.cmake_options.define('SWIFT_STDLIB_ENABLE_VECTOR_TYPES:BOOL', 'FALSE')
105+
self.cmake_options.define('SWIFT_STDLIB_EXPERIMENTAL_HERMETIC_SEAL_AT_LINK:BOOL', 'TRUE')
106+
self.cmake_options.define('SWIFT_STDLIB_HAS_ASL:BOOL', 'FALSE')
107+
self.cmake_options.define('SWIFT_STDLIB_HAS_COMMANDLINE:BOOL', 'FALSE')
108+
self.cmake_options.define('SWIFT_STDLIB_HAS_DARWIN_LIBMALLOC:BOOL', 'FALSE')
109+
self.cmake_options.define('SWIFT_STDLIB_HAS_DLADDR:BOOL', 'FALSE')
110+
self.cmake_options.define('SWIFT_STDLIB_HAS_ENVIRON:BOOL', 'FALSE')
111+
self.cmake_options.define('SWIFT_STDLIB_HAS_LOCALE:BOOL', 'FALSE')
112+
self.cmake_options.define('SWIFT_STDLIB_HAS_STDIN:BOOL', 'FALSE')
113+
self.cmake_options.define('SWIFT_STDLIB_HAS_TYPE_PRINTING:BOOL', 'FALSE')
114+
self.cmake_options.define('SWIFT_STDLIB_OS_VERSIONING:BOOL', 'FALSE')
115+
self.cmake_options.define('SWIFT_STDLIB_PASSTHROUGH_METADATA_ALLOCATOR:BOOL', 'TRUE')
116+
self.cmake_options.define('SWIFT_STDLIB_REFLECTION_METADATA:STRING', 'debugger-only')
117+
self.cmake_options.define('SWIFT_STDLIB_SHORT_MANGLING_LOOKUPS:BOOL', 'FALSE')
118+
self.cmake_options.define('SWIFT_STDLIB_SIL_DEBUGGING:BOOL', 'FALSE')
119+
self.cmake_options.define('SWIFT_STDLIB_SINGLE_THREADED_CONCURRENCY:BOOL', 'FALSE')
120+
self.cmake_options.define('SWIFT_STDLIB_STABLE_ABI:BOOL', 'FALSE')
121+
self.cmake_options.define('SWIFT_STDLIB_STATIC_PRINT', 'TRUE')
122+
self.cmake_options.define('SWIFT_STDLIB_SUPPORTS_BACKTRACE_REPORTING:BOOL', 'FALSE')
123+
self.cmake_options.define('SWIFT_STDLIB_SUPPORT_BACK_DEPLOYMENT:BOOL', 'FALSE')
124+
self.cmake_options.define('SWIFT_STDLIB_TRAP_FUNCTION:STRING', '')
125+
self.cmake_options.define('SWIFT_STDLIB_USE_RELATIVE_PROTOCOL_WITNESS_TABLES:BOOL', 'TRUE')
126+
self.cmake_options.define('SWIFT_THREADING_PACKAGE:STRING', 'none')
127+
128+
# Build!
129+
self.build_with_cmake(["swift-stdlib-freestanding"], build_variant, [],
130+
prefer_just_built_toolchain=True)
131+
132+
def should_test(self, host_target):
133+
return False
134+
135+
def test(self, host_target):
136+
raise RuntimeError("Testing not implemented")
137+
138+
def should_install(self, host_target):
139+
return False
140+
141+
@classmethod
142+
def get_dependencies(cls):
143+
return [cmark.CMark,
144+
llvm.LLVM,
145+
libcxx.LibCXX,
146+
swift.Swift]

0 commit comments

Comments
 (0)