From 7b3318e34f4e2743254a88b908859901db960e9a Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 22 May 2017 16:13:15 +0200 Subject: 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. --- gnu/packages/embedded.scm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'gnu/packages/embedded.scm') diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm index b919bdf6c4..632682d630 100644 --- a/gnu/packages/embedded.scm +++ b/gnu/packages/embedded.scm @@ -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 -- cgit v1.2.3 From 1a1e83366d2d9aa5b49f2dba728a1a312fc22b65 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 22 May 2017 16:13:17 +0200 Subject: gnu: Add libstdc++-arm-none-eabi. * gnu/packages/embedded.scm (make-libstdc++-arm-none-eabi): New procedure. --- gnu/packages/embedded.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'gnu/packages/embedded.scm') diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm index 632682d630..2befdf31b3 100644 --- a/gnu/packages/embedded.scm +++ b/gnu/packages/embedded.scm @@ -197,6 +197,30 @@ usable on embedded products.") "--disable-nls")))) (synopsis "Newlib variant for small systems with limited memory"))) +(define (make-libstdc++-arm-none-eabi xgcc newlib) + (let ((libstdc++ (make-libstdc++ xgcc))) + (package (inherit libstdc++) + (name "libstdc++-arm-none-eabi") + (arguments + (substitute-keyword-arguments (package-arguments libstdc++) + ((#:configure-flags flags) + ``("--target=arm-none-eabi" + "--host=arm-none-eabi" + "--disable-libstdcxx-pch" + "--enable-multilib" + "--with-multilib-list=armv6-m,armv7-m,armv7e-m" + "--disable-shared" + "--disable-tls" + "--disable-plugin" + "--with-newlib" + ,(string-append "--with-gxx-include-dir=" + (assoc-ref %outputs "out") + "/arm-none-eabi/include"))))) + (native-inputs + `(("newlib" ,newlib) + ("xgcc" ,xgcc) + ,@(package-native-inputs libstdc++)))))) + (define (arm-none-eabi-toolchain xgcc newlib) "Produce a cross-compiler toolchain package with the compiler XGCC and the C library variant NEWLIB." -- cgit v1.2.3 From 9cdf48728e74c5aed0650201c2e39c82fea0ce4b Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 22 May 2017 16:13:18 +0200 Subject: gnu: arm-none-eabi-toolchain: Provide union of all inputs at the output. * gnu/packages/embedded.scm (arm-none-eabi-toolchain)[arguments]: Make the union of all inputs available at the output. --- gnu/packages/embedded.scm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'gnu/packages/embedded.scm') diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm index 2befdf31b3..f8684f46a2 100644 --- a/gnu/packages/embedded.scm +++ b/gnu/packages/embedded.scm @@ -237,7 +237,16 @@ library variant NEWLIB." (version (package-version xgcc)) (source #f) (build-system trivial-build-system) - (arguments '(#:builder (mkdir %output))) + (arguments + '(#:modules ((guix build union)) + #:builder + (begin + (use-modules (ice-9 match) + (guix build union)) + (match %build-inputs + (((names . directories) ...) + (union-build (assoc-ref %outputs "out") + directories)))))) (propagated-inputs `(("binutils" ,(cross-binutils "arm-none-eabi")) ("gcc" ,xgcc) -- cgit v1.2.3 From 8ea169d074d1edaa176974302c7fa3edf0264363 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 22 May 2017 16:13:19 +0200 Subject: gnu: arm-none-eabi-toolchain: Include libstdc++. * gnu/packages/embedded.scm (arm-none-eabi-toolchain)[propagated-inputs]: Add libstdc++. --- gnu/packages/embedded.scm | 1 + 1 file changed, 1 insertion(+) (limited to 'gnu/packages/embedded.scm') diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm index f8684f46a2..70541540e5 100644 --- a/gnu/packages/embedded.scm +++ b/gnu/packages/embedded.scm @@ -249,6 +249,7 @@ library variant NEWLIB." directories)))))) (propagated-inputs `(("binutils" ,(cross-binutils "arm-none-eabi")) + ("libstdc++" ,(make-libstdc++-arm-none-eabi xgcc newlib-with-xgcc)) ("gcc" ,xgcc) ("newlib" ,newlib-with-xgcc))) (synopsis "Complete GCC tool chain for ARM bare metal development") -- cgit v1.2.3