Wie sicher bekannt ist, arbeitet das FreeBSD Projekt seit einigen Jahren daran gcc als Systemcompiler durch Clang zu ersetzen. Im gleichen Schritt wird der GNU C++-Stack auf Basis von libstdc++ durch einen moderneren, vollständig C++11 implementierenden Stack ersetzt. Im vorerst letzten Schritt dieses Projekts wurde gcc nun auf allen Plattformen deaktiviert, die Clang als Standardcompiler nutzen. Diese sind:
- FreeBSD/amd64
- FreeBSD/ARM
- FreeBSD/i386
Andere Plattformen nutzen vorerst weiter gcc. FreeBSD/PowerPC64 ist kurz vor dem Punkt, dass der Standardcompiler geändert werden kann. FreeBSD/MIPS nähert sich ebenfalls mit großen Schritten. In beiden Fällen wird die Umstellung allerdings sehr wahrscheinlich erst nach dem Branch von FreeBSD 10.0 passieren. Die Sorgenkinder sind im Moment FreeBSD/SPARC64 und FreeBSD/IA64, denn beide Plattformen werden derzeit nur unzureichend oder gar nicht von Clang unterstützt. Hier wird noch über das weitere Vorgehen entschieden werden müssen.
gcc ist weiterhin im Code des Basissystems enthalten. Wer unbedingt einen gcc in diesem braucht, kann diesen in der /etc/src.conf wieder aktivieren und anschließend das System neu bauen. Allerdings ist der empfohlene Weg einen der lang/gcc* Ports zu installieren, da diese deutlich neuere Versionen beinhalten. Des Weiteren wird es in den nächsten Tagen einen Port des im Basissystem enthaltenen, stark gepatchten gcc 4.2.1 geben.
- FreeBSD/amd64
- FreeBSD/ARM
- FreeBSD/i386
Andere Plattformen nutzen vorerst weiter gcc. FreeBSD/PowerPC64 ist kurz vor dem Punkt, dass der Standardcompiler geändert werden kann. FreeBSD/MIPS nähert sich ebenfalls mit großen Schritten. In beiden Fällen wird die Umstellung allerdings sehr wahrscheinlich erst nach dem Branch von FreeBSD 10.0 passieren. Die Sorgenkinder sind im Moment FreeBSD/SPARC64 und FreeBSD/IA64, denn beide Plattformen werden derzeit nur unzureichend oder gar nicht von Clang unterstützt. Hier wird noch über das weitere Vorgehen entschieden werden müssen.
gcc ist weiterhin im Code des Basissystems enthalten. Wer unbedingt einen gcc in diesem braucht, kann diesen in der /etc/src.conf wieder aktivieren und anschließend das System neu bauen. Allerdings ist der empfohlene Weg einen der lang/gcc* Ports zu installieren, da diese deutlich neuere Versionen beinhalten. Des Weiteren wird es in den nächsten Tagen einen Port des im Basissystem enthaltenen, stark gepatchten gcc 4.2.1 geben.
Code:
Hi Everyone,
As of r255321, we are no longer building gcc or libstdc++ as part of the default install on platforms where clang is cc.
If you are using gcc, you have two options:
1) Install one of the lang/gcc* ports (Warner has been working on separating out the patches to our GCC, so these should soon be patched to provide the same features as the one in base)
2) Put WITH_GCC=yes and WITH_GNUCXX=yes in your src.conf when you build world.
GCC will stay in the base system tree for at least the lifetime of the 10.x release, and possibly longer if it is still being actively used. It will remain used by tinderboxes and make universe for some architectures, so if you commit code without testing with gcc people will know very soon...
Thanks to Warner for all of his recent work on disentangling the toolchain, to all of the people (Roman, Dimitry, Brooks, and others) who worked on getting clang integrated into FreeBSD and to everyone who tested it and filed bug reports. As of today, PowerPC64 joins x86 and ARM as platforms where world+kernel can be successfully built (and work) with clang (although it isn't the default yet and needs more testing), and hopefully other architectures will follow soon.
Huge thanks to all of the ports people who have spent the last two weeks working on dealing with the fallout from iconv and ensuring that all of the ports work with clang and libc++. I think over the last week, the number of failing / ignored ports has dropped by about a thousand a day on the no-gcc test box that Bapt has been running, which is a phenomenal achievement.
David