Slide 1

Slide 1 text

SwiftϏϧυ஄ؙπΞʔ @giginet 2025/9/20 Swift Build͕࡞Δ৽͍͠ΤίγεςϜ

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

$ swift build —target MyExecutable

Slide 4

Slide 4 text

$ swift build —target MyExecutable Building for debugging... [8/8] Applying MyExecutable Build complete! (0.69s) $ Swift/swift-build-tour/MyExecutable .build/debug/MyExecutable Hello, world!

Slide 5

Slide 5 text

YDPEFQSPK1BDLBHFTXJGU YDPEFCVJMETXJGUCVJME TXJGUCVJMEͰΞϓϦ͸࡞Εͳ͍ʁ YDPEFCVJMEͰύοέʔδ͸ϏϧυͰ͖ͳ͍ʁ

Slide 6

Slide 6 text

Swift Package Manager Xcode / xcodebuild swiftc clang ld llbuild

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

Swift Package Manager Xcode / xcodebuild swiftc clang llbuild ld Swift Build NEW!!!!

Slide 9

Slide 9 text

͜ͷτʔΫͰΘ͔Δ͜ͱ w ϏϧυγεςϜͷجຊ w ֤Ϗϧυπʔϧͷ੹຿ͱશମ૾ w 4XJGU#VJMEͱ͸Կ͔ w 4XJGU#VJMEͷඞཁੑ w ಺෦ͷ؆୯ͳ࢓૊Έ w ࠓޙͷϩʔυϚοϓ

Slide 10

Slide 10 text

main.swift $ swiftc main.swift swiftc print("Hello, World!") ./main $ ./main Hello, World!

Slide 11

Slide 11 text

MyApp.o ContentView.o MyApp.swift ContentView.swift iOS SDK ./MyApp ld ίϯύΠϧ ϦϯΫ

Slide 12

Slide 12 text

MyApp.o ContentView.o $ swiftc -c MyApp.swift ContentView.swift MyApp.swift ContentView.swift $ ld -o MyApp \ -platform_version macos 15.0.0 15.0.0 \ -syslibroot $(xcrun --show-sdk-path) \ -lSystem \ -L $(xcrun --toolchain swift --show-sdk- path)/usr/lib/swift \ MyApp.o ContentView.o \ -lswiftCore \ -lobjc \ -lc++ ./MyApp ld swiftc/clang

Slide 13

Slide 13 text

Swift Compiler 5 — Open Source Swift Workshop, try! Swift Tokyo 2024, @kitasuke https://speakerdeck.com/kitasuke/open-source-swiftc-workshop?slide=5 thanks: @kitasuke

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

Ϗϧυϓϩηε w ࣮ߦϑΝΠϧͷੜ੒ w ίϯύΠϧͱϦϯΫ w Ϧιʔεͷม׵ w "TTFU$BUBMPH $PSF%BUB 9$4USJOH 4UPSZCPBSE w "QQ#VOEMFͷ૊Έཱͯ w #VJME4DSJQUͷ࣮ߦ ŋŋŋ

Slide 17

Slide 17 text

ϏϧυγεςϜͷඞཁੑ • େྔͷૢ࡞Λߴ଎ʹਖ਼͍͠ॱংͰ࣮ߦ͢Δඞཁ͕͋Δ • ႈ౳ੑͷ୲อ • ࣮ߦ͝ͱʹ݁Ռ͕ಉҰ • ΠϯΫϦϝϯλϧͳ࣮ߦ • มߋ͕͋ͬͨͱ͜Ζ͚ͩΛ࣮ߦ͠ɺෆཁͳ࣮ߦΛආ͚Δ • ༗໊ͳϏϧυγεςϜ • CMake, Bazel, Ninja https://github.com/swiftlang/swift-llbuild

Slide 18

Slide 18 text

llbuild • Low-level Build System • https://github.com/swiftlang/swift-llbuild • ֤ϏϧυλεΫΛϊʔυͱͯ͠ѻ͍ɺґଘ؅ཧ΍ฒྻ࣮ߦɺΩϟογϡͳͲ Λ؅ཧ͢Δ https://github.com/swiftlang/swift-llbuild

Slide 19

Slide 19 text

a.swiftΛίϯύΠϧ b.swiftΛίϯύΠϧ ΦϒδΣΫτϑΝΠϧΛϦϯΫ Asset CatalogͷίϯύΠϧ Code Sign ΞϓϦόϯυϧͷ࡞੒ #VJME5BTL

Slide 20

Slide 20 text

