Skip to content

Commit 3547c11

Browse files
committed
Attempt to unbreak the build by building Swift modules with -enable-testing.
1 parent 344e49d commit 3547c11

File tree

1 file changed

+45
-32
lines changed

1 file changed

+45
-32
lines changed

Utilities/build-script-helper.py

Lines changed: 45 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -382,9 +382,9 @@ def build_using_cmake(args, toolchain_bin, build_dir):
382382
else:
383383
swift_flags.append('-O')
384384

385+
base_cmake_flags = []
385386
for target in targets:
386387
swift_flags.append('-target %s' % target)
387-
base_cmake_flags = ['-DCMAKE_Swift_FLAGS=' + ' '.join(swift_flags)]
388388
if platform.system() == 'Darwin':
389389
base_cmake_flags.append('-DCMAKE_OSX_DEPLOYMENT_TARGET=%s' % macos_deployment_target)
390390

@@ -394,17 +394,22 @@ def build_using_cmake(args, toolchain_bin, build_dir):
394394
dependencies_dir = os.path.join(driver_dir, 'dependencies')
395395

396396
# LLBuild
397-
build_llbuild_using_cmake(args, target, swiftc_exec, dependencies_dir, base_cmake_flags)
397+
build_llbuild_using_cmake(args, target, swiftc_exec, dependencies_dir,
398+
base_cmake_flags, swift_flags)
398399
# TSC
399-
build_tsc_using_cmake(args, target, swiftc_exec, dependencies_dir, base_cmake_flags)
400+
build_tsc_using_cmake(args, target, swiftc_exec, dependencies_dir,
401+
base_cmake_flags, swift_flags)
400402
# Argument Parser
401-
build_argument_parser_using_cmake(args, target, swiftc_exec, dependencies_dir, base_cmake_flags)
403+
build_argument_parser_using_cmake(args, target, swiftc_exec, dependencies_dir,
404+
base_cmake_flags, swift_flags)
402405
# Yams
403-
build_yams_using_cmake(args, target, swiftc_exec, dependencies_dir, base_cmake_flags)
406+
build_yams_using_cmake(args, target, swiftc_exec, dependencies_dir,
407+
base_cmake_flags, swift_flags)
404408
# SwiftDriver
405-
build_swift_driver_using_cmake(args, target, swiftc_exec, driver_dir, base_cmake_flags)
409+
build_swift_driver_using_cmake(args, target, swiftc_exec, driver_dir,
410+
base_cmake_flags, swift_flags)
406411

407-
def build_llbuild_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_flags):
412+
def build_llbuild_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_flags, swift_flags):
408413
print('Building llbuild for target: %s' % target)
409414
llbuild_source_dir = os.path.join(os.path.dirname(args.package_path), 'llbuild')
410415
llbuild_build_dir = os.path.join(build_dir, 'llbuild')
@@ -426,73 +431,81 @@ def build_llbuild_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_f
426431
# on some machines. This is also Darwin-specific...
427432
if platform.system() == 'Darwin':
428433
llbuild_cmake_flags.append('-DSQLite3_LIBRARY=%s/usr/lib/libsqlite3.tbd' % args.sysroot)
434+
llbuild_swift_flags = swift_flags[:]
429435

430436
# Build only a subset of llbuild (in particular skipping tests)
431-
cmake_build(args, swiftc_exec, llbuild_cmake_flags, llbuild_source_dir, llbuild_build_dir, 'products/all')
437+
cmake_build(args, swiftc_exec, llbuild_cmake_flags, llbuild_swift_flags,
438+
llbuild_source_dir, llbuild_build_dir, 'products/all')
432439

433-
def build_tsc_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_flags):
440+
def build_tsc_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_flags, swift_flags):
434441
print('Building TSC for target: %s' % target)
435442
tsc_source_dir = os.path.join(os.path.dirname(args.package_path), 'swift-tools-support-core')
436443
tsc_build_dir = os.path.join(build_dir, 'swift-tools-support-core')
437-
cmake_build(args, swiftc_exec, base_cmake_flags, tsc_source_dir, tsc_build_dir)
444+
tsc_swift_flags = swift_flags[:]
445+
cmake_build(args, swiftc_exec, base_cmake_flags, tsc_swift_flags,
446+
tsc_source_dir, tsc_build_dir)
438447

