diff --git a/utils/build_swift/build_swift/driver_arguments.py b/utils/build_swift/build_swift/driver_arguments.py index 76750792a1b2e..034cba4e3830f 100644 --- a/utils/build_swift/build_swift/driver_arguments.py +++ b/utils/build_swift/build_swift/driver_arguments.py @@ -830,8 +830,10 @@ def create_argument_parser(): option('--build-ninja', toggle_true, help='build the Ninja tool') - option(['--build-lld'], toggle_true('build_lld'), + option(['--build-lld'], toggle_true('build_lld'), default=True, help='build lld as part of llvm') + option(['--skip-build-lld'], toggle_false('build_lld'), + help='skip building lld as part of llvm') option('--skip-build-clang-tools-extra', toggle_false('build_clang_tools_extra'), diff --git a/utils/build_swift/tests/expected_options.py b/utils/build_swift/tests/expected_options.py index a9b797b1c400b..77e435ebd52b1 100644 --- a/utils/build_swift/tests/expected_options.py +++ b/utils/build_swift/tests/expected_options.py @@ -74,7 +74,7 @@ 'build_libcxx': False, 'build_linux_static': False, 'build_ninja': False, - 'build_lld': False, + 'build_lld': True, 'build_osx': True, 'build_playgroundsupport': False, 'build_runtime_with_host_compiler': False, @@ -753,6 +753,7 @@ class BuildScriptImplOption(_BaseOption): DisableOption('--skip-build-zlib', dest='build_zlib'), DisableOption('--skip-build-curl', dest='build_curl'), DisableOption('--skip-build-compiler-rt', dest='build_compiler_rt'), + DisableOption('--skip-build-lld', dest='build_lld'), ChoicesOption('--compiler-vendor', choices=['none', 'apple']), diff --git a/utils/swift_build_support/swift_build_support/build_script_invocation.py b/utils/swift_build_support/swift_build_support/build_script_invocation.py index c8111bc6ad1ca..cb88b9b2e1529 100644 --- a/utils/swift_build_support/swift_build_support/build_script_invocation.py +++ b/utils/swift_build_support/swift_build_support/build_script_invocation.py @@ -463,16 +463,7 @@ def convert_to_impl_arguments(self): "--llvm-install-components=%s" % args.llvm_install_components ] - # On non-Darwin platforms, build lld so we can always have a - # linker that is compatible with the swift we are using to - # compile the stdlib. - # - # This makes it easier to build target stdlibs on systems that - # have old toolchains without more modern linker features. - # - # On Darwin, only build lld if explicitly requested using --build-lld. - should_build_lld = (platform.system() != 'Darwin' or args.build_lld) - if not should_build_lld: + if not args.build_lld: impl_args += [ "--skip-build-lld" ] diff --git a/utils/swift_build_support/swift_build_support/products/llvm.py b/utils/swift_build_support/swift_build_support/products/llvm.py index 96ff2e7fb5212..420f9ea48d946 100644 --- a/utils/swift_build_support/swift_build_support/products/llvm.py +++ b/utils/swift_build_support/swift_build_support/products/llvm.py @@ -324,13 +324,14 @@ def build(self, host_target): if self.args.build_clang_tools_extra: llvm_enable_projects.append('clang-tools-extra') - # Always build lld -- on non-Darwin so we can always have a + # Building lld is on by default -- on non-Darwin so we can always have a # linker that is compatible with the swift we are using to # compile the stdlib, but on Darwin too for Embedded Swift use cases. # # This makes it easier to build target stdlibs on systems that # have old toolchains without more modern linker features. - llvm_enable_projects.append('lld') + if self.args.build_lld: + llvm_enable_projects.append('lld') llvm_cmake_options.define('LLVM_ENABLE_PROJECTS', ';'.join(llvm_enable_projects))