a.swiftΛίϯύΠϧ b.swiftΛίϯύΠϧ ΦϒδΣΫτϑΝΠϧΛϦϯΫ Asset CatalogͷίϯύΠϧ Code Sign ΞϓϦόϯυϧͷ࡞੒ #VJME5BTL a.swift a.o

Slide 21

Slide 21 text

a.swiftΛίϯύΠϧ b.swiftΛίϯύΠϧ ΦϒδΣΫτϑΝΠϧΛϦϯΫ Asset CatalogͷίϯύΠϧ Code Sign ΞϓϦόϯυϧͷ࡞੒ #VJME5BTL a.swift a.o b.swift a.o b.o MyApp Assets.xcasset Asset.car MyApp Asset.car MyApp.app MyApp.app MyApp.app b.o

Slide 22

Slide 22 text

a.swiftΛίϯύΠϧ b.swiftΛίϯύΠϧ ΦϒδΣΫτϑΝΠϧΛϦϯΫ Asset CatalogͷίϯύΠϧ Code Sign ΞϓϦόϯυϧͷ࡞੒ Ϗϧυάϥϑͷ࡞੒

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

llbuildϚχϑΣετ • શମͷϏϧυʹඞཁͳૢ࡞ΛҰཡͨ͠΋ͷ • ֤Ϗϧυεςοϓͷ࣮ߦίϚϯυɺೖྗɺग़ྗΛએݴ • ্ҐͷϏϧυγεςϜ(Xcode, SwiftPM)͕ੜ੒ • ͦΕͧΕͷλεΫ΍ґଘؔ܎ΛYAML/JSONͰهड़ • SwiftPM: .build/debug.yaml • Xcode: /manifest.json • llbuild͸ϚχϑΣετͷ࣮ߦͷΈΛߦ͏ https://github.com/swiftlang/swift-llbuild

Slide 25

Slide 25 text

lient: name: basic file-system: device-agnostic ools: {} argets: "MyExecutable-arm64-apple-macosx15.0-debug.exe": [""] "MyExecutable-arm64-apple-macosx15.0-debug.module": [""] "PackageStructure": [""] "main": ["",""] "test": ["",""] efault: "main" odes: "/Users/giginet/work/Swift/swift-build-tour/MyExecutable/Sources/": is-directory-structure: true content-exclusion-patterns: [".git",".build"] "/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/MyExecutable": is-mutated: true ommands: "/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/MyExecutable-entitlement.plist": tool: write-auxiliary-file inputs: ["",""] outputs: ["/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/MyExecutable-entitlement.plist"] description: "Write auxiliary file /Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/MyExecutable-entitlement.plist" "/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/MyExecutable.build/sources": tool: write-auxiliary-file inputs: ["","/Users/giginet/work/Swift/swift-build-tour/MyExecutable/Sources/main.swift"] outputs: ["/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/MyExecutable.build/sources"] description: "Write auxiliary file /Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/MyExecutable.build/sources" "/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/MyExecutable.product/Objects.LinkFileList": tool: write-auxiliary-file inputs: ["","/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/MyExecutable.build/main.swift.o"] outputs: ["/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/MyExecutable.product/Objects.LinkFileList"] description: "Write auxiliary file /Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/MyExecutable.product/Objects.LinkFileList" "/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/swift-version--44D72886A502174.txt": tool: write-auxiliary-file inputs: ["","/Applications/Xcode-16.4.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc"] outputs: ["/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/swift-version--44D72886A502174.txt"] always-out-of-date: "true" description: "Write auxiliary file /Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/swift-version--44D72886A502174.txt" "": tool: phony inputs: [""] outputs: [""] "": tool: phony inputs: ["/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/MyExecutable.build/main.swift.o","/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/Modules/MyExecutable.swiftmodule"] outputs: [""] "C.MyExecutable-arm64-apple-macosx15.0-debug.exe": tool: shell inputs: ["/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/MyExecutable.build/main.swift.o","/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/MyExecutable.product/Objects.LinkFileList"] outputs: ["/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/MyExecutable"] description: "Linking ./.build/arm64-apple-macosx/debug/MyExecutable" args: ["/Applications/Xcode-16.4.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc","-L","/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug","-o","/Users/giginet/work/Swift/swift-build-tour/ yExecutable/.build/arm64-apple-macosx/debug/MyExecutable","-module-name","MyExecutable","-Xlinker","-no_warn_duplicate_libraries","-emit-executable","-Xlinker","-alias","-Xlinker","_MyExecutable_main","-Xlinker","_main","-Xlinker","-rpath","- linker","@loader_path","@/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/MyExecutable.product/Objects.LinkFileList","-Xlinker","-rpath","-Xlinker","/Applications/Xcode-16.4.app/Contents/Developer/Toolchains/ codeDefault.xctoolchain/usr/lib/swift-5.5/macosx","-target","arm64-apple-macosx10.13","-Xlinker","-add_ast_path","-Xlinker","/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/Modules/MyExecutable.swiftmodule","-sdk","/ pplications/Xcode-16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.5.sdk","-F","/Applications/Xcode-16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks","-F","/Applications/Xcode-16.4.app/Contents/Developer/ latforms/MacOSX.platform/Developer/Library/PrivateFrameworks","-I","/Applications/Xcode-16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib","-L","/Applications/Xcode-16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib","-g"] "C.MyExecutable-arm64-apple-macosx15.0-debug.exe-entitlements": tool: shell inputs: ["/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/MyExecutable","/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/MyExecutable-entitlement.plist"] outputs: [""] description: "Applying debug entitlements to ./.build/arm64-apple-macosx/debug/MyExecutable" args: ["codesign","--force","--sign","-","--entitlements","/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/MyExecutable-entitlement.plist","/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/ ebug/MyExecutable"] "C.MyExecutable-arm64-apple-macosx15.0-debug.module": tool: shell inputs: ["/Users/giginet/work/Swift/swift-build-tour/MyExecutable/Sources/main.swift","/Users/giginet/work/Swift/swift-build-tour/MyExecutable/.build/arm64-apple-macosx/debug/swift-version--44D72886A502174.txt","/Users/giginet/work/Swift/swift-build-tour/ yExecutable/.build/arm64-apple-macosx/debug/MyExecutable.build/sources"]

