gnu: cross-toolchain: Add set-cross-path for AVR.
* gnu/build/cross-toolchain.scm (set-cross-path/avr): New procedure. (cross-gcc-build-phases) [string-prefix? "avr"]: Return set-cross-path/avr procedure. Signed-off-by: Jean-Pierre De Jesus DIAZ <me@jeandudey.tech> Change-Id: I00bd39236ac2e31fef02164a7fffc8b56a166f0d Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
parent
58490a9311
commit
c7d2faf178
|
@ -168,6 +168,31 @@ C_*INCLUDE_PATH."
|
||||||
(cons "LIBRARY_PATH" %gcc-include-paths))
|
(cons "LIBRARY_PATH" %gcc-include-paths))
|
||||||
#t))
|
#t))
|
||||||
|
|
||||||
|
(define* (set-cross-path/avr #:key inputs #:allow-other-keys)
|
||||||
|
(match (assoc-ref inputs "libc")
|
||||||
|
((? string? libc)
|
||||||
|
(define (cross? x)
|
||||||
|
;; Return #t if X is a cross-libc.
|
||||||
|
(string-prefix? libc x))
|
||||||
|
|
||||||
|
(let ((cpath (string-append libc "/avr/include")))
|
||||||
|
(for-each (cut setenv <> cpath)
|
||||||
|
%gcc-cross-include-paths))
|
||||||
|
|
||||||
|
(setenv "CROSS_LIBRARY_PATH"
|
||||||
|
(string-append libc "/avr/lib"))
|
||||||
|
|
||||||
|
(for-each (lambda (var)
|
||||||
|
(and=> (getenv var)
|
||||||
|
(lambda (value)
|
||||||
|
(let* ((path (search-path-as-string->list value))
|
||||||
|
(native-path (list->search-path-as-string
|
||||||
|
(remove cross? path) ":")))
|
||||||
|
(setenv var native-path)))))
|
||||||
|
(cons "LIBRARY_PATH" %gcc-include-paths)))
|
||||||
|
;; AVR sans-libc cross-compiler.
|
||||||
|
(else #t)))
|
||||||
|
|
||||||
(define (install-strip . _)
|
(define (install-strip . _)
|
||||||
"Install a stripped GCC."
|
"Install a stripped GCC."
|
||||||
;; Unlike our 'strip' phase, this will do the right thing for
|
;; Unlike our 'strip' phase, this will do the right thing for
|
||||||
|
@ -186,9 +211,11 @@ a target triplet."
|
||||||
;; in (guix utils), but (guix utils) is too large too copy over to the
|
;; in (guix utils), but (guix utils) is too large too copy over to the
|
||||||
;; build side entirely and for now we have no way to select variables to
|
;; build side entirely and for now we have no way to select variables to
|
||||||
;; copy over. See (gnu packages cross-base) for more details.
|
;; copy over. See (gnu packages cross-base) for more details.
|
||||||
(if (string-suffix? "-mingw32" target)
|
(cond
|
||||||
(cut set-cross-path/mingw #:target target <...>)
|
((string-suffix? "-mingw32" target)
|
||||||
set-cross-path))
|
(cut set-cross-path/mingw #:target target <...>))
|
||||||
|
((string-prefix? "avr" target) set-cross-path/avr)
|
||||||
|
(#t set-cross-path)))
|
||||||
(add-after 'install 'make-cross-binutils-visible
|
(add-after 'install 'make-cross-binutils-visible
|
||||||
(cut make-cross-binutils-visible #:target target <...>))
|
(cut make-cross-binutils-visible #:target target <...>))
|
||||||
(replace 'install install-strip)))
|
(replace 'install install-strip)))
|
||||||
|
|
Reference in New Issue