diff options
| author | Ricardo Wurmus <rekado@elephly.net> | 2025-03-03 14:10:52 +0100 |
|---|---|---|
| committer | Ricardo Wurmus <rekado@elephly.net> | 2025-03-03 14:30:36 +0100 |
| commit | cccc6b8b19c3a25f6cacfe06098b068bf14af62b (patch) | |
| tree | 961de3e5ad814d5bb80a2340ec400e22ff192833 /gnu/packages/embedded.scm | |
| parent | 187b6c515d4ccc7f7b2f9a1cc5c4fede561f7bc8 (diff) | |
gnu: Add GCC arm-none-eabi toolchain 9-2020-q2-update.
* gnu/packages/embedded.scm: (make-gcc-arm-none-eabi-9-2020-q2-update,
make-newlib-arm-none-eabi-9-2020-q2-update,
make-newlib-nano-arm-none-eabi-9-2020-q2-update,
make-arm-none-eabi-toolchain-9-2020-q2-update): New procedures.
Change-Id: Iffb1554bbf38382dadaac7ad8059330f37a54a5c
Diffstat (limited to 'gnu/packages/embedded.scm')
| -rw-r--r-- | gnu/packages/embedded.scm | 158 |
1 files changed, 157 insertions, 1 deletions
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm index 930857d0aa7..a118db3551b 100644 --- a/gnu/packages/embedded.scm +++ b/gnu/packages/embedded.scm | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2016, 2017, 2018, 2019, 2023, 2024 Ricardo Wurmus <rekado@elephly.net> | 2 | ;;; Copyright © 2016, 2017, 2018, 2019, 2023, 2024, 2025 Ricardo Wurmus <rekado@elephly.net> |
| 3 | ;;; Copyright © 2016, 2017 Theodoros Foradis <theodoros@foradis.org> | 3 | ;;; Copyright © 2016, 2017 Theodoros Foradis <theodoros@foradis.org> |
| 4 | ;;; Copyright © 2016 David Craven <david@craven.ch> | 4 | ;;; Copyright © 2016 David Craven <david@craven.ch> |
| 5 | ;;; Copyright © 2017, 2020 Efraim Flashner <efraim@flashner.co.il> | 5 | ;;; Copyright © 2017, 2020 Efraim Flashner <efraim@flashner.co.il> |
| @@ -79,26 +79,31 @@ | |||
| 79 | #:export (make-gcc-arm-none-eabi-4.9 | 79 | #:export (make-gcc-arm-none-eabi-4.9 |
| 80 | make-gcc-arm-none-eabi-6 | 80 | make-gcc-arm-none-eabi-6 |
| 81 | make-gcc-arm-none-eabi-7-2018-q2-update | 81 | make-gcc-arm-none-eabi-7-2018-q2-update |
| 82 | make-gcc-arm-none-eabi-9-2020-q2-update | ||
| 82 | make-gcc-arm-none-eabi-12.3.rel1 | 83 | make-gcc-arm-none-eabi-12.3.rel1 |
| 83 | 84 | ||
| 84 | make-gcc-vc4 | 85 | make-gcc-vc4 |
| 85 | 86 | ||
| 86 | make-newlib-arm-none-eabi | 87 | make-newlib-arm-none-eabi |
| 87 | make-newlib-arm-none-eabi-7-2018-q2-update | 88 | make-newlib-arm-none-eabi-7-2018-q2-update |
| 89 | make-newlib-arm-none-eabi-9-2020-q2-update | ||
| 88 | make-newlib-arm-none-eabi-12.3.rel1 | 90 | make-newlib-arm-none-eabi-12.3.rel1 |
| 89 | 91 | ||
| 90 | make-newlib-nano-arm-none-eabi | 92 | make-newlib-nano-arm-none-eabi |
| 91 | make-newlib-nano-arm-none-eabi-7-2018-q2-update | 93 | make-newlib-nano-arm-none-eabi-7-2018-q2-update |
| 94 | make-newlib-nano-arm-none-eabi-9-2020-q2-update | ||
| 92 | make-newlib-nano-arm-none-eabi-12.3.rel1 | 95 | make-newlib-nano-arm-none-eabi-12.3.rel1 |
| 93 | 96 | ||
| 94 | make-arm-none-eabi-toolchain-4.9 | 97 | make-arm-none-eabi-toolchain-4.9 |
| 95 | make-arm-none-eabi-toolchain-6 | 98 | make-arm-none-eabi-toolchain-6 |
| 96 | make-arm-none-eabi-toolchain-7-2018-q2-update | 99 | make-arm-none-eabi-toolchain-7-2018-q2-update |
| 100 | make-arm-none-eabi-toolchain-9-2020-q2-update | ||
| 97 | make-arm-none-eabi-toolchain-12.3.rel1 | 101 | make-arm-none-eabi-toolchain-12.3.rel1 |
| 98 | 102 | ||
| 99 | make-arm-none-eabi-nano-toolchain-4.9 | 103 | make-arm-none-eabi-nano-toolchain-4.9 |
| 100 | make-arm-none-eabi-nano-toolchain-6 | 104 | make-arm-none-eabi-nano-toolchain-6 |
| 101 | make-arm-none-eabi-nano-toolchain-7-2018-q2-update | 105 | make-arm-none-eabi-nano-toolchain-7-2018-q2-update |
| 106 | make-arm-none-eabi-nano-toolchain-9-2020-q2-update | ||
| 102 | make-arm-none-eabi-nano-toolchain-12.3.rel1 | 107 | make-arm-none-eabi-nano-toolchain-12.3.rel1 |
| 103 | 108 | ||
| 104 | make-gdb-arm-none-eabi | 109 | make-gdb-arm-none-eabi |
| @@ -475,6 +480,145 @@ embedded-7-branch/") | |||
| 475 | (make-base-newlib-arm-none-eabi-7-2018-q2-update (make-newlib-nano-arm-none-eabi)))) | 480 | (make-base-newlib-arm-none-eabi-7-2018-q2-update (make-newlib-nano-arm-none-eabi)))) |
| 476 | 481 | ||
| 477 | 482 | ||
| 483 | ;;; The following definitions are for the "9-2020-q2-update" variant of the | ||
| 484 | ;;; ARM cross toolchain as offered on https://developer.arm.com | ||
| 485 | (define make-gcc-arm-none-eabi-9-2020-q2-update | ||
| 486 | (mlambda () | ||
| 487 | (let ((xgcc (cross-gcc "arm-none-eabi" | ||
| 488 | #:xgcc gcc-9 | ||
| 489 | #:xbinutils (cross-binutils "arm-none-eabi"))) | ||
| 490 | (commit "13861a80750d118fbdca6006ab175903bacbb7ec") | ||
| 491 | (revision "1")) | ||
| 492 | (package (inherit xgcc) | ||
| 493 | (version (git-version "9-2020-q2-update" revision commit)) | ||
| 494 | (source | ||
| 495 | (origin | ||
| 496 | (inherit (package-source xgcc)) | ||
| 497 | (method git-fetch) | ||
| 498 | (uri (git-reference | ||
| 499 | (url "git://gcc.gnu.org/git/gcc.git") | ||
| 500 | (commit commit))) | ||
| 501 | (file-name (git-file-name "gcc-arm-embedded" version)) | ||
| 502 | (sha256 | ||
| 503 | (base32 | ||
| 504 | "1cshb1wbynjac3icbf2na633k4d8r7nqn4nv0d65q6f78w295h97")) | ||
| 505 | (patches | ||
| 506 | (append | ||
| 507 | (origin-patches (package-source gcc-9)) | ||
| 508 | (search-patches | ||
| 509 | "gcc-10-cross-environment-variables.patch"))))) | ||
| 510 | (native-inputs | ||
| 511 | (modify-inputs (package-native-inputs xgcc) | ||
| 512 | (delete "isl") | ||
| 513 | (prepend flex isl-0.18))) | ||
| 514 | (arguments | ||
| 515 | (substitute-keyword-arguments (package-arguments xgcc) | ||
| 516 | ((#:phases phases) | ||
| 517 | #~(modify-phases #$phases | ||
| 518 | (add-after 'unpack 'expand-version-string | ||
| 519 | (lambda _ | ||
| 520 | (make-file-writable "gcc/DEV-PHASE") | ||
| 521 | (with-output-to-file "gcc/DEV-PHASE" | ||
| 522 | (lambda () | ||
| 523 | (display "9-2020-q2-update"))))) | ||
| 524 | (add-after 'unpack 'fix-genmultilib | ||
| 525 | (lambda _ | ||
| 526 | (substitute* "gcc/genmultilib" | ||
| 527 | (("#!/bin/sh") | ||
| 528 | (string-append "#!" (which "sh")))))) | ||
| 529 | (add-after 'set-paths 'augment-CPLUS_INCLUDE_PATH | ||
| 530 | (lambda* (#:key inputs #:allow-other-keys) | ||
| 531 | (let ((gcc (assoc-ref inputs "gcc"))) | ||
| 532 | ;; Remove the default compiler from | ||
| 533 | ;; CPLUS_INCLUDE_PATH to prevent header conflict | ||
| 534 | ;; with the GCC from native-inputs. | ||
| 535 | (setenv "CPLUS_INCLUDE_PATH" | ||
| 536 | (string-join | ||
| 537 | (delete (string-append gcc "/include/c++") | ||
| 538 | (string-split | ||
| 539 | (getenv "CPLUS_INCLUDE_PATH") | ||
| 540 | #\:)) | ||
| 541 | ":")) | ||
| 542 | (format #t | ||
| 543 | "environment variable `CPLUS_INCLUDE_PATH'\ | ||
| 544 | changed to ~a~%" | ||
| 545 | (getenv "CPLUS_INCLUDE_PATH"))))))) | ||
| 546 | ((#:configure-flags flags) | ||
| 547 | ;; The configure flags are largely identical to the flags | ||
| 548 | ;; used by the "GCC ARM embedded" project. | ||
| 549 | #~(append (list "--enable-multilib" | ||
| 550 | "--with-newlib" | ||
| 551 | "--with-multilib-list=rmprofile" | ||
| 552 | "--with-host-libstdcxx=-static-libgcc \ | ||
| 553 | -Wl,-Bstatic,-lstdc++,-Bdynamic -lm" | ||
| 554 | "--enable-plugins" | ||
| 555 | "--disable-decimal-float" | ||
| 556 | "--disable-libffi" | ||
| 557 | "--disable-libgomp" | ||
| 558 | "--disable-libmudflap" | ||
| 559 | "--disable-libquadmath" | ||
| 560 | "--disable-libssp" | ||
| 561 | "--disable-libstdcxx-pch" | ||
| 562 | "--disable-nls" | ||
| 563 | "--disable-shared" | ||
| 564 | "--disable-threads" | ||
| 565 | "--disable-tls") | ||
| 566 | (delete "--disable-multilib" #$flags))))) | ||
| 567 | (native-search-paths | ||
| 568 | (list (search-path-specification | ||
| 569 | (variable "CROSS_C_INCLUDE_PATH") | ||
| 570 | (files '("arm-none-eabi/include"))) | ||
| 571 | (search-path-specification | ||
| 572 | (variable "CROSS_CPLUS_INCLUDE_PATH") | ||
| 573 | (files '("arm-none-eabi/include/c++" | ||
| 574 | "arm-none-eabi/include/c++/arm-none-eabi" | ||
| 575 | "arm-none-eabi/include"))) | ||
| 576 | (search-path-specification | ||
| 577 | (variable "CROSS_LIBRARY_PATH") | ||
| 578 | (files '("arm-none-eabi/lib"))))))))) | ||
| 579 | |||
| 580 | (define make-base-newlib-arm-none-eabi-9-2020-q2-update | ||
| 581 | ;; This is the same commit as used for the 9-2020-q2-update release | ||
| 582 | ;; according to the release.txt. | ||
| 583 | (mlambda (base) | ||
| 584 | (let ((commit "6d79e0a58866548f435527798fbd4a6849d05bc7") | ||
| 585 | (revision "0")) | ||
| 586 | (package | ||
| 587 | (inherit base) | ||
| 588 | (version (git-version "3.3.0" revision commit)) | ||
| 589 | (source | ||
| 590 | (origin | ||
| 591 | (method git-fetch) | ||
| 592 | (uri (git-reference | ||
| 593 | (url "http://sourceware.org/git/newlib-cygwin.git") | ||
| 594 | (commit commit))) | ||
| 595 | (file-name (git-file-name "newlib" version)) | ||
| 596 | (sha256 | ||
| 597 | (base32 | ||
| 598 | "095j23mg928rmf4yqmj39wc0nsd207liqrdw4ygh58nygsm4gpmh")))) | ||
| 599 | (arguments | ||
| 600 | (substitute-keyword-arguments (package-arguments base) | ||
| 601 | ;; The configure flags are identical to the flags used by the "GCC | ||
| 602 | ;; ARM embedded" project. | ||
| 603 | ((#:configure-flags flags) | ||
| 604 | `(cons* "--enable-newlib-io-c99-formats" | ||
| 605 | "--enable-newlib-retargetable-locking" | ||
| 606 | "--with-headers=yes" | ||
| 607 | ,flags)))) | ||
| 608 | (native-inputs | ||
| 609 | `(("xbinutils" ,(cross-binutils "arm-none-eabi")) | ||
| 610 | ("xgcc" ,(make-gcc-arm-none-eabi-9-2020-q2-update)) | ||
| 611 | ("texinfo" ,texinfo))))))) | ||
| 612 | |||
| 613 | (define make-newlib-arm-none-eabi-9-2020-q2-update | ||
| 614 | (mlambda () | ||
| 615 | (make-base-newlib-arm-none-eabi-9-2020-q2-update (make-newlib-arm-none-eabi)))) | ||
| 616 | |||
| 617 | (define make-newlib-nano-arm-none-eabi-9-2020-q2-update | ||
| 618 | (mlambda () | ||
| 619 | (make-base-newlib-arm-none-eabi-9-2020-q2-update (make-newlib-nano-arm-none-eabi)))) | ||
| 620 | |||
| 621 | |||
| 478 | ;;; The following definitions are for the "12.3.rel1" variant of the | 622 | ;;; The following definitions are for the "12.3.rel1" variant of the |
| 479 | ;;; ARM cross toolchain as offered on https://developer.arm.com | 623 | ;;; ARM cross toolchain as offered on https://developer.arm.com |
| 480 | (define-public make-gcc-arm-none-eabi-12.3.rel1 | 624 | (define-public make-gcc-arm-none-eabi-12.3.rel1 |
| @@ -723,6 +867,18 @@ languages are C and C++.") | |||
| 723 | (make-gcc-arm-none-eabi-7-2018-q2-update) | 867 | (make-gcc-arm-none-eabi-7-2018-q2-update) |
| 724 | (make-newlib-nano-arm-none-eabi-7-2018-q2-update)))) | 868 | (make-newlib-nano-arm-none-eabi-7-2018-q2-update)))) |
| 725 | 869 | ||
| 870 | (define make-arm-none-eabi-toolchain-9-2020-q2-update | ||
| 871 | (mlambda () | ||
| 872 | (make-arm-none-eabi-toolchain | ||
| 873 | (make-gcc-arm-none-eabi-9-2020-q2-update) | ||
| 874 | (make-newlib-arm-none-eabi-9-2020-q2-update)))) | ||
| 875 | |||
| 876 | (define make-arm-none-eabi-nano-toolchain-9-2020-q2-update | ||
| 877 | (mlambda () | ||
| 878 | (make-arm-none-eabi-toolchain | ||
| 879 | (make-gcc-arm-none-eabi-9-2020-q2-update) | ||
| 880 | (make-newlib-nano-arm-none-eabi-9-2020-q2-update)))) | ||
| 881 | |||
| 726 | (define make-arm-none-eabi-toolchain-12.3.rel1 | 882 | (define make-arm-none-eabi-toolchain-12.3.rel1 |
| 727 | (mlambda () | 883 | (mlambda () |
| 728 | (make-arm-none-eabi-toolchain | 884 | (make-arm-none-eabi-toolchain |
