git: 550137eab24a - main - universe: Permit requesting a specific version of GCC

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Sat, 11 Jan 2025 03:50:24 UTC
The branch main has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=550137eab24ab6bdf05bfbb986927004b9f2f34e

commit 550137eab24ab6bdf05bfbb986927004b9f2f34e
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2025-01-11 03:49:59 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2025-01-11 03:49:59 +0000

    universe: Permit requesting a specific version of GCC
    
    If USE_GCC_TOOLCHAINS is set to a value matching the pattern 'gcc*',
    use that as the GCC version.  For example, USE_GCC_TOOLCHAINS=gcc16
    would use amd64-gcc16 for amd64, etc.  If the variable is set to a
    value that doesn't match that pattern, use the default version.
    
    Reviewed by:    imp, emaste
    Differential Revision:  https://reviews.freebsd.org/D48418
---
 Makefile               | 16 +++++++++-------
 share/man/man7/build.7 |  7 ++++++-
 2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/Makefile b/Makefile
index 5c113d5b83cc..1970cc736829 100644
--- a/Makefile
+++ b/Makefile
@@ -531,13 +531,15 @@ TARGET_ARCHES_${target}= ${MACHINE_ARCH_LIST_${target}}
 .endfor
 
 .if defined(USE_GCC_TOOLCHAINS)
-TOOLCHAINS_amd64=	amd64-gcc12
-TOOLCHAINS_arm=		armv7-gcc12
-TOOLCHAINS_arm64=	aarch64-gcc12
-TOOLCHAINS_i386=	i386-gcc12
-TOOLCHAINS_powerpc=	powerpc-gcc12 powerpc64-gcc12
-TOOLCHAIN_powerpc64=	powerpc64-gcc12
-TOOLCHAINS_riscv=	riscv64-gcc12
+_DEFAULT_GCC_VERSION=	gcc12
+_GCC_VERSION=		${"${USE_GCC_TOOLCHAINS:Mgcc*}" != "":?${USE_GCC_TOOLCHAINS}:${_DEFAULT_GCC_VERSION}}
+TOOLCHAINS_amd64=	amd64-${_GCC_VERSION}
+TOOLCHAINS_arm=		armv7-${_GCC_VERSION}
+TOOLCHAINS_arm64=	aarch64-${_GCC_VERSION}
+TOOLCHAINS_i386=	i386-${_GCC_VERSION}
+TOOLCHAINS_powerpc=	powerpc-${_GCC_VERSION} powerpc64-${_GCC_VERSION}
+TOOLCHAIN_powerpc64=	powerpc64-${_GCC_VERSION}
+TOOLCHAINS_riscv=	riscv64-${_GCC_VERSION}
 .endif
 
 # If a target is using an external toolchain, set MAKE_PARAMS to enable use
diff --git a/share/man/man7/build.7 b/share/man/man7/build.7
index 32c33aa3d730..5ca44c51cf56 100644
--- a/share/man/man7/build.7
+++ b/share/man/man7/build.7
@@ -25,7 +25,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.Dd November 13, 2024
+.Dd January 10, 2025
 .Dt BUILD 7
 .Os
 .Sh NAME
@@ -879,6 +879,11 @@ This variable implies
 Use external GCC toolchains to build the requested targets.
 If the required toolchain package for a supported architecture is not installed,
 the build for that architecture is skipped.
+.Pp
+A specific version of GCC can be used by setting the value of this variable
+to the desired version
+.Pq for example, Dq gcc14 ;
+otherwise a default version of GCC is used.
 .It Va TARGETS
 Only build the listed targets instead of each supported architecture.
 .It Va EXTRA_TARGETS