Slide 26

Slide 26 text

"C.MyExecutable-arm64-apple-macosx15.0-debug.module": tool: shell inputs: [ "main.swift", ".build/arm64-apple-macosx/debug/swift-version--44D72886A502174.txt", ".build/arm64-apple-macosx/debug/MyExecutable.build/sources" ] outputs: [ ".build/arm64-apple-macosx/debug/MyExecutable.build/main.swift.o", ".build/arm64-apple-macosx/debug/Modules/MyExecutable.swiftmodule" ] description: "Compiling Swift Module 'MyExecutable' (1 sources)" args: ["/Applications/Xcode-16.4.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc","- module-name","MyExecutable","-emit-dependencies","-emit-module","-emit-module-path","/.build/arm64-apple-macosx/ debug/Modules/MyExecutable.swiftmodule","-output-file-map","/.build/arm64-apple-macosx/debug/MyExecutable.build/ output-file-map.json","-incremental","-c","@/.build/arm64-apple-macosx/debug/MyExecutable.build/sources","- I","/.build/arm64-apple-macosx/debug/Modules","-target","arm64-apple-macosx10.13","-enable-batch-mode","-index- store-path","/.build/arm64-apple-macosx/debug/index/store","-Onone","-enable-testing","-j16","-DSWIFT_PACKAGE","- DDEBUG","-module-cache-path","/.build/arm64-apple-macosx/debug/ModuleCache","-parseable-output","-Xfrontend","- entry-point-function-name","-Xfrontend","MyExecutable_main","-color-diagnostics","-swift-version","6","-sdk","/ Applications/Xcode-16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.5.sdk","-F","/ Applications/Xcode-16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks","-F","/ Applications/Xcode-16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/PrivateFrameworks","- I","/Applications/Xcode-16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib","-L","/ Applications/Xcode-16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib","-g","-Xcc","- isysroot","-Xcc","/Applications/Xcode-16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ MacOSX15.5.sdk","-Xcc","-F","-Xcc","/Applications/Xcode-16.4.app/Contents/Developer/Platforms/MacOSX.platform/ Developer/Library/Frameworks","-Xcc","-F","-Xcc","/Applications/Xcode-16.4.app/Contents/Developer/Platforms/ MacOSX.platform/Developer/Library/PrivateFrameworks","-Xcc","-fPIC","-Xcc","-g","-package-name","myexecutable"]

Slide 27

Slide 27 text

llbuild llbuildϚχϑΣετΛ࡞੒͢Δ CLIίϚϯυͷ࣮ߦ swiftc / ld / clang / ͦͷଞͷπʔϧ Swift Package Manager Xcode Xcode Project Package.swift ϓϩδΣΫτɾύοέʔδΛಡΈࠐΉ