439-
def build_yams_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_flags):
448+
def build_yams_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_flags, swift_flags):
440449
print('Building Yams for target: %s' % target)
441450
yams_source_dir = os.path.join(os.path.dirname(args.package_path), 'yams')
442451
yams_build_dir = os.path.join(build_dir, 'yams')
443-
yams_flags = base_cmake_flags + [
452+
yams_cmake_flags = base_cmake_flags + [
444453
'-DCMAKE_C_COMPILER:=clang',
445454
'-DBUILD_SHARED_LIBS=OFF']
446455

447456
if platform.system() == 'Darwin':
448-
yams_flags.append('-DCMAKE_OSX_DEPLOYMENT_TARGET=%s' % macos_deployment_target)
449-
yams_flags.append('-DCMAKE_C_FLAGS=-target %s' % target)
457+
yams_cmake_flags.append('-DCMAKE_OSX_DEPLOYMENT_TARGET=%s' % macos_deployment_target)
458+
yams_cmake_flags.append('-DCMAKE_C_FLAGS=-target %s' % target)
450459
else:
451-
yams_flags.append('-DCMAKE_C_FLAGS=-fPIC -target %s' % target)
460+
yams_cmake_flags.append('-DCMAKE_C_FLAGS=-fPIC -target %s' % target)
452461
if args.dispatch_build_dir:
453-
yams_flags.append(get_dispatch_cmake_arg(args))
462+
yams_cmake_flags.append(get_dispatch_cmake_arg(args))
454463

455464
if args.foundation_build_dir:
456-
yams_flags.append(get_foundation_cmake_arg(args))
465+
yams_cmake_flags.append(get_foundation_cmake_arg(args))
466+
yams_swift_flags = swift_flags[:]
467+
cmake_build(args, swiftc_exec, yams_cmake_flags, yams_swift_flags,
468+
yams_source_dir, yams_build_dir)
457469

458-
cmake_build(args, swiftc_exec, yams_flags, yams_source_dir, yams_build_dir)
459-
460-
def build_argument_parser_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_flags):
470+
def build_argument_parser_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_flags, swift_flags):
461471
print('Building Argument Parser for target: %s' % target)
462472
parser_source_dir = os.path.join(os.path.dirname(args.package_path), 'swift-argument-parser')
463473
parser_build_dir = os.path.join(build_dir, 'swift-argument-parser')
464474
custom_flags = ['-DBUILD_TESTING=NO', '-DBUILD_EXAMPLES=NO']
465-
parser_flags = base_cmake_flags + custom_flags
466-
cmake_build(args, swiftc_exec, parser_flags, parser_source_dir, parser_build_dir)
475+
parser_cmake_flags = base_cmake_flags + custom_flags
476+
parser_swift_flags = swift_flags[:]
477+
cmake_build(args, swiftc_exec, parser_cmake_flags, parser_swift_flags,
478+
parser_source_dir, parser_build_dir)
467479
return
468480

469-
def build_swift_driver_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_flags):
481+
def build_swift_driver_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_flags, swift_flags):
470482
print('Building Swift Driver for target: %s' % target)
471483
driver_source_dir = args.package_path
472484
driver_build_dir = build_dir
473485
dependencies_dir = os.path.join(build_dir, 'dependencies')
474486
# TODO: Enable Library Evolution
475-
swift_flags = ''
487+
driver_swift_flags = swift_flags[:]
476488
flags = [
477489
'-DLLBuild_DIR=' + os.path.join(os.path.join(dependencies_dir, 'llbuild'), 'cmake/modules'),
478490
'-DTSC_DIR=' + os.path.join(os.path.join(dependencies_dir, 'swift-tools-support-core'), 'cmake/modules'),
479491
'-DYams_DIR=' + os.path.join(os.path.join(dependencies_dir, 'yams'), 'cmake/modules'),
480-
'-DArgumentParser_DIR=' + os.path.join(os.path.join(dependencies_dir, 'swift-argument-parser'), 'cmake/modules'),
481-
swift_flags
482-
]
492+
'-DArgumentParser_DIR=' + os.path.join(os.path.join(dependencies_dir, 'swift-argument-parser'), 'cmake/modules')]
493+
#FIXME: Building with testing enable to allow @testable import of SwiftDriver
494+
driver_swift_flags.append('-enable-testing')
483495
driver_cmake_flags = base_cmake_flags + flags
484-
cmake_build(args, swiftc_exec, driver_cmake_flags, driver_source_dir, driver_build_dir)
496+
cmake_build(args, swiftc_exec, driver_cmake_flags, driver_swift_flags,
497+
driver_source_dir, driver_build_dir)
485498

486-
def cmake_build(args, swiftc_exec, cmake_args, source_path, build_dir, ninja_target=None):
499+
def cmake_build(args, swiftc_exec, cmake_args, swift_flags, source_path,
500+
build_dir, ninja_target=None):
487501
"""Configure with CMake and build with Ninja"""
488-
swift_flags = ''
489502
if args.sysroot:
490-
swift_flags = '-sdk %s' % args.sysroot
503+
swift_flags.append('-sdk %s' % args.sysroot)
491504
cmd = [
492505
args.cmake_bin, '-G', 'Ninja',
493506
'-DCMAKE_MAKE_PROGRAM=%s' % args.ninja_bin,
494507
'-DCMAKE_BUILD_TYPE:=Release',
495-
'-DCMAKE_Swift_FLAGS=' + swift_flags,
508+
'-DCMAKE_Swift_FLAGS=' + ' '.join(swift_flags),
496509
'-DCMAKE_Swift_COMPILER:=%s' % (swiftc_exec),
497510
] + cmake_args + [source_path]
498511
if args.verbose:

0 commit comments

Comments
 (0)