git: 441e5aba35b4 - main - lang/gcc15-devel: Allow build without bootstrap

From: Lorenzo Salvadore <salvadore_at_FreeBSD.org>
Date: Fri, 05 Sep 2025 09:18:31 UTC
The branch main has been updated by salvadore:

URL: https://cgit.FreeBSD.org/ports/commit/?id=441e5aba35b45a1b58e0ebbfd66f22840106788b

commit 441e5aba35b45a1b58e0ebbfd66f22840106788b
Author:     Lorenzo Salvadore <salvadore@FreeBSD.org>
AuthorDate: 2025-08-27 11:48:13 +0000
Commit:     Lorenzo Salvadore <salvadore@FreeBSD.org>
CommitDate: 2025-09-05 09:17:54 +0000

    lang/gcc15-devel: Allow build without bootstrap
    
    Enabling a boostrap option was experimentally enforced on some GCC
    devel ports, as building GCC on FreeBSD with FreeBSD's default compiler
    (clang) is not fully supported. Stop enforcing it: many users of
    production ports actually disable both bootstrap options, so it makes
    sense to attempt to keep allowing no-bootstrap builds.
    
    However, since building jit without bootstrap does not work, we add jit
    to the enabled languages only if a bootstrap option has been selected [1].
    
    See commit 5ee63cc45413954077b2b0c0546b8342585b41ba and e-mail
    https://lists.freebsd.org/archives/dev-commits-ports-main/2025-August/160223.html
    for more details.
    
    Reported by:    vishwin [1]
---
 lang/gcc15-devel/Makefile | 17 ++++++++++-------
 lang/gcc15-devel/pkg-help |  5 ++++-
 2 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/lang/gcc15-devel/Makefile b/lang/gcc15-devel/Makefile
index 580dfff40482..b02dd4e48144 100644
--- a/lang/gcc15-devel/Makefile
+++ b/lang/gcc15-devel/Makefile
@@ -1,5 +1,6 @@
 PORTNAME=	gcc
 PORTVERSION=	15.2.1.s20250823
+PORTREVISION=	1
 CATEGORIES=	lang
 MASTER_SITES=	GCC/snapshots/${DIST_VERSION}
 PKGNAMESUFFIX=	${SUFFIX}-devel
@@ -49,8 +50,8 @@ OPTIONS_DEFAULT_i386=	STANDARD_BOOTSTRAP
 OPTIONS_DEFAULT_powerpc=LTO_BOOTSTRAP
 OPTIONS_DEFAULT_powerpc64=LTO_BOOTSTRAP
 OPTIONS_DEFAULT_powerpc64le=LTO_BOOTSTRAP
-OPTIONS_SINGLE=	BOOTSTRAP
-OPTIONS_SINGLE_BOOTSTRAP=	LTO_BOOTSTRAP STANDARD_BOOTSTRAP
+OPTIONS_RADIO=	BOOTSTRAP
+OPTIONS_RADIO_BOOTSTRAP=	LTO_BOOTSTRAP STANDARD_BOOTSTRAP
 LTO_BOOTSTRAP_DESC=	Build using a full LTO bootstrap
 STANDARD_BOOTSTRAP_DESC=	Build using a full bootstrap without LTO
 GRAPHITE_DESC=		Support for Graphite loop optimizations
@@ -83,18 +84,20 @@ CONFIGURE_TARGET=	x86_64-portbld-${OPSYS:tl}${OSREL}
 CONFIGURE_ARGS+=	--with-abi=elfv2
 .endif
 
-.if ${ARCH} == i386
-LANGUAGES:=	c,c++,objc,fortran
-.else
-LANGUAGES:=	c,c++,objc,fortran,jit
+LANGUAGES=	c,c++,objc,fortran
+.if ${ARCH} != i386 && !empty(PORT_OPTIONS:M*BOOTSTRAP)
+LANGUAGES:=	${LANGUAGES},jit
 .endif
+
 TARGLIB=	${PREFIX}/lib/gcc${SUFFIX}
 TARGLIB32=	${PREFIX}/lib32	# The version information is added later
 LIBEXEC=	${PREFIX}/libexec/gcc${SUFFIX}
 GNU_CONFIGURE=	yes
 GNU_CONFIGURE_MANPREFIX=${PREFIX}/share
 CONFIGURE_OUTSOURCE=	yes
-.if ${PORT_OPTIONS:MLTO_BOOTSTRAP}
+.if empty(PORT_OPTIONS:M*BOOTSTRAP)
+CONFIGURE_ARGS+=--disable-bootstrap
+.elif ${PORT_OPTIONS:MLTO_BOOTSTRAP}
 CONFIGURE_ARGS+=--with-build-config=bootstrap-lto-noplugin
 ALL_TARGET=	bootstrap-lean
 PIE_UNSAFE=	yes
diff --git a/lang/gcc15-devel/pkg-help b/lang/gcc15-devel/pkg-help
index 9030bbb28d3f..632e1c65f816 100644
--- a/lang/gcc15-devel/pkg-help
+++ b/lang/gcc15-devel/pkg-help
@@ -1,3 +1,6 @@
 Building this port with LTO_BOOTSTRAP enabled requires significant amounts of
 memory and time. Consider disabling LTO_BOOTSTRAP in favor of STANDARD_BOOTSTRAP
-(or disabling BOOTSTRAP altogether) in case that is a problem.
+in case that is a problem.
+
+Note that disabling bootstrap altogether is possible, but not recommended: some
+features (e.g. jit) requires you to choose a bootstrap option to be enabled.