From 04c4ef351fa7d0702f09a5770e2d99544c45d205 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 24 Dec 2019 23:34:03 +0100 Subject: gnu: Add gcc-arm-none-eabi-7-2018-q2-update. * gnu/packages/embedded.scm (gcc-arm-none-eabi-7-2018-q2-update): New variable. * gnu/packages/patches/gcc-7-cross-environment-variables.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. --- gnu/packages/embedded.scm | 78 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) (limited to 'gnu/packages/embedded.scm') diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm index 4087e042c6..d2918c9263 100644 --- a/gnu/packages/embedded.scm +++ b/gnu/packages/embedded.scm @@ -207,6 +207,84 @@ usable on embedded products.") "--disable-nls")))) (synopsis "Newlib variant for small systems with limited memory"))) + +;;; The following definitions are for the "7-2018-q2-update" variant of the +;;; ARM cross toolchain as offered on https://developer.arm.com +(define-public gcc-arm-none-eabi-7-2018-q2-update + (let ((xgcc (cross-gcc "arm-none-eabi" + #:xgcc gcc-7 + #:xbinutils (cross-binutils "arm-none-eabi"))) + (revision "1") + (svn-revision 261907)) + (package (inherit xgcc) + (version (string-append "7-2018-q2-update-" + revision "." (number->string svn-revision))) + (source + (origin + (method svn-fetch) + (uri (svn-reference + (url "svn://gcc.gnu.org/svn/gcc/branches/ARM/embedded-7-branch/") + (revision svn-revision))) + (file-name (string-append "gcc-arm-embedded-" version "-checkout")) + (sha256 + (base32 + "192ggs63bixf3irpijgfkjks73yx1r3a4i6grk1y0i0iny76pmx5")) + (patches + (append + (origin-patches (package-source gcc-7)) + (search-patches "gcc-7-cross-environment-variables.patch"))))) + (native-inputs + `(("gcc" ,gcc-5) + ("flex" ,flex) + ("isl" ,isl-0.18) + ,@(alist-delete "isl" (package-native-inputs xgcc)))) + (arguments + (substitute-keyword-arguments (package-arguments xgcc) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'expand-version-string + (lambda _ + (make-file-writable "gcc/DEV-PHASE") + (with-output-to-file "gcc/DEV-PHASE" + (lambda () + (display "7-2018-q2-update"))) + #t)) + (add-after 'unpack 'fix-genmultilib + (lambda _ + (substitute* "gcc/genmultilib" + (("#!/bin/sh") (string-append "#!" (which "sh")))) + #t)))) + ((#:configure-flags flags) + ;; The configure flags are largely identical to the flags used by the + ;; "GCC ARM embedded" project. + `(append (list "--enable-multilib" + "--with-newlib" + "--with-multilib-list=rmprofile" + "--with-host-libstdcxx=-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm" + "--enable-plugins" + "--disable-decimal-float" + "--disable-libffi" + "--disable-libgomp" + "--disable-libmudflap" + "--disable-libquadmath" + "--disable-libssp" + "--disable-libstdcxx-pch" + "--disable-nls" + "--disable-shared" + "--disable-threads" + "--disable-tls") + (delete "--disable-multilib" ,flags))))) + (native-search-paths + (list (search-path-specification + (variable "CROSS_C_INCLUDE_PATH") + (files '("arm-none-eabi/include"))) + (search-path-specification + (variable "CROSS_CPLUS_INCLUDE_PATH") + (files '("arm-none-eabi/include"))) + (search-path-specification + (variable "CROSS_LIBRARY_PATH") + (files '("arm-none-eabi/lib")))))))) + (define (make-libstdc++-arm-none-eabi xgcc newlib) (let ((libstdc++ (make-libstdc++ xgcc))) (package (inherit libstdc++) -- cgit v1.2.3