Setting USES=ada:47 would not allow polyorb to build because of an
object file mismatch with the gcc49-built xmlada. It also would not
build with the latest gcc-aux, so the only option is to upgrade the port
to PolyOrb 2013.
The ASIS source has to be matched with the compiler source of the compiler
that builds it. ASIS is always tricky because it's matched to annual
releases of GNAT GPL, and never to GNAT FSF. However, after disabling the
useless (and faulty) strong version check, ASIS 2013 seems to work okay
with gcc49. At least the two ports that use it seem to work ok.
GPRBuild was previously based on the 2012 release, but it never should
have gone past the 2011 issue. GPRBuild needs to use the same sources as
the GNAT that builds it, but it was built with the embedded sources
instead. These "GPL" sources were ahead of the "FSF" sources, and
GPRBuild only worked by chance. Using the proper GNAT Sources (gnat_util)
resulted in build failure! Now gcc-aux has been updated and now
GPRBuild 2013 can be properly built with FSF GNAT 4.9 sources.
While the version remains the same, AdaControl comes with two flavors of
distfiles: "old" and "new". The "old" distfile was appropriate for
gcc47-aux, but the "new" one is required for the gcc49-based ada compiler.
This change updates the distfile to be used to build adacontrol.
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.
Rather than specify gnat_util every time ASIS is a dependency, set it
as a library dependency for ASIS. LIB_DEPENDS doesn't work because it
is a static library, so just manually add libgnat_util.a to BUILD_DEPENDS
and RUN_DEPENDS, then adjust 3 ports accordingly.