The 2011Q4 pkgsrc freeze is over. That allowed me to commit an upgrade to lang/gnat-aux to sync with GCC 4.6.2-RELEASE today.
A lot of work has gone into this compiler which supports: x86_64-*-dragonfly* i386-*-dragonfly* x86_64-*-netbsd* i386-*-netbsdelf* i386-*-solaris2* x86_64-*-freebsd* (through FreeBSD ports) i386-*-freebsd* (through FreeBSD ports) lang/gcc34 breaks (do we need gcc-3x?) lang/gcc44 is marked NOT-FOR-DRAGONFLY lang/gcc45 doesn't build (requires unbuildable binutils 2.17 downgrade) lang/gcc46 breaks during build (obsolete dragonfly.h but needs a lot more love than that to really work) Compiler fixing is extremely time consuming and a bit frustrating. Frankly I'd like to mark lang/gcc34, lang/gcc45, and lang/gcc46 NOT-FOR-DRAGONFLY as well. With the quality of lang/gnat-aux, these really isn't a need for them. lang/gnat-aux supports the following five languages: Ada, C, C++, ObjC, and Fortran. A question was posed to me on IRC: Why work on lang/gnat-aux rather than fix lang/gcc46? The answer is that they serve different purposes. lang/gcc46 strives for the gcc java language (which due to neglect has no practical application) and to support NLS. Additionally it has to support every NetBSD architecture as well as Linux, *BSD, SunOS, Darwin, etc.). The reason it doesn't support Ada is because Ada requires a bootstrap compiler (although technically it could install lang/gnat-aux and use that as a bootstrap!). Once gnat-aux is on a system, it can use itself to build new compilers, but the very first build from source requires a downloadable bootstrap. These are difficult to develop, and there are currently only seven (matching the seven platforms listed above). Since the point of lang/gnat-aux is to provide a perfect Ada compiler and since lang/gcc46 considers this optional at best, the two compiler packages really aren't compatible in their goals. A simpler answer is that I don't have time to work on multiple compilers. lang/gnat-aux is heavily patched, and developing those patches is very time consuming. That said, assuming NLS and java aren't required, DragonFly users should not miss any of the lang/gcc* packages. I have run gnat-aux testsuites against the following 9 platforms: x86_64-*-dragonfly2.13 (very recent) i386-*-dragonfly2.13 (very recent) x86_64-*-netbsd5.1 i386-*-netbsdelf5.1 x86_64-*-netbsd5.99 (jan 6 kernel, DIRECT_MAP disabled) i386-*-netbsdelf5.99 (jan 7 snapshot) x86_64-*-freebsd8.2 i386-*-freebsd8.0 i386-*-solaris2.11 (openIndiana 151a) Results: http://leaf.dragonflybsd.org/~marino/results/gnataux_test_results.pdf Observations with an emphasis on DragonFly: 1) All platforms pass Ada/ACATS perfectly 2) All platforms pass Ada/gnat perfectly 3) Only FreeBSD has better Fortran results than DragonFly (by a single test) 4) DragonFly passes ObjC tests perfectly, along with FreeBSD and OpenIndiana 5) Only NetBSD scores better on g++ than DragonFly, but FreeBSD is close behind 6) DragonFly has highest marks on libstdc++, but may have "unfair" advantage with updated dejagnu target settings 7) Only NetBSD has higher "C" score than DragonFly, but DragonFly has no "unexpected successes" and far fewer unsupported tests. Bottom line is DragonFly has a solid 76,500+ successes on the "C" testsuite, nothing unresolved or unexpected. ================================================ lang/gnat-aux is recognized as external compiler ================================================ > man compilers.conf lang/gnat-aux can be used with the DragonFly build(7) system. Installing it and then setting CCVER=gcc46 will allow building world and/or kernel with lang/gnat-aux which is based on gcc 4.6.2-RELEASE. FYI clang (lang/clang), and pcc (lang/pcc-current) are the two other pkgsrc compilers recognized by default. Note that world still breaks with gcc46 so work still needs to be done to make dragonfly world friendly to the latest gcc release. TL;DR: lang/gnat-aux-20111026 is the best gcc compiler available for DragonFly and should be the one used by DragonFly users when the system compiler isn't good enough, regardless of language needed. John