@@ -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,12 +380,10 @@ 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
384+ base_cmake_flags = []
385385 for target in targets :
386386 swift_flags .append ('-target %s' % target )
387- base_cmake_flags = ['-DCMAKE_Swift_FLAGS=' + ' ' .join (swift_flags )]
388387 if platform .system () == 'Darwin' :
389388 base_cmake_flags .append ('-DCMAKE_OSX_DEPLOYMENT_TARGET=%s' % macos_deployment_target )
390389
@@ -394,17 +393,22 @@ def build_using_cmake(args, toolchain_bin, build_dir):
394393 dependencies_dir = os .path .join (driver_dir , 'dependencies' )
395394
396395 # 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 )
398398 # 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 )
400401 # 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 )
402404 # 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 )
404407 # 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 )
406410
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 ):
408412 print ('Building llbuild for target: %s' % target )
409413 llbuild_source_dir = os .path .join (os .path .dirname (args .package_path ), 'llbuild' )
410414 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
426430 # on some machines. This is also Darwin-specific...
427431 if platform .system () == 'Darwin' :
428432 llbuild_cmake_flags .append ('-DSQLite3_LIBRARY=%s/usr/lib/libsqlite3.tbd' % args .sysroot )
433+ llbuild_swift_flags = swift_flags [:]
429434
430435 # 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' )
432438
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 ):
434440 print ('Building TSC for target: %s' % target )
435441 tsc_source_dir = os .path .join (os .path .dirname (args .package_path ), 'swift-tools-support-core' )
436442 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 )
438446
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 ):
440448 print ('Building Yams for target: %s' % target )
441449 yams_source_dir = os .path .join (os .path .dirname (args .package_path ), 'yams' )
442450 yams_build_dir = os .path .join (build_dir , 'yams' )
443- yams_flags = base_cmake_flags + [
451+ yams_cmake_flags = base_cmake_flags + [
444452 '-DCMAKE_C_COMPILER:=clang' ,
445453 '-DBUILD_SHARED_LIBS=OFF' ]
446454
447455 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 )
450458 else :
451- yams_flags .append ('-DCMAKE_C_FLAGS=-fPIC -target %s' % target )
459+ yams_cmake_flags .append ('-DCMAKE_C_FLAGS=-fPIC -target %s' % target )
452460 if args .dispatch_build_dir :
453- yams_flags .append (get_dispatch_cmake_arg (args ))
461+ yams_cmake_flags .append (get_dispatch_cmake_arg (args ))
454462
455463 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 )
459468
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 ):
461470 print ('Building Argument Parser for target: %s' % target )
462471 parser_source_dir = os .path .join (os .path .dirname (args .package_path ), 'swift-argument-parser' )
463472 parser_build_dir = os .path .join (build_dir , 'swift-argument-parser' )
464473 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 )
467478 return
468479
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 ):
470481 print ('Building Swift Driver for target: %s' % target )
471482 driver_source_dir = args .package_path
472483 driver_build_dir = build_dir
473484 dependencies_dir = os .path .join (build_dir , 'dependencies' )
474485 # TODO: Enable Library Evolution
475- swift_flags = ''
486+ driver_swift_flags = swift_flags [:]
476487 flags = [
477488 '-DLLBuild_DIR=' + os .path .join (os .path .join (dependencies_dir , 'llbuild' ), 'cmake/modules' ),
478489 '-DTSC_DIR=' + os .path .join (os .path .join (dependencies_dir , 'swift-tools-support-core' ), 'cmake/modules' ),
479490 '-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' )
483494 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 )
485497
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 ):
487500 """Configure with CMake and build with Ninja"""
488- swift_flags = ''
489501 if args .sysroot :
490- swift_flags = '-sdk %s' % args .sysroot
502+ swift_flags . append ( '-sdk %s' % args .sysroot )
491503 cmd = [
492504 args .cmake_bin , '-G' , 'Ninja' ,
493505 '-DCMAKE_MAKE_PROGRAM=%s' % args .ninja_bin ,
494506 '-DCMAKE_BUILD_TYPE:=Release' ,
495- '-DCMAKE_Swift_FLAGS=' + swift_flags ,
507+ '-DCMAKE_Swift_FLAGS=' + ' ' . join ( swift_flags ) ,
496508 '-DCMAKE_Swift_COMPILER:=%s' % (swiftc_exec ),
497509 ] + cmake_args + [source_path ]
498510 if args .verbose :
0 commit comments