@@ -175,6 +175,7 @@ def handle_invocation(toolchain_bin, args):
175175 env ['SWIFT_DRIVER_' + tool .upper ().replace ('-' ,'_' ) + '_EXEC' ] = '%s' % (tool_path )
176176 env ['SWIFT_EXEC' ] = '%sc' % (swift_exec )
177177 test_args = swiftpm_args
178+ test_args += ['-Xswiftc' , '-enable-testing' ]
178179 if should_test_parallel ():
179180 test_args += ['--parallel' ]
180181 swiftpm ('test' , swift_exec , test_args , env )
@@ -379,15 +380,13 @@ def build_using_cmake(args, toolchain_bin, build_dir):
379380 if args .configuration == 'debug' :
380381 swift_flags .append ('-Onone' )
381382 swift_flags .append ('-DDEBUG' )
382- else :
383- swift_flags .append ('-O' )
384383
385384 # Ensure we are not sharing the module cache with concurrent builds in CI
386385 swift_flags .append ('-module-cache-path "{}"' .format (os .path .join (build_dir , 'module-cache' )))
387386
387+ base_cmake_flags = []
388388 for target in targets :
389389 swift_flags .append ('-target %s' % target )
390- base_cmake_flags = ['-DCMAKE_Swift_FLAGS=' + ' ' .join (swift_flags )]
391390 if platform .system () == 'Darwin' :
392391 base_cmake_flags .append ('-DCMAKE_OSX_DEPLOYMENT_TARGET=%s' % macos_deployment_target )
393392
@@ -397,17 +396,22 @@ def build_using_cmake(args, toolchain_bin, build_dir):
397396 dependencies_dir = os .path .join (driver_dir , 'dependencies' )
398397
399398 # LLBuild
400- build_llbuild_using_cmake (args , target , swiftc_exec , dependencies_dir , base_cmake_flags )
399+ build_llbuild_using_cmake (args , target , swiftc_exec , dependencies_dir ,
400+ base_cmake_flags , swift_flags )
401401 # TSC
402- build_tsc_using_cmake (args , target , swiftc_exec , dependencies_dir , base_cmake_flags )
402+ build_tsc_using_cmake (args , target , swiftc_exec , dependencies_dir ,
403+ base_cmake_flags , swift_flags )
403404 # Argument Parser
404- build_argument_parser_using_cmake (args , target , swiftc_exec , dependencies_dir , base_cmake_flags )
405+ build_argument_parser_using_cmake (args , target , swiftc_exec , dependencies_dir ,
406+ base_cmake_flags , swift_flags )
405407 # Yams
406- build_yams_using_cmake (args , target , swiftc_exec , dependencies_dir , base_cmake_flags )
408+ build_yams_using_cmake (args , target , swiftc_exec , dependencies_dir ,
409+ base_cmake_flags , swift_flags )
407410 # SwiftDriver
408- build_swift_driver_using_cmake (args , target , swiftc_exec , driver_dir , base_cmake_flags )
411+ build_swift_driver_using_cmake (args , target , swiftc_exec , driver_dir ,
412+ base_cmake_flags , swift_flags )
409413
410- def build_llbuild_using_cmake (args , target , swiftc_exec , build_dir , base_cmake_flags ):
414+ def build_llbuild_using_cmake (args , target , swiftc_exec , build_dir , base_cmake_flags , swift_flags ):
411415 print ('Building llbuild for target: %s' % target )
412416 llbuild_source_dir = os .path .join (os .path .dirname (args .package_path ), 'llbuild' )
413417 llbuild_build_dir = os .path .join (build_dir , 'llbuild' )
@@ -429,73 +433,81 @@ def build_llbuild_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_f
429433 # on some machines. This is also Darwin-specific...
430434 if platform .system () == 'Darwin' :
431435 llbuild_cmake_flags .append ('-DSQLite3_LIBRARY=%s/usr/lib/libsqlite3.tbd' % args .sysroot )
436+ llbuild_swift_flags = swift_flags [:]
432437
433438 # Build only a subset of llbuild (in particular skipping tests)
434- cmake_build (args , swiftc_exec , llbuild_cmake_flags , llbuild_source_dir , llbuild_build_dir , 'products/all' )
439+ cmake_build (args , swiftc_exec , llbuild_cmake_flags , llbuild_swift_flags ,
440+ llbuild_source_dir , llbuild_build_dir , 'products/all' )
435441
436- def build_tsc_using_cmake (args , target , swiftc_exec , build_dir , base_cmake_flags ):
442+ def build_tsc_using_cmake (args , target , swiftc_exec , build_dir , base_cmake_flags , swift_flags ):
437443 print ('Building TSC for target: %s' % target )
438444 tsc_source_dir = os .path .join (os .path .dirname (args .package_path ), 'swift-tools-support-core' )
439445 tsc_build_dir = os .path .join (build_dir , 'swift-tools-support-core' )
440- cmake_build (args , swiftc_exec , base_cmake_flags , tsc_source_dir , tsc_build_dir )
446+ tsc_swift_flags = swift_flags [:]
447+ cmake_build (args , swiftc_exec , base_cmake_flags , tsc_swift_flags ,
448+ tsc_source_dir , tsc_build_dir )
441449
442- def build_yams_using_cmake (args , target , swiftc_exec , build_dir , base_cmake_flags ):
450+ def build_yams_using_cmake (args , target , swiftc_exec , build_dir , base_cmake_flags , swift_flags ):
443451 print ('Building Yams for target: %s' % target )
444452 yams_source_dir = os .path .join (os .path .dirname (args .package_path ), 'yams' )
445453 yams_build_dir = os .path .join (build_dir , 'yams' )
446- yams_flags = base_cmake_flags + [
454+ yams_cmake_flags = base_cmake_flags + [
447455 '-DCMAKE_C_COMPILER:=clang' ,
448456 '-DBUILD_SHARED_LIBS=OFF' ]
449457
450458 if platform .system () == 'Darwin' :
451- yams_flags .append ('-DCMAKE_OSX_DEPLOYMENT_TARGET=%s' % macos_deployment_target )
452- yams_flags .append ('-DCMAKE_C_FLAGS=-target %s' % target )
459+ yams_cmake_flags .append ('-DCMAKE_OSX_DEPLOYMENT_TARGET=%s' % macos_deployment_target )
460+ yams_cmake_flags .append ('-DCMAKE_C_FLAGS=-target %s' % target )
453461 else :
454- yams_flags .append ('-DCMAKE_C_FLAGS=-fPIC -target %s' % target )
462+ yams_cmake_flags .append ('-DCMAKE_C_FLAGS=-fPIC -target %s' % target )
455463 if args .dispatch_build_dir :
456- yams_flags .append (get_dispatch_cmake_arg (args ))
464+ yams_cmake_flags .append (get_dispatch_cmake_arg (args ))
457465
458466 if args .foundation_build_dir :
459- yams_flags .append (get_foundation_cmake_arg (args ))
460-
461- cmake_build (args , swiftc_exec , yams_flags , yams_source_dir , yams_build_dir )
467+ yams_cmake_flags .append (get_foundation_cmake_arg (args ))
468+ yams_swift_flags = swift_flags [:]
469+ cmake_build (args , swiftc_exec , yams_cmake_flags , yams_swift_flags ,
470+ yams_source_dir , yams_build_dir )
462471
463- def build_argument_parser_using_cmake (args , target , swiftc_exec , build_dir , base_cmake_flags ):
472+ def build_argument_parser_using_cmake (args , target , swiftc_exec , build_dir , base_cmake_flags , swift_flags ):
464473 print ('Building Argument Parser for target: %s' % target )
465474 parser_source_dir = os .path .join (os .path .dirname (args .package_path ), 'swift-argument-parser' )
466475 parser_build_dir = os .path .join (build_dir , 'swift-argument-parser' )
467476 custom_flags = ['-DBUILD_TESTING=NO' , '-DBUILD_EXAMPLES=NO' ]
468- parser_flags = base_cmake_flags + custom_flags
469- cmake_build (args , swiftc_exec , parser_flags , parser_source_dir , parser_build_dir )
477+ parser_cmake_flags = base_cmake_flags + custom_flags
478+ parser_swift_flags = swift_flags [:]
479+ cmake_build (args , swiftc_exec , parser_cmake_flags , parser_swift_flags ,
480+ parser_source_dir , parser_build_dir )
470481 return
471482
472- def build_swift_driver_using_cmake (args , target , swiftc_exec , build_dir , base_cmake_flags ):
483+ def build_swift_driver_using_cmake (args , target , swiftc_exec , build_dir , base_cmake_flags , swift_flags ):
473484 print ('Building Swift Driver for target: %s' % target )
474485 driver_source_dir = args .package_path
475486 driver_build_dir = build_dir
476487 dependencies_dir = os .path .join (build_dir , 'dependencies' )
477488 # TODO: Enable Library Evolution
478- swift_flags = ''
489+ driver_swift_flags = swift_flags [:]
479490 flags = [
480491 '-DLLBuild_DIR=' + os .path .join (os .path .join (dependencies_dir , 'llbuild' ), 'cmake/modules' ),
481492 '-DTSC_DIR=' + os .path .join (os .path .join (dependencies_dir , 'swift-tools-support-core' ), 'cmake/modules' ),
482493 '-DYams_DIR=' + os .path .join (os .path .join (dependencies_dir , 'yams' ), 'cmake/modules' ),
483- '-DArgumentParser_DIR=' + os .path .join (os .path .join (dependencies_dir , 'swift-argument-parser' ), 'cmake/modules' ),
484- swift_flags
485- ]
494+ '-DArgumentParser_DIR=' + os .path .join (os .path .join (dependencies_dir , 'swift-argument-parser' ), 'cmake/modules' )]
495+ #FIXME: Building with testing enable to allow @testable import of SwiftDriver
496+ driver_swift_flags . append ( '-enable-testing' )
486497 driver_cmake_flags = base_cmake_flags + flags
487- cmake_build (args , swiftc_exec , driver_cmake_flags , driver_source_dir , driver_build_dir )
498+ cmake_build (args , swiftc_exec , driver_cmake_flags , driver_swift_flags ,
499+ driver_source_dir , driver_build_dir )
488500
489- def cmake_build (args , swiftc_exec , cmake_args , source_path , build_dir , ninja_target = None ):
501+ def cmake_build (args , swiftc_exec , cmake_args , swift_flags , source_path ,
502+ build_dir , ninja_target = None ):
490503 """Configure with CMake and build with Ninja"""
491- swift_flags = ''
492504 if args .sysroot :
493- swift_flags = '-sdk %s' % args .sysroot
505+ swift_flags . append ( '-sdk %s' % args .sysroot )
494506 cmd = [
495507 args .cmake_bin , '-G' , 'Ninja' ,
496508 '-DCMAKE_MAKE_PROGRAM=%s' % args .ninja_bin ,
497509 '-DCMAKE_BUILD_TYPE:=Release' ,
498- '-DCMAKE_Swift_FLAGS=' + swift_flags ,
510+ '-DCMAKE_Swift_FLAGS=' + ' ' . join ( swift_flags ) ,
499511 '-DCMAKE_Swift_COMPILER:=%s' % (swiftc_exec ),
500512 ] + cmake_args + [source_path ]
501513 if args .verbose :
0 commit comments