Skip to content

Commit fe8c477

Browse files
add swift-collections to CMakeLists and bootstrap
1 parent 767985f commit fe8c477

File tree

5 files changed

+65
-44
lines changed

5 files changed

+65
-44
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ if(FIND_PM_DEPS)
5151
endif()
5252

5353
find_package(ArgumentParser CONFIG REQUIRED)
54+
find_package(swift-collections CONFIG REQUIRED)
5455
find_package(SwiftCrypto CONFIG REQUIRED)
5556
find_package(SwiftDriver CONFIG REQUIRED)
5657
endif()

Sources/Build/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ add_library(Build
1616
target_link_libraries(Build PUBLIC
1717
TSCBasic
1818
Basics
19+
OrderedCollections
1920
PackageGraph
2021
LLBuildManifest
2122
SPMBuildCore

Sources/PackageGraph/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ add_library(PackageGraph
3636
target_link_libraries(PackageGraph PUBLIC
3737
TSCBasic
3838
Basics
39+
OrderedCollections
3940
PackageLoading
4041
PackageModel
4142
SourceControl

Sources/PackageLoading/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ add_library(PackageLoading
2222
target_link_libraries(PackageLoading PUBLIC
2323
TSCBasic
2424
Basics
25+
OrderedCollections
2526
PackageModel
2627
SourceControl
2728
TSCUtility)

Utilities/bootstrap

Lines changed: 61 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -166,14 +166,16 @@ def add_test_args(parser):
166166

167167
def parse_global_args(args):
168168
"""Parses and cleans arguments necessary for all actions."""
169-
args.build_dir = os.path.abspath(args.build_dir)
170-
args.project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
171-
args.tsc_source_dir = os.path.join(args.project_root, "..", "swift-tools-support-core")
172-
args.yams_source_dir = os.path.join(args.project_root, "..", "yams")
169+
args.build_dir = os.path.abspath(args.build_dir)
170+
args.project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
171+
args.source_root = os.path.join(args.project_root, "Sources")
173172
args.swift_argument_parser_source_dir = os.path.join(args.project_root, "..", "swift-argument-parser")
174-
args.swift_driver_source_dir = os.path.join(args.project_root, "..", "swift-driver")
175-
args.swift_crypto_source_dir = os.path.join(args.project_root, "..", "swift-crypto")
176-
args.source_root = os.path.join(args.project_root, "Sources")
173+
args.swift_collections_source_dir = os.path.join(args.project_root, "..", "swift-collections")
174+
args.swift_crypto_source_dir = os.path.join(args.project_root, "..", "swift-crypto")
175+
args.swift_driver_source_dir = os.path.join(args.project_root, "..", "swift-driver")
176+
args.tsc_source_dir = os.path.join(args.project_root, "..", "swift-tools-support-core")
177+
args.yams_source_dir = os.path.join(args.project_root, "..", "yams")
178+
177179

178180
if platform.system() == 'Darwin':
179181
args.sysroot = call_output(["xcrun", "--sdk", "macosx", "--show-sdk-path"], verbose=args.verbose)
@@ -305,11 +307,12 @@ def build(args):
305307
build_llbuild(args)
306308

307309
if args.bootstrap:
308-
build_tsc(args)
309-
build_yams(args)
310310
build_swift_argument_parser(args)
311-
build_swift_driver(args)
311+
build_swift_collections(args)
312312
build_swift_crypto(args)
313+
build_swift_driver(args)
314+
build_tsc(args)
315+
build_yams(args)
313316

314317
build_swiftpm_with_cmake(args)
315318
build_swiftpm_with_swiftpm(args,integrated_swift_driver=False)
@@ -502,17 +505,6 @@ def build_llbuild(args):
502505
llbuild_source_dir = get_llbuild_source_path(args)
503506
build_with_cmake(args, flags, llbuild_source_dir, args.llbuild_build_dir)
504507

505-
def build_tsc(args):
506-
note("Building TSC")
507-
args.tsc_build_dir = os.path.join(args.target_dir, "tsc")
508-
509-
cmake_flags = []
510-
if platform.system() == 'Darwin':
511-
cmake_flags.append("-DCMAKE_C_FLAGS=-target %s%s" % (get_build_target(args), g_macos_deployment_target))
512-
cmake_flags.append("-DCMAKE_OSX_DEPLOYMENT_TARGET=%s" % g_macos_deployment_target)
513-
514-
build_with_cmake(args, cmake_flags, args.tsc_source_dir, args.tsc_build_dir)
515-
516508
def build_swift_argument_parser(args):
517509
note("Building swift-argument-parser")
518510
args.swift_argument_parser_build_dir = os.path.join(args.target_dir, "swift-argument-parser")
@@ -526,19 +518,27 @@ def build_swift_argument_parser(args):
526518
cmake_flags.append("-DBUILD_EXAMPLES=NO")
527519
build_with_cmake(args, cmake_flags, args.swift_argument_parser_source_dir, args.swift_argument_parser_build_dir)
528520

529-
def build_yams(args):
530-
note("Building Yams")
531-
args.yams_build_dir = os.path.join(args.target_dir, "yams")
521+
def build_swift_collections(args):
522+
note("Building swift-collections")
523+
args.swift_collections_build_dir = os.path.join(args.target_dir, "swift-collections")
532524

533525
cmake_flags = []
534526
if platform.system() == 'Darwin':
535527
cmake_flags.append("-DCMAKE_C_FLAGS=-target %s%s" % (get_build_target(args), g_macos_deployment_target))
536528
cmake_flags.append("-DCMAKE_OSX_DEPLOYMENT_TARGET=%s" % g_macos_deployment_target)
537-
else:
538-
if args.foundation_build_dir:
539-
cmake_flags.append(get_foundation_cmake_arg(args))
529+
530+
build_with_cmake(args, cmake_flags, args.swift_collections_source_dir, args.swift_collections_build_dir)
540531

541-
build_with_cmake(args, cmake_flags, args.yams_source_dir, args.yams_build_dir)
532+
def build_swift_crypto(args):
533+
note("Building SwiftCrypto")
534+
args.swift_crypto_build_dir = os.path.join(args.target_dir, "swift-crypto")
535+
536+
cmake_flags = []
537+
if platform.system() == 'Darwin':
538+
cmake_flags.append("-DCMAKE_C_FLAGS=-target %s%s" % (get_build_target(args), g_macos_deployment_target))
539+
cmake_flags.append("-DCMAKE_OSX_DEPLOYMENT_TARGET=%s" % g_macos_deployment_target)
540+
541+
build_with_cmake(args, cmake_flags, args.swift_crypto_source_dir, args.swift_crypto_build_dir)
542542

543543
def build_swift_driver(args):
544544
note("Building SwiftDriver")
@@ -555,17 +555,31 @@ def build_swift_driver(args):
555555
cmake_flags.append("-DCMAKE_OSX_DEPLOYMENT_TARGET=%s" % g_macos_deployment_target)
556556

557557
build_with_cmake(args, cmake_flags, args.swift_driver_source_dir, args.swift_driver_build_dir)
558-
559-
def build_swift_crypto(args):
560-
note("Building SwiftCrypto")
561-
args.swift_crypto_build_dir = os.path.join(args.target_dir, "swift-crypto")
558+
559+
def build_tsc(args):
560+
note("Building TSC")
561+
args.tsc_build_dir = os.path.join(args.target_dir, "tsc")
562562

563563
cmake_flags = []
564564
if platform.system() == 'Darwin':
565565
cmake_flags.append("-DCMAKE_C_FLAGS=-target %s%s" % (get_build_target(args), g_macos_deployment_target))
566566
cmake_flags.append("-DCMAKE_OSX_DEPLOYMENT_TARGET=%s" % g_macos_deployment_target)
567567

568-
build_with_cmake(args, cmake_flags, args.swift_crypto_source_dir, args.swift_crypto_build_dir)
568+
build_with_cmake(args, cmake_flags, args.tsc_source_dir, args.tsc_build_dir)
569+
570+
def build_yams(args):
571+
note("Building Yams")
572+
args.yams_build_dir = os.path.join(args.target_dir, "yams")
573+
574+
cmake_flags = []
575+
if platform.system() == 'Darwin':
576+
cmake_flags.append("-DCMAKE_C_FLAGS=-target %s%s" % (get_build_target(args), g_macos_deployment_target))
577+
cmake_flags.append("-DCMAKE_OSX_DEPLOYMENT_TARGET=%s" % g_macos_deployment_target)
578+
else:
579+
if args.foundation_build_dir:
580+
cmake_flags.append(get_foundation_cmake_arg(args))
581+
582+
build_with_cmake(args, cmake_flags, args.yams_source_dir, args.yams_build_dir)
569583

570584
def add_rpath_for_cmake_build(args, rpath):
571585
"Adds the given rpath to the CMake-built swift-build"
@@ -581,11 +595,12 @@ def build_swiftpm_with_cmake(args):
581595
if args.bootstrap:
582596
cmake_flags = [
583597
get_llbuild_cmake_arg(args),
584-
"-DTSC_DIR=" + os.path.join(args.tsc_build_dir, "cmake/modules"),
585-
"-DYams_DIR=" + os.path.join(args.yams_build_dir, "cmake/modules"),
586-
"-DArgumentParser_DIR=" + os.path.join(args.swift_argument_parser_build_dir, "cmake/modules"),
587-
"-DSwiftDriver_DIR=" + os.path.join(args.swift_driver_build_dir, "cmake/modules"),
588-
"-DSwiftCrypto_DIR=" + os.path.join(args.swift_crypto_build_dir, "cmake/modules"),
598+
"-DArgumentParser_DIR=" + os.path.join(args.swift_argument_parser_build_dir, "cmake/modules"),
599+
"-DSwiftCollections_DIR=" + os.path.join(args.swift_collections_build_dir, "cmake/modules"),
600+
"-DSwiftCrypto_DIR=" + os.path.join(args.swift_crypto_build_dir, "cmake/modules"),
601+
"-DSwiftDriver_DIR=" + os.path.join(args.swift_driver_build_dir, "cmake/modules"),
602+
"-DYams_DIR=" + os.path.join(args.yams_build_dir, "cmake/modules"),
603+
"-DTSC_DIR=" + os.path.join(args.tsc_build_dir, "cmake/modules"),
589604
"-DFIND_PM_DEPS:BOOL=YES",
590605
]
591606
else:
@@ -603,10 +618,11 @@ def build_swiftpm_with_cmake(args):
603618
add_rpath_for_cmake_build(args, args.llbuild_build_dir)
604619

605620
if platform.system() == "Darwin":
606-
add_rpath_for_cmake_build(args, os.path.join(args.yams_build_dir, "lib"))
607621
add_rpath_for_cmake_build(args, os.path.join(args.swift_argument_parser_build_dir, "lib"))
608-
add_rpath_for_cmake_build(args, os.path.join(args.swift_driver_build_dir, "lib"))
609-
add_rpath_for_cmake_build(args, os.path.join(args.swift_crypto_build_dir, "lib"))
622+
add_rpath_for_cmake_build(args, os.path.join(args.swift_collections_build_dir, "lib"))
623+
add_rpath_for_cmake_build(args, os.path.join(args.swift_crypto_build_dir, "lib"))
624+
add_rpath_for_cmake_build(args, os.path.join(args.swift_driver_build_dir, "lib"))
625+
add_rpath_for_cmake_build(args, os.path.join(args.yams_build_dir, "lib"))
610626

611627
def build_swiftpm_with_swiftpm(args, integrated_swift_driver):
612628
"""Builds SwiftPM using the version of SwiftPM built with CMake."""
@@ -699,12 +715,13 @@ def get_swiftpm_env_cmd(args):
699715
if args.bootstrap:
700716
libs_joined = ":".join([
701717
os.path.join(args.bootstrap_dir, "lib"),
702-
os.path.join(args.tsc_build_dir, "lib"),
703718
os.path.join(args.llbuild_build_dir, "lib"),
704-
os.path.join(args.yams_build_dir, "lib"),
705719
os.path.join(args.swift_argument_parser_build_dir, "lib"),
706-
os.path.join(args.swift_driver_build_dir, "lib"),
720+
os.path.join(args.swift_collections_build_dir, "lib"),
707721
os.path.join(args.swift_crypto_build_dir, "lib"),
722+
os.path.join(args.swift_driver_build_dir, "lib"),
723+
os.path.join(args.tsc_build_dir, "lib"),
724+
os.path.join(args.yams_build_dir, "lib"),
708725
] + args.target_info["paths"]["runtimeLibraryPaths"])
709726

710727
if platform.system() == 'Darwin':

0 commit comments

Comments
 (0)