guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/02: gnu: gcc-2.95: Support more systems.


From: guix-commits
Subject: 01/02: gnu: gcc-2.95: Support more systems.
Date: Tue, 15 Feb 2022 05:57:42 -0500 (EST)

efraim pushed a commit to branch master
in repository guix.

commit 3f929203cf9c387dd9972a05b3c3af608d2bd21d
Author: Efraim Flashner <efraim@flashner.co.il>
AuthorDate: Tue Feb 15 10:21:47 2022 +0200

    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(-)

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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]