Slide 28

Slide 28 text

xcbuild llbuild swiftc *.xcodeproj xcodebuild Xcode Swift Package Manager ~Xcode 16.2 Package.swift

Slide 29

Slide 29 text

ݱঢ়ͷϏϧυγεςϜͷ໰୊఺ w MMCVJMEͷϑϩϯτΤϯυͷ࣮૷͕ෳ਺ଘࡏ w 9DPEF YDCVJME  w 4XJGU1. w ͭͷϏϧυγεςϜʹػೳ͕ࠩੜ·ΕΔ w ରԠϓϥοτϑΥʔϜ w ϚΫϩɺύοέʔδϓϥάΠϯ https://forums.swift.org/t/evolving-swiftpm-builds-with-swift-build/77596

Slide 30

Slide 30 text

Swift Build llbuild swiftc *.xcodeproj xcodebuild Xcode Swift Package Manager Xcode 16.3~ Package.swift

Slide 31

Slide 31 text

CVJMETZTUFNTXJGUCVJME https://github.com/swiftlang/swift-package-manager/pull/8271

Slide 32

Slide 32 text

4XJGU1BDLBHF.BOBHFSͷϏϧυϞʔυ # Native Build mode(Default) $ swift build —build-system=native # SwiftBuild mode $ swift build —build-system=swiftbuild

Slide 33

Slide 33 text

Swift Build llbuild swiftc *.xcodeproj xcodebuild Xcode Swift Package Manager Xcode 16.3~ Package.swift swiftbuild native

Slide 34

Slide 34 text

4XJGU#VJMEͷ໨తϏϧυମݧͷ౷Ұ w 4XJGU1BDLBHF.BOBHFSͱ9DPEFͰϏϧυύε͕ҟͳΔ w ػೳ͕ࠩ͋Δ w 9DPEFϚΫϩ΍1BDLBHF1MVHJOΛ௚઀ѻ͑ͳ͍ w 4XJGU1.J04޲͚ʹϏϧυ͕Ͱ͖ͳ͍ w ΫϩείϯύΠϧͷͨΊͷج൫ͷఏڙ w "QQMF"OESPJE-JOVY8JOEPXT8"4. https://forums.swift.org/t/evolving-swiftpm-builds-with-swift-build/77596

Slide 35

Slide 35 text

4XJGU#VJMEͷ໨త৽͍͠ػೳͷͨΊͷ֦ு w 4XJGU1BDLBHF.BOBHFSͰੜ੒ՄೳͳϓϩμΫτλΠϓʹ͸੍ݶ͕͋Δ w ྫ͑͹ΞϓϦ͸࡞Εͳ͍ͳͲ w 9DPEFͷϏϧυج൫ͱἧ͏͜ͱͰɺΑΓ༷ʑͳΦϓγϣϯ΍ϓϩμΫτͷछ ྨʹରԠͰ͖Δ https://forums.swift.org/t/evolving-swiftpm-builds-with-swift-build/77596

Slide 36

Slide 36 text

4XJGU#VJMEͷ໨తϏϧυ࠷దԽ w ϏϧυγεςϜͷ࡮৽ʹΑΔϏϧυ࠷దԽ w ฒྻ౓ͷ޲্ͳͲ w &YQMJDJUMZ#VJME.PEVMFͷಋೖ w ϏϧυάϥϑΛઌʹߏஙͯ͠࠷దԽ͢Δ৽͍͠Ϗϧυख๏ w ΠϯΫϦϝϯλϧϏϧυͷϏϧυΩϟογϡར༻཰ͷ޲্ w 9DPEF͔Βඪ४Խ w ͭ·Γྑ͍ײ͡ʹͳΔ https://forums.swift.org/t/evolving-swiftpm-builds-with-swift-build/77596

Slide 37

Slide 37 text

4XJGU#VJMEͷಈ࡞ w 1*'͔Β8PSLTQBDFΛಡΈऔΔ w λεΫΛߏஙͯ͠#VJME1MBOΛ࡞Δ 48#5BTL$POTUSVDUJPO  w MMCVJMEͱ௨৴ͯ͠#VJME1MBOΛ࣮ߦ 48#5BTL&YFDVUJPO https://github.com/swiftlang/swift-build/blob/main/SwiftBuild.docc/Architecture/build-system-architecture.md

Slide 38

Slide 38 text

