GCC, the GNU Compiler Collection, supports a number of languages.
This port installs the C, C++, and Fortran front ends as gcc12, g++12,
and gfortran12, respectively.
Gerald Pfeifer <gerald@FreeBSD.org>
===> The following configuration options are available for gcc12-12.5.0:
GRAPHITE=off: Support for Graphite loop optimizations
====> Options available for the radio BOOTSTRAP: you can only select none or one of them
LTO_BOOTSTRAP=off: Build using a full LTO bootstrap
STANDARD_BOOTSTRAP=on: Build using a full bootstrap without LTO
===> Use 'make config' to modify these settings
lang/gcc12: Update to 12.5.0
Also remove files/patch-libgcc-config.host: patch has been upstreamed
with upstream commit 23541b23deb5504c6d3c0a3e96a0858e10c3c627.
Changes: https://gcc.gnu.org/gcc-12/changes.html#12.5
lang/gcc1?: further improvements for powerpc64*
1. Backport of e8385ea3b57862ce6c6ace5e6973b96cf238f4b6. Fixes libgcc
on powerpc64*, found with octave crashing.
2. Merge https://gcc.gnu.org/pipermail/gcc-patches/2026-July/723975.html,
not yet upstreamed, but allows to build all the remaining failing ports
due to ld128 switch for powerpc64le.
Differential Revision: https://reviews.freebsd.org/D58116
*/*: Use C.UTF-8 locale
Ports 02f27a83b44d fixed the ports tree to the C locale so it would work
correctly in environments where users use a locale that isn't compatible
with the C locale, e.g. xx_YY.UTF-8 where [A-Z] includes more than just
upper case letters. USE_LOCALE was introduced to let ports use another
locale if they needed it. The C.UTF-8 locale was created later on to be
mostly compatible with the C locale.
Switch the ports tree locale to C.UTF-8 and remove USE_LOCALE. The
world has moved to Unicode so all ports either require it or know how to
build correctly in a Unicode environment.
PR: 295945
Exp-run by: antoine
lang/gcc1[2-6]: actually fix build on powerpc64le/CURRENT
Without this patch, gcc attempts to enable support for IBM long double,
when IEEE long double is enabled, which is wrong. Allow to only
specify IEEE long double.
The whole patchset for IEEE long double on FreeBSD/powerpc64le
is being upstreamed at https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126012.
lang/gcc1[2-6]: add necessary contents to patch-gcc_configure
1. For gcc14, restore the lost content.
2. For others, add powerpc64le-related content.
Pointy hat: me
lang/gcc1?: fix runtime on powerpc64le/CURRENT
Since powerpc64le recently switched to 128-bit long double, use them to
generate proper binaries. Patches are necessary to allow use of
--with-long-double-format=ieee on FreeBSD (to be upstreamed).
lang/gcc12: Add comment to existing patch
Add a comment to files/patch-libgcc_unwind.inc to remember when it will
get obsolete, i.e. once all supported FreeBSD releases include commit
22e564c74eb20e14bd93fd9fdde20e38a29cfcf1.
PR: 285711
lang/gcc12: Fix SIGBUS depending on CPUTYPE
Compiling GCC with some CPUTYPE values (e.g. broadwell) result in
breaking some applications (e.g. math/octave, cad/freecad), sending a
SIGBUS.
The issue is due to GCC generating instructions that require variables
to be aligned in memory on certain CPUs. Our libthr does not have the
required alignment so these CPUs fail to execute these instructions.
The patch disables the generation of such instructions.
PR: 285711
Reported by: cracauer
Tested by: cracauer, jbo
lang/gcc12: Fix linking with libisl.so
Fix linking with libisl.so depending on GRAPHITE option, which is
now implemented through options helpers.
Co-authored-by: Gerald Pfeifer <gerald@FreeBSD.org>
PR: 276070
Reported by:Ivan Rozhuk <rozhuk.im@gmail.com>
lang/gcc*: disable building of libssp
For today's FreeBSD 14 and earlier, libssp is a nop because nothing on
FreeBSD will be referencing these headers or lib. On FreeBSD 15, it
actively breaks building with FORTIFY_SOURCE enabled and it's not worth
trying to make it work- the potential for GCC improvements comes from
the __builtin_object_size enhancement, not from these headers.
PR: 280265
Approved by: salvadore (maintainer)
lang/gcc{12,13}: Switch back to standard bootstrap
Switch back to STANDARD_BOOTSTRAP on i386, amd64 and aarch64 as default
option instead of LTO_BOOTSTRAP, forwarding the changes already commited
in the devel ports (commits daf12c76bd531335f58e7602afd3bc8da8fc5c33,
872d61f8ead10a6d935117876cf60057a46770ff, and
da4cb11216a7ed594d5dc453deb4693b48c3c7e9) and in lang/gcc11 (commit
3e0fc5e7607d30400bfb3d5a7b3d1b77e1a6699a)
Users wanting to use LTO_BOOTSTRAP can still enable the option manually.
PR: 273397
Tested by: exp-run (antoine)
*/*: Sunset 12.4-RELEASE/12-STABLE from ports tree
- Remove all references to defunct ARCH arm
- Remove all references to defunct ARCH sparc64
- Remove x11-drivers/xf86-video-sunffb which requires defunct sparc64
ARCH
- Remove sysutils/afbinit requires defunct sparc64 ARCH
- Remove all references to bktr driver
- Remove all references to defunct FreeBSD_12
- Remove all references to OSVERSION/OSREL corresponding to 12
- Remove conditionals in Mk/Uses/cabal.mk
- Remove sparc reference from Mk/Uses/qt-dist.mk
- Remove BROKEN_sparc64/NOT_FOR_ARCH=sparc64
- Remove BROKEN_FreeBSD_12* from:
- Remove OpenSSL patches from:
- Remove conditional flags for OSVERSION >= 1300000 to fixed flags.
Also move conditional flags for non sparc64/arm ARCH to fixed flags.
Reviewed by: brooks, jbeich, rene, salvadore
Differential Revision: https://reviews.freebsd.org/D42068
lang/gcc12 lang/gcc12-devel lang/gcc13 lang/gcc13-devel lang/gcc14-devel: fix
build without bootstrap
When more recent gcc ports are built without bootstrap, compiling libcc1
plugins results in errors similar to:
In file included from
/wrkdirs/share/dim/ports/lang/gcc13/work/gcc-13.2.0/libcc1/libcc1plugin.cc:72:
In file included from /usr/include/c++/v1/vector:321:
In file included from /usr/include/c++/v1/__format/formatter_bool.h:20:
In file included from /usr/include/c++/v1/__format/formatter_integral.h:32:
/usr/include/c++/v1/locale:289:36: error: attempt to use a poisoned identifier
289 | __status = (unsigned char*)malloc(__nkw);
| ^
/usr/include/c++/v1/locale:1584:28: error: attempt to use a poisoned
identifier
1584 | __ob =
(char_type*)malloc(2*static_cast<size_t>(__nc)*sizeof(char_type));
| ^
(Only the first 15 lines of the commit message are shown above )
lang/gcc12: install ISO_Fortran_binding.h in a separate directory
ISO_Fortran_binding.h is sometimes needed for the support of Fortran
2018, e.g. MPICH must find it to build mpi_f08.mod.
ATM it is installed in a directory depending on $CONFIGURE_TARGET with
a complex path, and it is not possible to point CFLAGS towards this dir
because other headers (like stdatomic.h) would conflict with those from
the system.
Therefore create a new directory /usr/local/include/gcc12 to install
this header.
PR: 275431
Approved by: salvadore@ (maintainer)
lang/gcc10 lang/gcc11 lang/gcc11-devel lang/gcc12 lang/gcc12-devel lang/gcc13
lang/gcc13-devel lang/gcc14-devel: fix build with libc++ 17
When building relatively recent gcc ports (with C++ in them) against
libc++ 17, you get errors similar to:
In file included from
/wrkdirs/usr/ports/lang/gcc12/work/gcc-12.2.0/gcc/cp/module.cc:208:
In file included from
/wrkdirs/usr/ports/lang/gcc12/work/gcc-12.2.0/gcc/system.h:239:
In file included from /usr/include/c++/v1/vector:321:
In file included from /usr/include/c++/v1/__format/formatter_bool.h:20:
In file included from /usr/include/c++/v1/__format/formatter_integral.h:32:
In file included from /usr/include/c++/v1/locale:202:
/usr/include/c++/v1/__locale:546:5: error: '__abi_tag__' attribute only
applies to structs, variables, functions, and namespaces
546 | _LIBCPP_INLINE_VISIBILITY
| ^
/usr/include/c++/v1/__config:813:37: note: expanded from macro
'_LIBCPP_INLINE_VISIBILITY'
(Only the first 15 lines of the commit message are shown above )
lang/gcc12: Work around aarch64 extraction bug
Extraction fails with poudriere on aarch64 with the following error:
=> SHA256 Checksum OK for gcc-12.2.0.tar.xz.
tar: Pathname can't be converted from UTF-8 to current locale.
tar: Pathname can't be converted from UTF-8 to current locale.
tar: Error exit delayed from previous errors.
Enforcing use of bsdtar works around the issue. The issue is specific to
lang/gcc11 and lang/gcc12: no other GCC port is affected.
See also bug https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=246670.
PR: 271052
Reported by: Vidar Karlsen <vidar@karlsen.tech>
Reviewed by: gerald, mikael
lang/gcc12: Mark PIE_UNSAFE
Building the port with WITH_PIE fails if STANDARD_BOOTSTRAP or
LTO_BOOTSTRAP option is enabled.
Mark PIE_UNSAFE when such an option is enabled until a better solution
is found.
PR: 268901
Reported by: netchild
lang/gcc12: Fix Address sanitizer
Software compiled with -fsanitize=address fails to run with the error
message "ASan runtime does not come first in initial library list; you
should either link runtime to your application or manually preload it
with LD_PRELOAD".
This commit fixes the issue by ignoring the [vdso] loaded shared library
instead of linux-vdso.so.
PR: 267751
Reported by: yuri
lang/gcc12: Fix conflict on libgccjit.h and libgccjit++.h
GCC 11, GCC 12 and GCC 13 install libgccjit.h and libgccjit++.h in the
same directory.
Fix conflict for lang/gcc12, which is soon to become GCC_DEFAULT, by
installing those files in a directory specific to GCC 12.
See also commit 0338e04504ee269b7a95e6707f1314bc1c4239fe that fixed the
conflict in the same way for lang/gcc11.
PR: 257060
Move more WWW entries from pkg-descr files into Makefiles
The WWW: lines in the pkg-descr files of these ports where not at the
end of those files and have been missed in prior conversion runs.
Approved by: portmgr (implicit)
lang: remove 'Created by' lines
A big Thank You to the original contributors of these ports:
* Aaron Dalton <aaron@FreeBSD.org>
* Adam Weinberger <adamw@FreeBSD.org>
* Akinori MUSHA aka knu <knu@idaemons.org>
* Alex Dupre <ale@FreeBSD.org>
* Alexey Dokuchaev <danfe@FreeBSD.org>
* Alonso Cardenas Marquez <acm@FreeBSD.org>
* Andreas Klemm <andreas@klemm.gtn.com>
* Andrew Pantyukhin <infofarmer@FreeBSD.org>
* Andrey Zakhvatov
* Anton Berezin <tobez@FreeBSD.org>
* Anton Berezin <tobez@tobez.org>
(Only the first 15 lines of the commit message are shown above )
lang/gcc>=11: Warn about LTO_BOOTSTRAP
Warn users about the amount of ram and time needed to build GCC with
LTO_BOOTSTRP enabled.
PR: 264949
Reported by: Tomoaki AOKI <junchoon@dec.sakura.ne.jp> and others
Reviewed by: gerald
Differential Revision: https://reviews.freebsd.org/D35688