@@ -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