Skip to content
This repository has been archived by the owner on Sep 1, 2021. It is now read-only.

Bootstrapping CC

gitkaste edited this page Mar 11, 2011 · 6 revisions

Since Xcode is no longer free, but Homebrew is, we need a way to provide the CC toolchain to Homebrew users without them having to pay (no cost arguments here please).

Tools we need:

  • CC
  • GNUMake
  • Bison/yacc
  • binutils

Which GCC?

LLVM or GCC 4.2 or GCC 4.5?

Homebrew as a policy doesn't dupe, because it's a PITA to support. So deviating from what Apple provide would hurt us. So we should go with LLVM. But half of open source software has LLVM compile issues so we should go with GCC. Not picking the latest GCC seems ridiculous, but open source software is tweaked to build with 4.2 on OS X and may have issues if we go with 4.5

  • I'd say deviating on the compiler is not an issue, since we probably have different requirements (first and foremost as you mentioned that apple doesn't care about FOSS packages). I may not be representative but I use gcc-4.6 and used 4.5 before with less issues than 4.2. Does Apple do any customization or special build flags for it's gcc? (kaste)

Bootstrapping

Build binaries and host them somewhere. You can't build CC without a CC.

  • we could utilize the prebuilt gcc from high performance computing and build our own but that is not the only thing required for bootstrapping, so we'd need to build the smaller ones ourselves (kaste)

Stealing the relevant PKGs from the Xcode DMG

We can remove 5 or 6 of the .pkgs from the Xcode DMG and stick them as a torrent on some torrent sites. Apple prolly don't care, it's not Xcode it's just the unix tools. This is the best option if we don't mind being dirty thieves.

  • Not a wise idea, Steve's hobby is suing, remember. (kaste)

Distribute binaries compiled from Apple's open source code

Apple has to distribute the source code used to create their gcc binaries, to follow the GPL. For instance, the source of the gcc version included in Xcode 3.2.4 seems to be available here (the version number matches gcc --version: Apple Inc. build 5664).