@@ -175,6 +175,7 @@ def handle_invocation(toolchain_bin, args):
175
175
env ['SWIFT_DRIVER_' + tool .upper ().replace ('-' ,'_' ) + '_EXEC' ] = '%s' % (tool_path )
176
176
env ['SWIFT_EXEC' ] = '%sc' % (swift_exec )
177
177
test_args = swiftpm_args
178
+ test_args += ['-Xswiftc' , '-enable-testing' ]
178
179
if should_test_parallel ():
179
180
test_args += ['--parallel' ]
180
181
swiftpm ('test' , swift_exec , test_args , env )
@@ -379,12 +380,10 @@ def build_using_cmake(args, toolchain_bin, build_dir):
379
380
if args .configuration == 'debug' :
380
381
swift_flags .append ('-Onone' )
381
382
swift_flags .append ('-DDEBUG' )
382
- else :
383
- swift_flags .append ('-O' )
384
383
384
+ base_cmake_flags = []
385
385
for target in targets :
386
386
swift_flags .append ('-target %s' % target )
387
- base_cmake_flags = ['-DCMAKE_Swift_FLAGS=' + ' ' .join (swift_flags )]
388
387
if platform .system () == 'Darwin' :
389
388
base_cmake_flags .append ('-DCMAKE_OSX_DEPLOYMENT_TARGET=%s' % macos_deployment_target )
390
389
@@ -394,17 +393,22 @@ def build_using_cmake(args, toolchain_bin, build_dir):
394
393
dependencies_dir = os .path .join (driver_dir , 'dependencies' )
395
394
396
395
# LLBuild
397
- build_llbuild_using_cmake (args , target , swiftc_exec , dependencies_dir , base_cmake_flags )
396
+ build_llbuild_using_cmake (args , target , swiftc_exec , dependencies_dir ,
397
+ base_cmake_flags , swift_flags )
398
398
# TSC
399
- build_tsc_using_cmake (args , target , swiftc_exec , dependencies_dir , base_cmake_flags )
399
+ build_tsc_using_cmake (args , target , swiftc_exec , dependencies_dir ,
400
+ base_cmake_flags , swift_flags )
400
401
# Argument Parser
401
- build_argument_parser_using_cmake (args , target , swiftc_exec , dependencies_dir , base_cmake_flags )
402
+ build_argument_parser_using_cmake (args , target , swiftc_exec , dependencies_dir ,
403
+ base_cmake_flags , swift_flags )
402
404
# Yams
403
- build_yams_using_cmake (args , target , swiftc_exec , dependencies_dir , base_cmake_flags )
405
+ build_yams_using_cmake (args , target , swiftc_exec , dependencies_dir ,
406
+ base_cmake_flags , swift_flags )
404
407
# SwiftDriver
405
- build_swift_driver_using_cmake (args , target , swiftc_exec , driver_dir , base_cmake_flags )
408
+ build_swift_driver_using_cmake (args , target , swiftc_exec , driver_dir ,
409
+ base_cmake_flags , swift_flags )
406
410
407
- def build_llbuild_using_cmake (args , target , swiftc_exec , build_dir , base_cmake_flags ):
411
+ def build_llbuild_using_cmake (args , target , swiftc_exec , build_dir , base_cmake_flags , swift_flags ):
408
412
print ('Building llbuild for target: %s' % target )
409
413
llbuild_source_dir = os .path .join (os .path .dirname (args .package_path ), 'llbuild' )
410
414
llbuild_build_dir = os .path .join (build_dir , 'llbuild' )
@@ -426,73 +430,81 @@ def build_llbuild_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_f
426
430
# on some machines. This is also Darwin-specific...
427
431
if platform .system () == 'Darwin' :
428
432
llbuild_cmake_flags .append ('-DSQLite3_LIBRARY=%s/usr/lib/libsqlite3.tbd' % args .sysroot )
433
+ llbuild_swift_flags = swift_flags [:]
429
434
430
435
# 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' )
436
+ cmake_build (args , swiftc_exec , llbuild_cmake_flags , llbuild_swift_flags ,
437
+ llbuild_source_dir , llbuild_build_dir , 'products/all' )
432
438
433
- def build_tsc_using_cmake (args , target , swiftc_exec , build_dir , base_cmake_flags ):
439
+ def build_tsc_using_cmake (args , target , swiftc_exec , build_dir , base_cmake_flags , swift_flags ):
434
440
print ('Building TSC for target: %s' % target )
435
441
tsc_source_dir = os .path .join (os .path .dirname (args .package_path ), 'swift-tools-support-core' )
436
442
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 )
443
+ tsc_swift_flags = swift_flags [:]
444
+ cmake_build (args , swiftc_exec , base_cmake_flags , tsc_swift_flags ,
445
+ tsc_source_dir , tsc_build_dir )
438
446
439
- def build_yams_using_cmake (args , target , swiftc_exec , build_dir , base_cmake_flags ):
447
+ def build_yams_using_cmake (args , target , swiftc_exec , build_dir , base_cmake_flags , swift_flags ):
440
448
print ('Building Yams for target: %s' % target )
441
449
yams_source_dir = os .path .join (os .path .dirname (args .package_path ), 'yams' )
442
450
yams_build_dir = os .path .join (build_dir , 'yams' )
443
- yams_flags = base_cmake_flags + [
451
+ yams_cmake_flags = base_cmake_flags + [
444
452
'-DCMAKE_C_COMPILER:=clang' ,
445
453
'-DBUILD_SHARED_LIBS=OFF' ]
446
454
447
455
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 )
456
+ yams_cmake_flags .append ('-DCMAKE_OSX_DEPLOYMENT_TARGET=%s' % macos_deployment_target )
457
+ yams_cmake_flags .append ('-DCMAKE_C_FLAGS=-target %s' % target )
450
458
else :
451
- yams_flags .append ('-DCMAKE_C_FLAGS=-fPIC -target %s' % target )
459
+ yams_cmake_flags .append ('-DCMAKE_C_FLAGS=-fPIC -target %s' % target )
452
460
if args .dispatch_build_dir :
453
- yams_flags .append (get_dispatch_cmake_arg (args ))
461
+ yams_cmake_flags .append (get_dispatch_cmake_arg (args ))
454
462
455
463
if args .foundation_build_dir :
456
- yams_flags .append (get_foundation_cmake_arg (args ))
457
-
458
- cmake_build (args , swiftc_exec , yams_flags , yams_source_dir , yams_build_dir )
464
+ yams_cmake_flags .append (get_foundation_cmake_arg (args ))
465
+ yams_swift_flags = swift_flags [:]
466
+ cmake_build (args , swiftc_exec , yams_cmake_flags , yams_swift_flags ,
467
+ yams_source_dir , yams_build_dir )
459
468
460
- def build_argument_parser_using_cmake (args , target , swiftc_exec , build_dir , base_cmake_flags ):
469
+ def build_argument_parser_using_cmake (args , target , swiftc_exec , build_dir , base_cmake_flags , swift_flags ):
461
470
print ('Building Argument Parser for target: %s' % target )
462
471
parser_source_dir = os .path .join (os .path .dirname (args .package_path ), 'swift-argument-parser' )
463
472
parser_build_dir = os .path .join (build_dir , 'swift-argument-parser' )
464
473
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 )
474
+ parser_cmake_flags = base_cmake_flags + custom_flags
475
+ parser_swift_flags = swift_flags [:]
476
+ cmake_build (args , swiftc_exec , parser_cmake_flags , parser_swift_flags ,
477
+ parser_source_dir , parser_build_dir )
467
478
return
468
479
469
- def build_swift_driver_using_cmake (args , target , swiftc_exec , build_dir , base_cmake_flags ):
480
+ def build_swift_driver_using_cmake (args , target , swiftc_exec , build_dir , base_cmake_flags , swift_flags ):
470
481
print ('Building Swift Driver for target: %s' % target )
471
482
driver_source_dir = args .package_path
472
483
driver_build_dir = build_dir
473
484
dependencies_dir = os .path .join (build_dir , 'dependencies' )
474
485
# TODO: Enable Library Evolution
475
- swift_flags = ''
486
+ driver_swift_flags = swift_flags [:]
476
487
flags = [
477
488
'-DLLBuild_DIR=' + os .path .join (os .path .join (dependencies_dir , 'llbuild' ), 'cmake/modules' ),
478
489
'-DTSC_DIR=' + os .path .join (os .path .join (dependencies_dir , 'swift-tools-support-core' ), 'cmake/modules' ),
479
490
'-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
- ]
491
+ '-DArgumentParser_DIR=' + os .path .join (os .path .join (dependencies_dir , 'swift-argument-parser' ), 'cmake/modules' )]
492
+ #FIXME: Building with testing enable to allow @testable import of SwiftDriver
493
+ driver_swift_flags . append ( '-enable-testing' )
483
494
driver_cmake_flags = base_cmake_flags + flags
484
- cmake_build (args , swiftc_exec , driver_cmake_flags , driver_source_dir , driver_build_dir )
495
+ cmake_build (args , swiftc_exec , driver_cmake_flags , driver_swift_flags ,
496
+ driver_source_dir , driver_build_dir )
485
497
486
- def cmake_build (args , swiftc_exec , cmake_args , source_path , build_dir , ninja_target = None ):
498
+ def cmake_build (args , swiftc_exec , cmake_args , swift_flags , source_path ,
499
+ build_dir , ninja_target = None ):
487
500
"""Configure with CMake and build with Ninja"""
488
- swift_flags = ''
489
501
if args .sysroot :
490
- swift_flags = '-sdk %s' % args .sysroot
502
+ swift_flags . append ( '-sdk %s' % args .sysroot )
491
503
cmd = [
492
504
args .cmake_bin , '-G' , 'Ninja' ,
493
505
'-DCMAKE_MAKE_PROGRAM=%s' % args .ninja_bin ,
494
506
'-DCMAKE_BUILD_TYPE:=Release' ,
495
- '-DCMAKE_Swift_FLAGS=' + swift_flags ,
507
+ '-DCMAKE_Swift_FLAGS=' + ' ' . join ( swift_flags ) ,
496
508
'-DCMAKE_Swift_COMPILER:=%s' % (swiftc_exec ),
497
509
] + cmake_args + [source_path ]
498
510
if args .verbose :
0 commit comments