Subject: [bug#74290] [PATCH v2 05/40] gnu: Add basic support for x86_64-pc-gnu target, aka 64bit Hurd.

From: Ludovic Courtès <[email-masked]>
Date: Sun, 17 Nov 2024 17:59:50 +0100

Janneke Nieuwenhuizen <[email-masked]> skribis:

> +++ b/gnu/packages/commencement.scm
> @@ -3643,10 +3643,12 @@ (define-public gcc-toolchain-14
>  ;; The default GCC
>  (define (current-gcc-toolchain)
>    "The current default gcc-toolchain version."
> -  gcc-toolchain-11)
> +  (if (target-hurd64?)
> +      gcc-toolchain-14
> +      gcc-toolchain-11))

[...]

> +++ b/gnu/packages/gcc.scm
> @@ -861,10 +861,12 @@ (define-public gcc-14
>  ;;       the gcc-toolchain-* definitions.
>  (define (current-gcc)
>    "The current default gcc version."
> -  gcc-11)
> +  (if (target-hurd64?)
> +      gcc-14
> +      gcc-11))

This affects not just cross-compilation but also native compilation.

Let’s assume we only want cross-compilation to x86_64-gnu for now, how
about changing the GCC version used for cross-compilation, and only
that:

diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 5781341a87..6120740b3c 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -61,7 +61,7 @@ (define-syntax %xgcc
   ;;
   ;; Note: This is a macro so that we do not refer to 'gcc' from the top
   ;; level, which would lead to circular-dependency issues.
-  (identifier-syntax gcc))
+  (identifier-syntax gcc-14))
 
 (define %gcc-include-paths
   ;; Environment variables for header search paths.

That would affect also non-Hurd cross-compilation targets, but if it
works, it’s simpler.

Then, as a second step, we could prepare a ‘core-packages-team’ branch
that upgrades ‘gcc’ globally, and that way we keep something consistent
and simpler, without ‘current-gcc’.  (Though it means we’d have to wait
before we can build natively on x86_64-gnu.)

WDYT?

Ludo’.