gnu: Allow overriding of xgcc package in cross-gcc.
* gnu/packages/cross-base.scm (cross-gcc-arguments): Take extra "xgcc" argument. (cross-gcc): Use keyword arguments; take optional "xgcc" argument. * gnu/packages/embedded.scm (gcc-arm-none-eabi-4.9, propeller-gcc, gcc-vc4): Use keyword arguments. * gnu/packages/avr.scm (avr-gcc-4.9): Likewise.
This commit is contained in:
		
							parent
							
								
									9b91fb32f8
								
							
						
					
					
						commit
						7b3318e34f
					
				
					 3 changed files with 21 additions and 16 deletions
				
			
		|  | @ -39,7 +39,7 @@ | |||
|     (name "avr-binutils"))) | ||||
| 
 | ||||
| (define-public avr-gcc-4.9 | ||||
|   (let ((xgcc (cross-gcc "avr" avr-binutils))) | ||||
|   (let ((xgcc (cross-gcc "avr" #:xbinutils avr-binutils))) | ||||
|     (package | ||||
|       (inherit xgcc) | ||||
|       (name "avr-gcc") | ||||
|  |  | |||
|  | @ -100,9 +100,9 @@ | |||
|                binutils) | ||||
|            target))) | ||||
| 
 | ||||
| (define (cross-gcc-arguments target libc) | ||||
|   "Return build system arguments for a cross-gcc for TARGET, using LIBC (which | ||||
| may be either a libc package or #f.)" | ||||
| (define (cross-gcc-arguments target xgcc libc) | ||||
|   "Return build system arguments for a cross-gcc for TARGET, using XGCC as the | ||||
| base compiler and using LIBC (which may be either a libc package or #f.)" | ||||
|   ;; Set the current target system so that 'glibc-dynamic-linker' returns the | ||||
|   ;; right name. | ||||
|   (parameterize ((%current-target-system target)) | ||||
|  | @ -111,7 +111,7 @@ may be either a libc package or #f.)" | |||
|     ;; <http://lists.fedoraproject.org/pipermail/arm/2010-August/000663.html> | ||||
|     ;; for instance. | ||||
|     (let ((args `(#:strip-binaries? #f | ||||
|                   ,@(package-arguments %xgcc)))) | ||||
|                   ,@(package-arguments xgcc)))) | ||||
|      (substitute-keyword-arguments args | ||||
|        ((#:configure-flags flags) | ||||
|         `(append (list ,(string-append "--target=" target) | ||||
|  | @ -183,18 +183,22 @@ may be either a libc package or #f.)" | |||
|         (else #f))) | ||||
| 
 | ||||
| (define* (cross-gcc target | ||||
|                     #:optional (xbinutils (cross-binutils target)) libc) | ||||
|                     #:key | ||||
|                     (xgcc %xgcc) | ||||
|                     (xbinutils (cross-binutils target)) | ||||
|                     (libc #f)) | ||||
|   "Return a cross-compiler for TARGET, where TARGET is a GNU triplet.  Use | ||||
| XBINUTILS as the associated cross-Binutils.  If LIBC is false, then build a | ||||
| GCC that does not target a libc; otherwise, target that libc." | ||||
|   (package (inherit %xgcc) | ||||
| XGCC as the base compiler.  Use XBINUTILS as the associated cross-Binutils. | ||||
| If LIBC is false, then build a GCC that does not target a libc; otherwise, | ||||
| target that libc." | ||||
|   (package (inherit xgcc) | ||||
|     (name (string-append "gcc-cross-" | ||||
|                          (if libc "" "sans-libc-") | ||||
|                          target)) | ||||
|     (source (origin (inherit (package-source %xgcc)) | ||||
|     (source (origin (inherit (package-source xgcc)) | ||||
|               (patches | ||||
|                (append | ||||
|                 (origin-patches (package-source %xgcc)) | ||||
|                 (origin-patches (package-source xgcc)) | ||||
|                 (cons (search-patch "gcc-cross-environment-variables.patch") | ||||
|                       (cross-gcc-patches target)))) | ||||
|               (modules '((guix build utils))) | ||||
|  | @ -216,7 +220,7 @@ GCC that does not target a libc; otherwise, target that libc." | |||
|                   (srfi srfi-26) | ||||
|                   (ice-9 regex)) | ||||
| 
 | ||||
|        ,@(cross-gcc-arguments target libc))) | ||||
|        ,@(cross-gcc-arguments target xgcc libc))) | ||||
| 
 | ||||
|     (native-inputs | ||||
|      `(("ld-wrapper-cross" ,(make-ld-wrapper | ||||
|  | @ -230,7 +234,7 @@ GCC that does not target a libc; otherwise, target that libc." | |||
|        ("libc-native" ,@(assoc-ref (%final-inputs) "libc")) | ||||
| 
 | ||||
|        ;; Remaining inputs. | ||||
|        ,@(let ((inputs (append (package-inputs %xgcc) | ||||
|        ,@(let ((inputs (append (package-inputs xgcc) | ||||
|                                (alist-delete "libc" (%final-inputs))))) | ||||
|            (cond | ||||
|             ((target-mingw? target) | ||||
|  |  | |||
|  | @ -52,7 +52,8 @@ | |||
| ;; See https://launchpadlibrarian.net/218827644/release.txt | ||||
| (define-public gcc-arm-none-eabi-4.9 | ||||
|   (let ((xgcc (cross-gcc "arm-none-eabi" | ||||
|                          (cross-binutils "arm-none-eabi"))) | ||||
|                          #:xgcc gcc-4.9 | ||||
|                          #:xbinutils (cross-binutils "arm-none-eabi"))) | ||||
|         (revision "1") | ||||
|         (svn-revision 227977)) | ||||
|     (package (inherit xgcc) | ||||
|  | @ -419,7 +420,7 @@ with a layered architecture of JTAG interface and TAP support.") | |||
| 
 | ||||
| (define-public propeller-gcc | ||||
|   (let ((xgcc (cross-gcc "propeller-elf" | ||||
|                          propeller-binutils)) | ||||
|                          #:xbinutils propeller-binutils)) | ||||
|         (commit "b4f45a4725e0b6d0af59e594c4e3e35ca4105867") | ||||
|         (revision "1")) | ||||
|     (package (inherit xgcc) | ||||
|  | @ -776,7 +777,7 @@ the Raspberry Pi chip.") | |||
| 
 | ||||
| (define-public gcc-vc4 | ||||
|   (let ((commit "165f6d0e11d2e76ee799533bb45bd5c92bf60dc2") | ||||
|         (xgcc (cross-gcc "vc4-elf" binutils-vc4))) | ||||
|         (xgcc (cross-gcc "vc4-elf" #:xbinutils binutils-vc4))) | ||||
|     (package (inherit xgcc) | ||||
|       (name "gcc-vc4") | ||||
|       (source (origin | ||||
|  |  | |||
		Reference in a new issue