1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
| | ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2023 Foundation Devices, Inc. <hello@foundationdevices.com>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages cross-toolchain)
#:use-module (gnu packages avr)
#:use-module (gnu packages cross-base)
#:use-module (gnu packages flashing-tools)
#:use-module (guix build-system trivial)
#:use-module (guix deprecation)
#:use-module (guix packages)
#:use-module (srfi srfi-1)
#:export (make-cross-gcc-toolchain))
(define* (make-cross-gcc-toolchain target
#:key
(libc (cross-libc target))
(xgcc (cross-gcc target #:libc libc))
(xbinutils (cross-binutils target)))
(package
(name (string-append (package-name xgcc) "-toolchain"))
(version (package-version xgcc))
(source #f)
(build-system trivial-build-system)
(arguments
'(#:modules ((guix build union))
#:builder (begin
(use-modules (ice-9 match)
(guix build union))
(match %build-inputs
(((names . directory) ...)
(union-build (assoc-ref %outputs "out") directory))))))
(inputs (list xgcc xbinutils libc))
(native-search-paths (package-native-search-paths xgcc))
(search-paths (package-search-paths xgcc))
(properties (alist-delete 'hidden? (package-properties xgcc)))
(license (package-license xgcc))
(synopsis (string-append "Complete GCC tool chain for C/C++ development ("
target ")"))
(description
"This package provides a complete GCC cross tool chain for C/C++
development to be installed in user profiles. This includes GCC, as well as
libc (headers and binaries), and Binutils. GCC is the GNU Compiler
Collection.")
(home-page "https://gcc.gnu.org/")))
;;; Cross binutils:
(define-public binutils-cross-avr
(cross-binutils "avr"))
(define-deprecated/public avr-binutils binutils-cross-avr
(deprecated-package "avr-binutils" binutils-cross-avr))
;;; C standard libraries:
(define-public avr-libc
(cross-libc "avr"))
;;; Cross toolchains:
(define-public gcc-cross-avr-toolchain
(make-cross-gcc-toolchain "avr"
#:libc avr-libc
#:xgcc (cross-gcc "avr" #:libc avr-libc)
#:xbinutils binutils-cross-avr))
(define-deprecated/public avr-toolchain gcc-cross-avr-toolchain
(deprecated-package "avr-toolchain"
(package/inherit gcc-cross-avr-toolchain
(inputs
(modify-inputs (package-inputs gcc-cross-avr-toolchain)
(append avrdude))))))
|