From 3f929203cf9c387dd9972a05b3c3af608d2bd21d Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Tue, 15 Feb 2022 10:21:47 +0200 Subject: gnu: gcc-2.95: Support more systems. * gnu/packages/gcc.scm (gcc-2.95)[supported-systems]: Allow all except powerpc64le-linux and riscv64-linux. [arguments]: Set #:system to the 32-bit version of our supported 64-bit architectures. Modify custom 'set-dynamic-linker-file-name phase to use the glibc-dynamic-linker for the selected system, and to substitute more locations. --- gnu/packages/gcc.scm | 81 ++++++++++++++++++++++++++++++++++------------------ 1 file changed, 53 insertions(+), 28 deletions(-) (limited to 'gnu/packages/gcc.scm') diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index a330be3336..6a030df449 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -50,6 +50,7 @@ #:use-module (guix gexp) #:use-module (guix utils) #:use-module (srfi srfi-1) + #:use-module (ice-9 match) #:use-module (ice-9 regex)) (define %gcc-infrastructure @@ -696,39 +697,63 @@ It also includes runtime support libraries for these languages.") (substitute* "configure" (("host_tools=(.*)texinfo" _ before) (string-append "host_tools=" before))))))) - (supported-systems '("i686-linux" "x86_64-linux")) + (supported-systems (fold delete %supported-systems + '("powerpc64le-linux" "riscv64-linux"))) (native-inputs (list texinfo dejagnu)) (inputs '()) (propagated-inputs '()) (outputs '("out")) (arguments - (list #:system "i686-linux" ;x86_64 didn't exist back then - #:configure-flags #~'("--disable-werror") - - #:phases - #~(modify-phases %standard-phases - (add-before 'configure 'set-dynamic-linker-file-name - (lambda* (#:key inputs #:allow-other-keys) - ;; Tell GCC what the real loader file name is. - (substitute* "gcc/config/i386/linux.h" - (("/lib/ld-linux\\.so\\.[12]") - (search-input-file inputs "/lib/ld-linux.so.2"))))) - (replace 'configure - (lambda* (#:key outputs build configure-flags - #:allow-other-keys) - ;; It's an old 'configure' script so it needs some help. - (setenv "CONFIG_SHELL" (which "sh")) - (apply invoke "./configure" - (string-append "--prefix=" #$output) - (string-append "--build=" build) - (string-append "--host=" build) - configure-flags))) - (add-before 'configure 'remove-bundled-texinfo - (lambda _ - ;; Go ahead despite the many warnings. - (substitute* '("Makefile.in" "gcc/Makefile.in") - (("^MAKEINFOFLAGS =.*") - "MAKEINFOFLAGS = --force\n"))))))) + (let ((matching-system + (match (%current-system) + ;; This package predates our 64-bit architectures. + ;; Force a 32-bit build targeting a similar architecture. + ("aarch64-linux" + "armhf-linux") + ("x86_64-linux" + "i686-linux") + (_ + (%current-system))))) + (list #:system matching-system + #:configure-flags #~'("--disable-werror") + + #:phases + #~(modify-phases %standard-phases + (add-before 'configure 'set-dynamic-linker-file-name + (lambda* (#:key inputs #:allow-other-keys) + ;; Tell GCC what the real loader file name is. + (substitute* '("gcc/config/alpha/linux-elf.h" + "gcc/config/m68k/linux.h" + "gcc/config/mips/linux.h" + "gcc/config/rs6000/linux.h") + (("/lib/ld\\.so\\.1") + (search-input-file + inputs #$(glibc-dynamic-linker matching-system)))) + (substitute* '("gcc/config/alpha/linux-elf.h" + "gcc/config/arm/linux-elf.h" + "gcc/config/i386/linux.h" + "gcc/config/m68k/linux.h" + "gcc/config/sparc/linux.h" + "gcc/config/sparc/linux64.h") + (("/lib(64)?/ld-linux\\.so\\.[12]") + (search-input-file + inputs #$(glibc-dynamic-linker matching-system)))))) + (replace 'configure + (lambda* (#:key outputs build configure-flags + #:allow-other-keys) + ;; It's an old 'configure' script so it needs some help. + (setenv "CONFIG_SHELL" (which "sh")) + (apply invoke "./configure" + (string-append "--prefix=" #$output) + (string-append "--build=" build) + (string-append "--host=" build) + configure-flags))) + (add-before 'configure 'remove-bundled-texinfo + (lambda _ + ;; Go ahead despite the many warnings. + (substitute* '("Makefile.in" "gcc/Makefile.in") + (("^MAKEINFOFLAGS =.*") + "MAKEINFOFLAGS = --force\n")))))))) (native-search-paths ;; This package supports nothing but the C language. (list (search-path-specification -- cgit v1.2.3