summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/build/cross-toolchain.scm8
-rw-r--r--gnu/packages/avr.scm13
-rw-r--r--gnu/packages/cross-base.scm15
3 files changed, 20 insertions, 16 deletions
diff --git a/gnu/build/cross-toolchain.scm b/gnu/build/cross-toolchain.scm
index 9746be3e50..1933b3e49a 100644
--- a/gnu/build/cross-toolchain.scm
+++ b/gnu/build/cross-toolchain.scm
@@ -48,6 +48,12 @@
;; Search path for target headers when cross-compiling.
(map (cut string-append "CROSS_" <>) %gcc-include-paths))
+(define* (patch-genmultilib-shebang #:key inputs native-inputs #:allow-other-keys)
+ "Patch-shebang in the gcc/genmultilib file doesn't work as it contains several
+scripts inside, each with a #!/bin/sh that needs patching."
+ (substitute* "gcc/genmultilib"
+ (("#!/bin/sh") (string-append "#!" (which "sh")))))
+
(define* (make-cross-binutils-visible #:key outputs inputs target
#:allow-other-keys)
"Create symlinks for 'as', 'nm', and 'ld' in the \"out\" output, under
@@ -173,6 +179,8 @@ C_*INCLUDE_PATH."
"Modify PHASES to include everything needed to build a cross-GCC for TARGET,
a target triplet."
(modify-phases phases
+ (add-after 'unpack 'patch-genmultilib-shebang
+ patch-genmultilib-shebang)
(add-before 'configure 'set-cross-path
;; This mingw32 target checking logic should match that of target-mingw?
;; in (guix utils), but (guix utils) is too large too copy over to the
diff --git a/gnu/packages/avr.scm b/gnu/packages/avr.scm
index 23401cd249..e3671399c1 100644
--- a/gnu/packages/avr.scm
+++ b/gnu/packages/avr.scm
@@ -77,18 +77,7 @@
(format #t
"environment variable `CPLUS_INCLUDE_PATH' \
changed to ~a~%"
- (getenv "CPLUS_INCLUDE_PATH")))))
- ;; Without a working multilib build, the resulting GCC lacks
- ;; support for nearly every AVR chip.
- (add-after 'unpack 'fix-genmultilib
- (lambda _
- ;; patch-shebang doesn't work here because there are
- ;; actually several scripts inside this script, each with
- ;; a #!/bin/sh that needs patching.
- (substitute* "gcc/genmultilib"
- (("#!/bin/sh") (string-append "#!" (which "sh"))))))))
- ((#:configure-flags flags)
- #~(delete "--disable-multilib" #$flags))))
+ (getenv "CPLUS_INCLUDE_PATH")))))))))
(native-search-paths
(list (search-path-specification
(variable "CROSS_C_INCLUDE_PATH")
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 6de1306279..777b5d8761 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -197,12 +197,19 @@ base compiler and using LIBC (which may be either a libc package or #f.)"
#~((string-append "--with-toolexeclibdir="
(assoc-ref %outputs "lib")
"/" #$target "/lib"))
+ #~())
+
+ #$@(if (target-avr? target)
+ #~("--enable-multilib")
#~()))
- #$(if libc
- flags
- #~(remove (cut string-match "--enable-languages.*" <>)
- #$flags))))
+ (remove
+ (lambda (flag)
+ (or (and #$libc
+ (string-prefix? "--enable-languages" flag))
+ (and #$(target-avr? target)
+ (string=? flag "--disable-multilib"))))
+ #$flags)))
((#:make-flags flags)
(if libc
#~(let ((libc (assoc-ref %build-inputs "libc")))