4XJGU#VJMEͷಈ࡞ w 1*'͔Β8PSLTQBDFΛಡΈऔΔ w λεΫΛߏஙͯ͠#VJME1MBOΛ࡞Δ 48#5BTL$POTUSVDUJPO  w MMCVJMEͱ௨৴ͯ͠#VJME1MBOΛ࣮ߦ 48#5BTL&YFDVUJPO https://github.com/swiftlang/swift-build/blob/main/SwiftBuild.docc/Architecture/build-system-architecture.md

Slide 39

Slide 39 text

1SPKFDU*OUFSDIBOHF'PSNBU w 4XJGU#VJMEʹϏϧυϦΫΤετΛૹ৴͢ΔͨΊͷϓϩδΣΫτදݱ w 9DPEFϓϩδΣΫτͷΑ͏ͳߏ଄Λ+40/Ͱදݱ w 9DPEF4XJGU1BDLBHF.BOBHFS͕ͦΕͧΕ1*'Λੜ੒ͯ͠4XJGU#VJMEʹ ϦΫΤετ https://github.com/swiftlang/swift-build/blob/main/SwiftBuild.docc/Core/project-interchange-format.md

Slide 40

Slide 40 text

Swift Build llbuild swiftc *.xcodeproj xcodebuild Xcode Swift Package Manager Xcode 16.3~ Package.swift PIF PIF

Slide 41

Slide 41 text

4XJGU#VJMEͰ1*'ΛϏϧυ͢Δ # Dump PIF from Xcode Project $ /usr/bin/xcrun xcodebuild -dumpPIF /path/to/MyApp.pif -project MyApp.xcodeproj # Dump PIF from Swift Package $ swift package dump-pif > MyPackage.pif

Slide 42

