gnu: make-u-boot-package: Don't unnecessarily cross-compile.
* gnu/packages/bootloaders.scm (make-u-boot-package)[native-inputs]: Only use cross-gcc and cross-binutils if compiling for a different architecture. [arguments]: Only use cross compiling make-flags if cross compiling.
This commit is contained in:
		
							parent
							
								
									18c6a7b4c8
								
							
						
					
					
						commit
						3bfee8ff02
					
				
					 1 changed files with 50 additions and 42 deletions
				
			
		|  | @ -333,48 +333,56 @@ also initializes the boards (RAM etc).") | ||||||
| 
 | 
 | ||||||
| (define (make-u-boot-package board triplet) | (define (make-u-boot-package board triplet) | ||||||
|   "Returns a u-boot package for BOARD cross-compiled for TRIPLET." |   "Returns a u-boot package for BOARD cross-compiled for TRIPLET." | ||||||
|   (package |   (let ((same-arch? (if (string-prefix? (%current-system) triplet) | ||||||
|     (inherit u-boot) |                       `#t | ||||||
|     (name (string-append "u-boot-" (string-downcase board))) |                       `#f))) | ||||||
|     (native-inputs |     (package | ||||||
|      `(("cross-gcc" ,(cross-gcc triplet)) |       (inherit u-boot) | ||||||
|        ("cross-binutils" ,(cross-binutils triplet)) |       (name (string-append "u-boot-" (string-downcase board))) | ||||||
|        ,@(package-native-inputs u-boot))) |       (native-inputs | ||||||
|     (arguments |        `(,@(if (not same-arch?) | ||||||
|      `(#:modules ((ice-9 ftw) (guix build utils) (guix build gnu-build-system)) |              `(("cross-gcc" ,(cross-gcc triplet)) | ||||||
|        #:test-target "test" |                ("cross-binutils" ,(cross-binutils triplet))) | ||||||
|        #:make-flags |              '()) | ||||||
|        (list "HOSTCC=gcc" (string-append "CROSS_COMPILE=" ,triplet "-")) |          ,@(package-native-inputs u-boot))) | ||||||
|        #:phases |       (arguments | ||||||
|        (modify-phases %standard-phases |        `(#:modules ((ice-9 ftw) (guix build utils) (guix build gnu-build-system)) | ||||||
|          (replace 'configure |          #:test-target "test" | ||||||
|            (lambda* (#:key outputs make-flags #:allow-other-keys) |          #:make-flags | ||||||
|              (let ((config-name (string-append ,board "_defconfig"))) |          (list "HOSTCC=gcc" | ||||||
|                (if (file-exists? (string-append "configs/" config-name)) |                ,@(if (not same-arch?) | ||||||
|                    (zero? (apply system* "make" `(,@make-flags ,config-name))) |                    `((string-append "CROSS_COMPILE=" ,triplet "-")) | ||||||
|                    (begin |                    '())) | ||||||
|                      (display "Invalid board name. Valid board names are:") |          #:phases | ||||||
|                      (let ((suffix-len (string-length "_defconfig"))) |          (modify-phases %standard-phases | ||||||
|                        (scandir "configs" |            (replace 'configure | ||||||
|                                 (lambda (file-name) |              (lambda* (#:key outputs make-flags #:allow-other-keys) | ||||||
|                                   (when (string-suffix? "_defconfig" file-name) |                (let ((config-name (string-append ,board "_defconfig"))) | ||||||
|                                     (format #t |                  (if (file-exists? (string-append "configs/" config-name)) | ||||||
|                                             "- ~A\n" |                      (zero? (apply system* "make" `(,@make-flags ,config-name))) | ||||||
|                                             (string-drop-right file-name |                      (begin | ||||||
|                                                                suffix-len)))))) |                        (display "Invalid board name. Valid board names are:") | ||||||
|                      #f))))) |                        (let ((suffix-len (string-length "_defconfig"))) | ||||||
|          (replace 'install |                          (scandir "configs" | ||||||
|            (lambda* (#:key outputs make-flags #:allow-other-keys) |                                   (lambda (file-name) | ||||||
|              (let* ((out (assoc-ref outputs "out")) |                                     (when (string-suffix? "_defconfig" file-name) | ||||||
|                     (libexec (string-append out "/libexec")) |                                       (format #t | ||||||
|                     (uboot-files (find-files "." ".*\\.(bin|efi|spl)$"))) |                                               "- ~A\n" | ||||||
|                (mkdir-p libexec) |                                               (string-drop-right file-name | ||||||
|                (for-each |                                                                  suffix-len)))))) | ||||||
|                 (lambda (file) |                        #f))))) | ||||||
|                   (let ((target-file (string-append libexec "/" file))) |            (replace 'install | ||||||
|                     (mkdir-p (dirname target-file)) |              (lambda* (#:key outputs make-flags #:allow-other-keys) | ||||||
|                     (copy-file file target-file))) |                (let* ((out (assoc-ref outputs "out")) | ||||||
|                 uboot-files))))))))) |                       (libexec (string-append out "/libexec")) | ||||||
|  |                       (uboot-files (find-files "." ".*\\.(bin|efi|spl)$"))) | ||||||
|  |                  (mkdir-p libexec) | ||||||
|  |                  (for-each | ||||||
|  |                   (lambda (file) | ||||||
|  |                     (let ((target-file (string-append libexec "/" file))) | ||||||
|  |                       (mkdir-p (dirname target-file)) | ||||||
|  |                       (copy-file file target-file))) | ||||||
|  |                   uboot-files)))))))))) | ||||||
| 
 | 
 | ||||||
| (define-public u-boot-vexpress | (define-public u-boot-vexpress | ||||||
|   (make-u-boot-package "vexpress_ca9x4" "arm-linux-gnueabihf")) |   (make-u-boot-package "vexpress_ca9x4" "arm-linux-gnueabihf")) | ||||||
|  |  | ||||||
		Reference in a new issue