GNAT is a free, high-quality, complete compiler for Ada, integrated into the
GCC compiler system; the front-end and run-time are written in Ada. GNAT
supports Ada ISO Standards from 1985 to 2022.
Ada was designed for embedded and real-time systems, its features include:
* Strong static typing
* Modular programming (via the package)
* Encapsulation
* Readability
* Optional run-time checking
* Concurrency (via tasks and protected objects), and message passing, as
constructs in the language itself
* Generics
Ada is designed for "Programming in the large", it suits rapid development, and
directly supports structured, object-oriented, generic, distributed and
concurrent programming paradigms. Ada is considered a Design Programming
Language, as a result of the expressive abstractions and features that informed
it's design, and provided to the user. Its expressiveness allows users to
clearly represent design solutions modeled on their problem domain, in
accessible language.
===> The following configuration options are available for gnat12-12.4.0_1:
ASSETS=off: Build an asset for future bootstrap on the target platform
MULTILIB=on: Build support for 32-bit and 64-bit targets
NLS=on: Native Language Support
====> Options available for the radio BOOTSTRAP: you can only select none or one of them
GCC6AUX=off: Bootstrap from lang/gcc6-aux
PREVASSET=on: Bootstrap from the previous asset (if available)
===> Use 'make config' to modify these settings
lang/gnat12: libgomp support; sync with GNAT-15
The GNAT-15 addition to the Ports Tree included some improvements to how
the pkg-plist is maintained, updated the pkg-descr, expanded the
pkg-message, and more. Sync GNAT-12 with those modifications.
* Add xz:threads option to ${TAR} to make use of multi-threaded
compression
* Add GNU OpenMP libraries. This is required for GNATColl Bindings
* Add GNAT and GNAT_SO_VERSION to ${PLIST_SUB} to remove hard-coded
version dependent information.
* Complete ${LICENSE} block
* Expand pkg-message and make UCL compliant
* Modernise and update ${COMMENT}, ${WWW} and pkg-descr
* Delegate maintainership to ada@
PR: 296512
lang/gnat1?: gettext is always required
Ignore the portlint warning and always depends on gettext.
(See PR 277508)
PR: 295966
Reported by: Robert William Vesterman
lang/gnat1[2-4]: Restore check-phase
lang/gnat12,13, and 14:
* After PR 294657, restore the testing target check-phase, move the if
conditional on ${UID} != 0 below the GNAT Ports' internal _ marked
variables, and drop bsd.port.options.mk, and terminate the Port with
bsd.port.post.mk over bsd.port.mk
* Add fix for rpath (PR 292708)
* Move ${PIE_UNSAFE} to the correct block (portclippy)
* Move gettext-runtime from ${USES} to ${NLS_USES}
* Regroup internal variables and sort
* Remove ${EXTRACT_CMD} from aarch64 specific section syncing with the update
to the Ports Mk infrastructure (D57295) which by default now uses
LC_ALL=en_US.UTF-8 in the environment
* Sort ${GNU_CONFIGURE_PREFIX}
* Specific to GNAT-12, follow GNAT-13 and 14's use of ${MASTER_SITE_GCC}
in ${MASTER_SITES}; sort the architecture specific ${PLIST_SUB} entries
PR: 295872
Co-authored-by: Marcin Cieślak <saper@saper.info>
Reported by: Sulev-Madis Silber
lang/gnat1?: fix build with GNU strip
After D55509 $STRIP_CMD has been set to GNU strip for these ports, and in some
cases this breaks, because GNU strip will refuse to strip non-writable files,
while LLVM strip is happy to (attempt to) strip them.
PR: 294657
Reported by: kib@FreeBSD.org
Reviewed by: kib@FreeBSD.org
Phabricator: D55509
MFC after: 8 days
lang/gnat1?: force the usage of gettext
It appears that gettext is required even when NLS is disabled (surely
because the compiler used for bootstrap has been built with NLS).
No bump of PORTREVISION needed.
PR: 277508
Reported by: bob (at) vesterman.com
lang/gnat12: bootstrap from previous assets by default
All assets have been built, and it is now possible to bootstrap without
lang/gcc6-aux!
But the option GCC6AUX it not removed, just in case, if for some reason
we had to rebuild everything from the beginning.
Do not bump PORTREVISION: the resulting package should not be impacted.
lang/gnat12: adding assets for FreeBSD-15
And since I’m there refresh the other versions.
Remark: no package is available ATM for FreeBSD-12 on aarch64, it is why
gcc6-aux is still the default.
lang/gnat12: Makefile maintenance
* Move gettext-runtime to NLS helper, including pkg-plist updates;
* Prefix all custom variable with an underscore
* Sort Makefile Blocks into correct order; this meant breaking down the
one if conditional covering MULTILIB into multiple conditionals spread
between each Block
* Remove ${INFOS}; this was probably meant to be ${INFO}. The Info pages
are removed later in the post-stage target, so there is no point
defining any.
* No need to define ${GNU_CONFIGURE_MANPREFIX}, the Ports framework
inherits this from ${MANPREFIX}, which is also defined in the port Makefile
* Explicitly enable C++ language to GNU configure; GNAT requires a
working C++ toolchain to build itself
* Move to bsd.port.options.mk/bsd.port.mk Makefile inclusion pair
* Prefer ${DISTVERION} over ${PORTVERSION}
* Remove @ from some Makefile ${COMMANDS} to prefer verbose build output
PR: 274619
Approved by: /me
lang/gnat12: Add missing binutils RUN_DEPENDS and fix broken library search
paths
Any produce binary of the gnat12 Ada compiler that had dependencies
on libstdc++ from this package would result in broken binaries
because no RUNPATH and no ldconfig paths were set up such that the
included libstdc++ would get found.
While we're at it, add the missing binutils dependency because the
compiler driver would find the GNU assembler that is hardcoded in
the Makefile.
PR: 274239
Signed-off-by: Nico Sonack <nsonack@herrhotzenplotz.de>
Approved by: thierry (maintainer timeout, two weeks)
MFH: 2023Q4
lang/gnat12: force rpath
When lang/gcc12 is also installed, the programs installed by gnat12 might
load libraries of gcc12. This could become problematic if these two ports
get different versions.
Modification inspired by lang/gcc6-aux/files/diff-core.
lang/gnat12: remove programs suffix
Since GNAT is now installed in a specific prefix, we can simplify by
removing the programs suffix: this will avoid the usage of binary
aliases, only setting the PATH is necessary.
lang/gnat12: install in a separate directory with its own gcc
Gnat runs along with a gcc compiled with Ada, but we don’t want neither
modify lang/gcc12 nor conflict with it. Therefore we have to install it
in a separate directory.
lang/gnat12: mark IGNORE for the moment
Sorry, I made a mistake: it only works on my machines because it needs
gcc12 built from this port! gcc12 from lang/gcc12 is not sufficient.
lang/gnat12: adding GNAT from Gcc-12
This Ada compiler is built from Gcc-12, with help from Stephane Carrez
(Ada France).
The first time it uses lang/gcc6-aux as a bootstrap, but it can produce
a bootstrap for the next time, either for this version or for the next
ones.
Yet to be done:
- plug it into Mk/Uses/ada.mk
- build more bootstrapping assets
(ATM they exist only for amd64 on FreeBSD 13 and 14)
- add a test target
- try to cross-compile for more platforms?