Build a Binary
summary
Pressing Build turns Swift and C family sources into a Mach-O universal binary via the Swift compiler and clang (both using LLVM), assembler, and the linker, coordinated by the compiler driver and Xcode’s build system (xcbuild / llbuild). DerivedData logs (parsed with XCActivityLog tools) reveal toolchain paths and that Swift Playgrounds still emits the error clang Target is not supported for packages with C/Obj‑C targets. Spotify uses Bazel with rules_xcodeproj to generate Xcode projects and run cached, parallel builds successfully; the Playground/Firebase failure remains unresolved.
AI-written summary · about
chapters (17)
- 0:00Introduction and setup
- 3:39Why pressing build isn't simple
- 11:41How compilers work
- 15:34Xcode's three compilers
- 20:33Investigating Swift playgrounds build
- 25:26What is a build system
- 29:39Xcode build system deep dive
- 32:49Compiler errors while coding
- 34:55Compiler driver explained
- 37:01Assembler and linker basics
- 41:17Static vs dynamic libraries
- 44:05What is a binary file
- 44:49Alternative build systems
- 48:41Artifact vs task-based systems
- 50:29Unsolved playground mystery
- 51:53Lessons from rabbit holes
- 54:02Curiosity and closing thoughts
related talks
41mBuild A Binary
41mBuild a Binary
43mBuilding iOS Apps without Xcode
28mUtilizing Bazel for Cross-Platform and Cross-Architecture Compilation an...
23mPolyglot Builds with Bazel
28mFast reliable Swift builds with Buck
36mPutting together the best CI workflow for mobile apps
37mCross-Building Strategies in the Age of C++ Package Managers
