Apparently not in practice, because LLVM's copyleft license hasn't stopped large amounts of free software from being created (for example, rustc).
Like gcc has built on mac for longer than Apple (then next step) was using gcc.
I think under those conditions, the FSF's boycott was fair.
The earliest snapshot[1] of opensource.apple.com on the Internet Archive suggests that the compiler sources were available (under "cc") as of October 12, 2000.
Although that snapshot suggests the first release was version cc-792, I can't find older than cc-798 on the site today. But the NOTES file[2] is interesting, detailing NeXT's/Apple's earlier changes including release codenames. (3/19/97: "This is the first fully functional compiler for the PowerPC.")
I would guess that the earliest Apple shipped gcc was with ProjectBuilder in the Mac OS X Developer Preview which was in 1999. Maybe things start to get blurry with NeXT, WebObjects, etc. but it doesn't _seem_ like Apple was shirking it's responsibilities under the GPL.
0: https://apple.slashdot.org/story/00/03/17/1656240/apple-plan...
1: https://web.archive.org/web/20001012121451/http://www.openso...
2: https://opensource.apple.com/source/cc/cc-798/NOTES.auto.htm...
Its was NextStep. They tried for a long time to ship a proprietary GCC, then a proprietary frontend with the rest of gcc, then finally backed down and released the frontend. This was all in the early nineties.
NextStep was trying to link a new frontend at the same level as C, C++, or Fortran, and just give the middle finger to the terms of the GPL.
GPL tries to make the world better, by increasing the free software commons. BSD tries to be neutral, but one should not be neutral in a war of good vs. evil: (cf. Ireland, Spain, Sweden & Switzerland in the Second World War or Sweden during the Cold War).
Companies like Apple prefer BSD specifically because they want the option of taking someone to court if they want to.
The truth is that free licences gave us the iPhone, the PlayStation, etc.
- just like chrome becoming the only browser, one compiler isn't good either. The implementation starts to define the language instead of the standard
- separate projects can use different methodologies and tradeoffs.
- if there is a bug or exploit that only applies to that complier and not all programs
I don't think we should have 20 major C++ compilers but we shouldn't have one.