Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Jul 2012 21:53:13 GMT
From:      John Marino <draco@marino.st>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/169951: [NEW PORT] lang/gcc-aux, gcc-4.7 compiler (Ada, Fortran, C, C++, Objc)
Message-ID:  <201207172153.q6HLrDur062770@red.freebsd.org>
Resent-Message-ID: <201207172200.q6HM0UQF097189@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         169951
>Category:       ports
>Synopsis:       [NEW PORT] lang/gcc-aux, gcc-4.7 compiler (Ada, Fortran, C, C++, Objc)
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Tue Jul 17 22:00:30 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator:     John Marino
>Release:        N/A
>Organization:
>Environment:
N/A
>Description:
This port is the successor to the gcc-4.6-based lang/gnat-aux.
Originally it was planned for lang/gnat-aux to upgrade to version 4.7, then 4.8, etc.  However, some cross-compilers are based on it and there are some significant differences between gcc 4.6 and 4.7.  lang/gnat-aux also installs with a ${LOCALBASE} of /usr/local which has a high potential of file conflicts with other lang/ compilers.  Another reason for keeping them separate is just about every Ada program will need to be patched for it due to new binding interpretations stemming from Ada-2012 work.  Simplying updating gnat-aux would break them all instantly.

lang/gcc-aux has already been successfully ported to pkgsrc <http://pkgsrc.se/lang/gcc-aux>;
It has also been integrated into pkgsrc's gcc makefile, enabling the directive USE_LANGUAGES+= Ada. All the Ada packages in pkgsrc such as XML/Ada, GTK/Ada, GPS, AWS, Florist, etc, no longer require a specific compiler.

It is envisioned to modify FreeBSD's bsd.gcc.mk file to introduce the USE_ADA= directive similar to USE_FORTRAN= directive.  That will be a separate effort, and it will be accompanied with maintenance of all Ada ports.

Due to an ASSERTion in FreeBSD's thread library starting with version 9.0, all Ada tasking is broken on FreeBSD.  Currently it would require removing the check that emits, "thread exits with resources held!" and recompiling libpthread to fix.  Adacore was alerted to the problem with lang/gnat-aux, but they wanted to see if it still existed on gcc-4.7.  It does, and getting this port into the system is the first step to encouraging Adacore to fix this issue that affects all POSIX platforms but only FreeBSD has detected the issue.

Other than the tasking failures, gnat-aux passes all other languages with very high marks. Additionally, it features full precision on long doubles for C and C++ simultaneously with full precision for the GNAT Ada compiler.  Until now, one had to choose which language had good precision and which one was broken.  It's the only version of GNAT/C++ that does this (that I know of at least).

lang/gcc-aux will install at /usr/local/gcc-aux.  It doesn't conflict with any other compiler or port.
lang/gcc-aux can be built statically (other than libc), which is another improvement over lang/gnat-aux
lang/gcc-aux offers Native Language Support (option off by default) which appears to be the only compiler in the tree that does.

>How-To-Repeat:

>Fix:
Like lang/gnat-aux, lang/gcc-aux has large diff files in the files directory.  It is more convenient to download the entire port as a tarball:
http://leaf.dragonflybsd.org/~marino/misc/port_lang_gcc-aux.tar.bz2

MD5 (port_lang_gcc-aux.tar.bz2) = fc06c52b23663d72b3cf5f0e88c5e336

>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201207172153.q6HLrDur062770>