mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-25 13:58:15 -05:00
gnu: make-avr-toolchain: Add a #:xgcc argument.
This allows generating an AVR toolchain for any version of GCC. * gnu/packages/avr.scm (make-avr-gcc): Add a #:xgcc argument; use memoize instead of mlambda. (make-avr-libc): Likewise. Provide it to the 'make-avr-gcc' call. (make-avr-toolchain): Add a #:xgcc argument; use memoize instead of mlambda. Provide the xgcc argument to the 'make-avr-libc' and 'make-avr-gcc' procedures.
This commit is contained in:
parent
53fd3989d3
commit
4af820b9ef
1 changed files with 110 additions and 102 deletions
|
@ -6,6 +6,7 @@
|
|||
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2020 Arun Isaac <arunisaac@systemreboot.net>
|
||||
;;; Copyright © 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -58,9 +59,9 @@ (define make-avr-binutils
|
|||
(inherit (cross-binutils "avr"))
|
||||
(name "avr-binutils"))))
|
||||
|
||||
(define make-avr-gcc
|
||||
(mlambda ()
|
||||
(let ((xgcc (cross-gcc "avr" #:xbinutils (make-avr-binutils))))
|
||||
(define* (make-avr-gcc/implementation #:key (xgcc gcc))
|
||||
"Return a XGCC-base cross-compiler for the AVR target."
|
||||
(let ((xgcc (cross-gcc "avr" #:xgcc xgcc #:xbinutils (make-avr-binutils))))
|
||||
(package
|
||||
(inherit xgcc)
|
||||
(name "avr-gcc")
|
||||
|
@ -113,10 +114,12 @@ (define make-avr-gcc
|
|||
(files '("avr/lib")))))
|
||||
(native-inputs
|
||||
`(("gcc" ,gcc)
|
||||
,@(package-native-inputs xgcc)))))))
|
||||
,@(package-native-inputs xgcc))))))
|
||||
|
||||
(define make-avr-libc
|
||||
(mlambda ()
|
||||
(define make-avr-gcc
|
||||
(memoize make-avr-gcc/implementation))
|
||||
|
||||
(define* (make-avr-libc/implementation #:key (xgcc gcc))
|
||||
(package
|
||||
(name "avr-libc")
|
||||
(version "2.0.0")
|
||||
|
@ -132,20 +135,22 @@ (define make-avr-libc
|
|||
'(#:out-of-source? #t
|
||||
#:configure-flags '("--host=avr")))
|
||||
(native-inputs `(("avr-binutils" ,(make-avr-binutils))
|
||||
("avr-gcc" ,(make-avr-gcc))))
|
||||
("avr-gcc" ,(make-avr-gcc #:xgcc xgcc))))
|
||||
(home-page "https://www.nongnu.org/avr-libc/")
|
||||
(synopsis "The AVR C Library")
|
||||
(description
|
||||
"AVR Libc is a project whose goal is to provide a high quality C
|
||||
library for use with GCC on Atmel AVR microcontrollers.")
|
||||
"AVR Libc is a project whose goal is to provide a high quality C library
|
||||
for use with GCC on Atmel AVR microcontrollers.")
|
||||
(license
|
||||
(license:non-copyleft "http://www.nongnu.org/avr-libc/LICENSE.txt")))))
|
||||
(license:non-copyleft "http://www.nongnu.org/avr-libc/LICENSE.txt"))))
|
||||
|
||||
(define make-avr-toolchain
|
||||
(mlambda ()
|
||||
(define make-avr-libc
|
||||
(memoize make-avr-libc/implementation))
|
||||
|
||||
(define* (make-avr-toolchain/implementation #:key (xgcc gcc))
|
||||
(let ((avr-binutils (make-avr-binutils))
|
||||
(avr-libc (make-avr-libc))
|
||||
(avr-gcc (make-avr-gcc)))
|
||||
(avr-libc (make-avr-libc #:xgcc xgcc))
|
||||
(avr-gcc (make-avr-gcc #:xgcc xgcc)))
|
||||
;; avr-libc checks the compiler version and passes "--enable-device-lib"
|
||||
;; for avr-gcc > 5.1.0. It wouldn't install the library for atmega32u4
|
||||
;; etc if we didn't use the corret avr-gcc.
|
||||
|
@ -166,7 +171,10 @@ (define make-avr-toolchain
|
|||
avrdude for firmware flashing. The supported programming languages are C and
|
||||
C++.")
|
||||
(home-page (package-home-page avr-libc))
|
||||
(license (package-license avr-gcc))))))
|
||||
(license (package-license avr-gcc)))))
|
||||
|
||||
(define make-avr-toolchain
|
||||
(memoize make-avr-toolchain/implementation))
|
||||
|
||||
(define-public microscheme
|
||||
(package
|
||||
|
|
Loading…
Reference in a new issue