me
/
guix
Archived
1
0
Fork 0

gnu: cross-base: Factor out cross-mig.

* gnu/packages/cross-base.scm (cross-mig): New exported procedure.
(cross-gnumach-headers): New procedure.
(cross-kernel-headers*): Factor them out.
(cross-libc*): Use them there.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
master
Josselin Poiret 2023-03-20 23:10:39 +01:00 committed by Ludovic Courtès
parent 6cdd444a56
commit a16a9c5a7b
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 53 additions and 34 deletions

View File

@ -46,6 +46,7 @@
#:export (cross-binutils
cross-libc
cross-gcc
cross-mig
cross-kernel-headers))
(define-syntax %xgcc
@ -365,6 +366,52 @@ target that libc."
#:xgcc xgcc
#:xbinutils xbinutils))
(define* (cross-gnumach-headers target
#:key
(xgcc (cross-gcc target))
(xbinutils (cross-binutils target)))
(package
(inherit gnumach-headers)
(name (string-append (package-name gnumach-headers)
"-cross-" target))
(native-inputs
(modify-inputs (package-native-inputs gnumach-headers)
(prepend xgcc xbinutils)))))
(define* (cross-mig target
#:key
(xgcc (cross-gcc target))
(xbinutils (cross-binutils target)))
"Return a cross-mig for TARGET, where TARGET is a GNU triplet. Use XGCC as
the base compiler. Use XBINUTILS as the associated cross-Binutils."
(define xgnumach-headers
(cross-gnumach-headers target
#:xgcc xgcc
#:xbinutils xbinutils))
(package
(inherit mig)
(name (string-append "mig-cross"))
(arguments
(substitute-keyword-arguments (package-arguments mig)
((#:configure-flags flags #~'())
#~(list #$(string-append "--target=" target)))
((#:tests? _ #f)
#f)
((#:phases phases #~%standard-phases)
#~(modify-phases #$phases
(add-before 'configure 'set-cross-headers-path
(lambda* (#:key inputs #:allow-other-keys)
(let* ((mach #+xgnumach-headers)
(cpath (string-append mach "/include")))
(for-each (lambda (variable)
(setenv variable cpath))
'#$%gcc-cross-include-paths))))))))
(propagated-inputs
(list xgnumach-headers))
(native-inputs
(modify-inputs (package-native-inputs mig)
(prepend xgcc xbinutils)))))
(define* (cross-kernel-headers* target
#:key
(linux-headers linux-libre-headers)
@ -399,40 +446,11 @@ target that libc."
("cross-binutils" ,xbinutils)
,@(package-native-inputs linux-headers)))))
(define xgnumach-headers-name
(string-append (package-name gnumach-headers) "-cross-" target))
(define xmig
(cross-mig target #:xgcc xgcc #:xbinutils xbinutils))
(define xgnumach-headers
(package
(inherit gnumach-headers)
(name xgnumach-headers-name)
(native-inputs
(modify-inputs (package-native-inputs gnumach-headers)
(prepend xgcc xbinutils)))))
(define xmig
(package
(inherit mig)
(name (string-append "mig-cross"))
(arguments
(substitute-keyword-arguments (package-arguments mig)
((#:configure-flags flags #~'())
#~(list #$(string-append "--target=" target)))
((#:tests? _ #f)
#f)
((#:phases phases #~%standard-phases)
#~(modify-phases #$phases
(add-before 'configure 'set-cross-headers-path
(lambda* (#:key inputs #:allow-other-keys)
(let* ((mach #+(this-package-input xgnumach-headers-name))
(cpath (string-append mach "/include")))
(for-each (lambda (variable)
(setenv variable cpath))
'#$%gcc-cross-include-paths))))))))
(propagated-inputs (list xgnumach-headers))
(native-inputs
(modify-inputs (package-native-inputs mig)
(prepend xgcc xbinutils)))))
(cross-gnumach-headers target #:xgcc xgcc #:xbinutils xbinutils))
(define xhurd-headers
(package
@ -611,8 +629,9 @@ and the cross tool chain."
("cross-binutils" ,xbinutils)
,@(if (target-hurd? target)
`(("cross-mig"
,@(assoc-ref (package-native-inputs xheaders)
"cross-mig")))
,(cross-mig target
#:xgcc xgcc
#:xbinutils xbinutils)))
'())
,@(package-inputs libc) ;FIXME: static-bash
,@(package-native-inputs libc))))))