[swift-dev] History of build-script, build-script-impl, and CMake?

Brian Gesiak modocache at gmail.com
Fri Sep 8 10:13:19 CDT 2017

Hello all,

I'm hoping a long-time Swift contributor can help shed some light on
how the apple/swift repository ended up with a utils/build-script, a
utils/build-script-impl, and CMake files.

Based on the Git history, I've pieced together the following:

- July 17, 2010: Chris Lattner first adds a Makefile to apple/swift in
his initial checkin. Until its eventual removal in 2014, the Makefile
only ever built apple/swift, and it required users to have built LLVM
in advance. [1].
- July 14, 2011: Doug Gregor adds CMake files to build apple/swift [2].
- February 6, 2013: Joe Groff adds utils/buildbot-script.sh. This
appears very similar to the modern-day uitls/build-script-impl. It
configures and builds LLVM, Clang, and Swift [3].
- February 25, 2014: Ted Kremenek removes the original Makefile Chris
added in 2010. I believe only CMake-based builds became possible as of
this point [4].
- December 23, 2014: Dmitri Gribenko (now no longer working on the
project at Apple) rewrites a large portion of the CMake files, and
deletes utils/buildbot-script.sh [5].
- October 30, 2015: Ashley Gardland "adds back" a bunch of build
files, including utils/build-script and utils/build-script-impl [6].

Could someone familiar with the apple/swift project during the years
2010 until 2015 shed some light on how the project was built during
this time? Specifically:

- Did most developers use the Makefile? What replaced the Makefile?
Did developers configure and build LLVM and Clang themselves,
manually, without using a script?
- Was the utils/buildbot-script.sh the precursor for
utils/build-script and utils/build-script-impl?
- What were the files that were "added back" in [6]? Did they exist in
some form internally to Apple? Were they used by project developers at
the time, or were they written solely for the benefit of external,
open-source contributors?
- Why do both utils/build-script and utils/build-script-impl exist?
The fact that they were "added back" makes me think that they grew
over time, and so were not written for the first time as part of the
commit in [6].

Thanks in advance to anyone who can indulge my curiosity here! :)

- Brian Gesiak

[1] https://github.com/apple/swift/commit/afc81c1855bf711315b8e5de02db138d3d487eeb
[2] https://github.com/apple/swift/commit/86ab76d62468241e03029e3e0790e4a0c8fbe3c1
[3] https://github.com/apple/swift/commit/482826925812c8aa6d7ef861adbe36b26a4dedda
[4] https://github.com/apple/swift/commit/f383eb90abc0afd6f78c7589005b61916e314870
[5] https://github.com/apple/swift/commit/6670bb76ecc71a35ac5fa8f54cb81de6f555072f
[6] https://github.com/apple/swift/commit/4ac9c80809450e4566946f40bbdb639b2ba745d8

More information about the swift-dev mailing list