The GNAT Programming Studio needs the impunit.ad[bs] files in order
to create a menu based on the gnat source code. Just carry these
source files with the others that are used to build gnat_util and then
use the GPS port makefile to pull it in as needed. A quick check with
poudriere indicates that ports dependent on gnat_util still build fine.
Rather than require each user of libgnat_util to link in set_std_prefix
and update_path functions, let's assume each user needs the same version
of these functions and just add them directly to the library.
Adjust gnatcoll accordingly -- hack no longer necessary.
GCC4.9 hasn't been released yet, but the Ada portion of it is pretty
stable and perfectly passes ACATS and gnat.dg testsuites. The only
trick was to change the unwind mechanism on i386 away from KERN_PS_STRINGS
because it will not work with 32-bit compatability mode on AMD64. This
is because on AMD64, the signal trampoline is located on a random area
on a shared page rather than a fixed location before KERN_PS_STRINGS. To
support both true i386 and AMD64-32 compatibility mode, unwind now looks
for frame pattern in all cases. Apparently stack checking has been broken
on AMD64-32 until now.
It is important to get the Ada Framework in ports to be based on gcc49
because this compiler supports the full Ada-2012 standard implementation,
and in fact some new programs require this already.
This port will stay on snapshots until 4.9.0 is released, then it will
return to be based on releases.
The Ada and C++ options have been removed. These are now always built.
In fact, GCC now requires C++ to build, so new bootstraps had to be
created. FreeBSD8 has its own bootstrap, and FreeBSD 9+ uses a pure
static bootstrap (including GNAT tools) which should last a long time.
Additionally a "Bootstrap" option was added, but this overrides all
other options to create new bootstraps. It is not intended for general
use.
Most of the Ada Framework in ports has been pretested and adjusted to
work with gcc49 out of the box, but some ports will need to be updated
immediately, which will happen right after this one. The update to
lang/gnat_util had to be synchronized with lang/gcc-aux because they
share version information and the PORTREVISION needed to be reset.
There are a number of GNAT tools that have to be build using the same
exact sources as the compiler that it serves. Two examples of this are
GPRbuild and ASIS. The latter is an important component of several other
language semantic tools.
Accordingly, a separate port is being created to build a static library
that need these compiler sources. Incidentally, diverging sources is the
reason devel/gprbuild-aux stopped building after lang/gcc-aux was upgraded.
With this new scheme, this type of failure should no longer occur.
This is a dependency of the upcoming lang/asis port, and must be specified
as a build dependency by any port that needs ASIS.
Approved by: bapt (mentor)