Slide 42 text

}, { "buildSettings" : { "CLANG_ENABLE_OBJC_ARC" : "YES", "CODE_SIGNING_REQUIRED" : "NO", "CODE_SIGN_IDENTITY" : "", "COPY_PHASE_STRIP" : "YES", "DEBUG_INFORMATION_FORMAT" : "dwarf-with-dsym", "DRIVERKIT_DEPLOYMENT_TARGET" : "19.0", "DYLIB_INSTALL_NAME_BASE" : "@rpath", "ENABLE_TESTABILITY" : "YES", "ENABLE_TESTING_SEARCH_PATHS" : "YES", "ENTITLEMENTS_REQUIRED" : "NO", "FRAMEWORK_SEARCH_PATHS[__platform_filter=ios;ios-simulator]" : [ "$(inherited)", "$(PLATFORM_DIR)/Developer/Library/Frameworks" ], "FRAMEWORK_SEARCH_PATHS[__platform_filter=macos]" : [ "$(inherited)", "$(PLATFORM_DIR)/Developer/Library/Frameworks" ], "FRAMEWORK_SEARCH_PATHS[__platform_filter=tvos;tvos-simulator]" : [ "$(inherited)", "$(PLATFORM_DIR)/Developer/Library/Frameworks" ], "GCC_OPTIMIZATION_LEVEL" : "s", "GCC_PREPROCESSOR_DEFINITIONS" : [ "$(inherited)", "SWIFT_PACKAGE" ], "IPHONEOS_DEPLOYMENT_TARGET" : "12.0", "IPHONEOS_DEPLOYMENT_TARGET[__platform_filter=ios-maccatalyst]" : "13.0", "KEEP_PRIVATE_EXTERNS" : "NO", "MACOSX_DEPLOYMENT_TARGET" : "10.13", "OTHER_LDRFLAGS" : [ ], "PRODUCT_NAME" : "$(TARGET_NAME)",

Slide 43

Slide 43 text

4XJGU#VJMEͰ1*'ΛϏϧυ͢Δ # Build PIF with Swift Build $ swbuild build \ —con f iguration release \ —target MyApp MyApp.pif \ —derivedData DerivedData swbuild = Swift Buildʹ෇ଐ͍ͯ͠ΔCLIπʔϧ

Slide 44

Slide 44 text

$ swbuild build \ --configuration release MyApp.pif \ —-target MyApp \ --derivedDataPath DerivedData 96 {"kind":"planningOperationStarted","planningOperationID":"4B9C6712 -57C2-4019-AD58-F4B09217C4DB"} 201 {"executionDescription":"Compute target dependency graph","id":1,"kind":"taskStarted","ruleInfo":"ComputeTargetDepend encyGraph","serializedDiagnosticsPaths": [],"signature":"\u0001compute_target_graph"} 347 {"appendToOutputStream":true,"childDiagnostics":[],"component": {"componentType":"default"},"fixIts":[],"kind":"note","location": {"locationType":"unknown"},"locationContext": {"locationType":"globalTask","taskID":1},"locationContext2": {"taskSignature":"\u0001compute_target_graph"},"message":"Building

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

4XJGU#VJMEͷಈ࡞ w 1*'͔Β8PSLTQBDFΛಡΈऔΔ w λεΫΛߏஙͯ͠#VJME1MBOΛ࡞Δ 48#5BTL$POTUSVDUJPO  w MMCVJMEͱ௨৴ͯ͠#VJME1MBOΛ࣮ߦ 48#5BTL&YFDVUJPO https://github.com/swiftlang/swift-build/blob/main/SwiftBuild.docc/Architecture/build-system-architecture.md

Slide 47

Slide 47 text

https://github.com/swiftlang/swift-build/tree/main/Sources/SWBTaskExecution/TaskActions

Slide 48

Slide 48 text

%ZOBNJD5BTL&YFDVUJPO https://github.com/swiftlang/swift-build/blob/main/SwiftBuild.docc/Architecture/dynamic-tasks.md w 4XJGU#VJME͕MMCVJMEʹλεΫཁٻΛ͢Δͱ͖ʹಈతʹ࣮ߦܭըΛཱͯΔ࢓ ૊Έ w جຊతʹ͸MMCVJMEϚχϑΣετΛੜ੒ͦ͠ΕΛ࣮ߦ͢Δ w ࣮ߦ࣌ʹ͔͠൑໌͠ͳ͍λεΫΛѻ͏ͨΊʹMMCVJMEͱ૒ํ޲ʹ௨৴ͯ͠ಈ తʹ࣮ߦܭըΛཱͯΔ

Slide 49

Slide 49 text

Swift Build llbuild swiftc *.xcodeproj xcodebuild Xcode Swift Package Manager Current Package.swift

Slide 50

Slide 50 text

Swift Build llbuild swiftc *.xcodeproj xcodebuild Xcode Swift Package Manager Package.swift PIF llbuild Manifest

Slide 51

Slide 51 text

4XJGU#VJMEඪ४ԽͷͨΊʹ w OBUJWFϏϧυϞʔυͱͷػೳޓ׵ੑ w 4XJGU#VJMEͰαϙʔτ͞Ε͍ͯͳ͍4XJGU1BDLBHFͷػೳ͕͋Δ w ϚΫϩ w ϓϥάΠϯ w ϚϧνϓϥοτϑΥʔϜରԠ w 4XJGU#VJME͸8JOEPXT-JOVY"OESPJEαϙʔτ͕ෆ׬શ https://forums.swift.org/t/evolving-swiftpm-builds-with-swift-build/77596

Slide 52

Slide 52 text

֤πʔϧͷ໾ׂ xcodebuild/SwiftPM xcodeproj, Swift PackageΛύʔεͨ͠ΓɺґଘղܾΛͯ͠PIFΛੜ੒ Swift Build ϓϩδΣΫτఆ͔ٛΒλεΫΛεέδϡʔϦϯάɺllbuild޲͚ͷϚχϑΣε τΛੜ੒ llbuild ϏϧυϚχϑΣετʹԊͬͯϏϧυϓϩηεΛ࣮ߦ swiftc/clang/ld ίϯύΠϧ΍ϦϯΫΛ࣮ߦ ·ͱΊ

Slide 53

Slide 53 text

·ͱΊ w 4XJGU#VJME͕ొ৔ͨ͜͠ͱͰ4XJGU1.ͱ9DPEFϏϧυͷύε͕౷߹͞ΕΔ w ͭͷϏϧυγεςϜͷػೳࠩҟ͕ຒ·͍ͬͯ͘ w ΫϩεϓϥοτϑΥʔϜϏϧυ΋͞Βʹਪਐ͞ΕΔ w ΞʔΩςΫνϟ͕Ұ৽͞Εͨ͜ͱͰߴ଎Խ΍࠷దԽ͕ΑΓਐΜͰ͍͘ w ΦʔϓϯιʔεԽ͞Εͨ͜ͱͰɺϒϥοΫϘοΫεͩͬͨ9DPEFϏϧυͷ ಈ࡞ৄࡉΛௐࠪ͠΍͘͢ͳͬͨ https://forums.swift.org/t/evolving-swiftpm-builds-with-swift-build/77596

Slide 54

Slide 54 text

͝ਗ਼ௌ ͋Γ͕ͱ͏ ͍͟͝·ͨ͠