diff options
| author | Rutherther <rutherther@protonmail.com> | 2024-09-13 11:42:26 +0000 |
|---|---|---|
| committer | Ludovic Courtès <ludo@gnu.org> | 2024-10-12 19:23:34 +0200 |
| commit | 979003c0f0fe30d0328c4d9fc526cc4cde234b9b (patch) | |
| tree | 76a708272ae40663c6b600d46c42e9bfc1fa231d /gnu/packages/embedded.scm | |
| parent | c9aae9300af62686179009302d5b02e8c11b98b7 (diff) | |
gnu: arm-none-eabi toolchain 12.3.rel1
Introduces arm-none-eabi 12.3.rel1 toolchain
The arguments for this toolchain are taken mostly out of here
https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads/12-3-rel1
* gnu/packages/patches/newlib-getentropy.patch: Add a patch.
* gnu/local.mk: Register it.
* gnu/packages/embedded.scm (make-gcc-arm-none-eabi-12.3.rel1): Add variable.
* gnu/packages/embedded.scm (make-newlib-arm-none-eabi-12.3.rel1): Add variable.
* gnu/packages/embedded.scm (make-newlib-nano-arm-none-eabi-12.3.rel1): Add variable.
* gnu/packages/embedded.scm (make-arm-none-eabi-toolchain-12.3.rel1): Add variable.
* gnu/packages/embedded.scm (make-arm-none-eabi-toolchain-nano-12.3.rel1): Add variable.
Change-Id: If4220c6bc7b1def240cbb9d5d245758f7c51a8a0
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'gnu/packages/embedded.scm')
| -rw-r--r-- | gnu/packages/embedded.scm | 110 |
1 files changed, 109 insertions, 1 deletions
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm index 4b9da1f5298..cc999d35f88 100644 --- a/gnu/packages/embedded.scm +++ b/gnu/packages/embedded.scm | |||
| @@ -78,22 +78,27 @@ | |||
| 78 | #:export (make-gcc-arm-none-eabi-4.9 | 78 | #:export (make-gcc-arm-none-eabi-4.9 |
| 79 | make-gcc-arm-none-eabi-6 | 79 | make-gcc-arm-none-eabi-6 |
| 80 | make-gcc-arm-none-eabi-7-2018-q2-update | 80 | make-gcc-arm-none-eabi-7-2018-q2-update |
| 81 | make-gcc-arm-none-eabi-12.3.rel1 | ||
| 81 | 82 | ||
| 82 | make-gcc-vc4 | 83 | make-gcc-vc4 |
| 83 | 84 | ||
| 84 | make-newlib-arm-none-eabi | 85 | make-newlib-arm-none-eabi |
| 85 | make-newlib-arm-none-eabi-7-2018-q2-update | 86 | make-newlib-arm-none-eabi-7-2018-q2-update |
| 87 | make-newlib-arm-none-eabi-12.3.rel1 | ||
| 86 | 88 | ||
| 87 | make-newlib-nano-arm-none-eabi | 89 | make-newlib-nano-arm-none-eabi |
| 88 | make-newlib-nano-arm-none-eabi-7-2018-q2-update | 90 | make-newlib-nano-arm-none-eabi-7-2018-q2-update |
| 91 | make-newlib-nano-arm-none-eabi-12.3.rel1 | ||
| 89 | 92 | ||
| 90 | make-arm-none-eabi-toolchain-4.9 | 93 | make-arm-none-eabi-toolchain-4.9 |
| 91 | make-arm-none-eabi-toolchain-6 | 94 | make-arm-none-eabi-toolchain-6 |
| 92 | make-arm-none-eabi-toolchain-7-2018-q2-update | 95 | make-arm-none-eabi-toolchain-7-2018-q2-update |
| 96 | make-arm-none-eabi-toolchain-12.3.rel1 | ||
| 93 | 97 | ||
| 94 | make-arm-none-eabi-nano-toolchain-4.9 | 98 | make-arm-none-eabi-nano-toolchain-4.9 |
| 95 | make-arm-none-eabi-nano-toolchain-6 | 99 | make-arm-none-eabi-nano-toolchain-6 |
| 96 | make-arm-none-eabi-nano-toolchain-7-2018-q2-update | 100 | make-arm-none-eabi-nano-toolchain-7-2018-q2-update |
| 101 | make-arm-none-eabi-nano-toolchain-12.3.rel1 | ||
| 97 | 102 | ||
| 98 | make-gdb-arm-none-eabi | 103 | make-gdb-arm-none-eabi |
| 99 | 104 | ||
| @@ -469,11 +474,102 @@ embedded-7-branch/") | |||
| 469 | (make-base-newlib-arm-none-eabi-7-2018-q2-update (make-newlib-nano-arm-none-eabi)))) | 474 | (make-base-newlib-arm-none-eabi-7-2018-q2-update (make-newlib-nano-arm-none-eabi)))) |
| 470 | 475 | ||
| 471 | 476 | ||
| 477 | ;;; The following definitions are for the "12.3.rel1" variant of the | ||
| 478 | ;;; ARM cross toolchain as offered on https://developer.arm.com | ||
| 479 | (define-public make-gcc-arm-none-eabi-12.3.rel1 | ||
| 480 | (mlambda () | ||
| 481 | (let ((base (make-gcc-arm-none-eabi-7-2018-q2-update)) | ||
| 482 | (xgcc-base (cross-gcc "arm-none-eabi" | ||
| 483 | #:xgcc gcc-12 | ||
| 484 | #:xbinutils (cross-binutils "arm-none-eabi")))) | ||
| 485 | (package | ||
| 486 | (inherit base) | ||
| 487 | (version "12.3.rel1") | ||
| 488 | (source | ||
| 489 | (origin | ||
| 490 | (inherit (package-source xgcc-base)) | ||
| 491 | (method git-fetch) | ||
| 492 | (uri (git-reference | ||
| 493 | (url "git://gcc.gnu.org/git/gcc.git") | ||
| 494 | (commit "0f54a73b998b72f7c8452a63730ec3b16fc47854"))) | ||
| 495 | (sha256 | ||
| 496 | (base32 "0r6q0m3d8g3k3rkmnqjw8aw5fcnsrmywf4ispdkxmk1al3whk1vk")))) | ||
| 497 | (arguments | ||
| 498 | (substitute-keyword-arguments (package-arguments base) | ||
| 499 | ((#:phases phases) | ||
| 500 | #~(modify-phases #$phases | ||
| 501 | (replace 'expand-version-string | ||
| 502 | (lambda _ | ||
| 503 | (make-file-writable "gcc/DEV-PHASE") | ||
| 504 | (with-output-to-file "gcc/DEV-PHASE" | ||
| 505 | (lambda () | ||
| 506 | (display "12.3.rel1"))))))) | ||
| 507 | ((#:configure-flags flags) | ||
| 508 | #~(cons* "--with-multilib-list=aprofile,rmprofile" | ||
| 509 | "--with-headers=yes" | ||
| 510 | "--enable-checking=release" | ||
| 511 | "--with-gnu-as" | ||
| 512 | "--with-gnu-ld" | ||
| 513 | (filter | ||
| 514 | (lambda (flag) | ||
| 515 | (not (member flag | ||
| 516 | '("--with-multilib-list=rmprofile" | ||
| 517 | "--enable-plugins" | ||
| 518 | "--disable-libffi")))) | ||
| 519 | #$flags))))))))) | ||
| 520 | |||
| 521 | (define make-base-newlib-arm-none-eabi-12.3.rel1 | ||
| 522 | (mlambda (original-base) | ||
| 523 | (let ((base (make-base-newlib-arm-none-eabi-7-2018-q2-update original-base)) | ||
| 524 | (commit "4c7d0dfec5793cbf5cf3930b91f930479126d8ce") | ||
| 525 | (revision "0")) | ||
| 526 | (package | ||
| 527 | (inherit base) | ||
| 528 | (version (git-version "4.3.0" revision commit)) | ||
| 529 | (source | ||
| 530 | (origin | ||
| 531 | (method git-fetch) | ||
| 532 | (uri (git-reference | ||
| 533 | (url "http://sourceware.org/git/newlib-cygwin.git") | ||
| 534 | (commit commit))) | ||
| 535 | (sha256 | ||
| 536 | (base32 | ||
| 537 | "0drs9v8avh4y2h5bs0ixjn9x662jzkkikx8z034wgl41dxmn6786")))) | ||
| 538 | (arguments (substitute-keyword-arguments (package-arguments base) | ||
| 539 | ((#:configure-flags flags) | ||
| 540 | #~(cons* "--enable-newlib-mb" | ||
| 541 | "--enable-newlib-reent-check-verify" | ||
| 542 | "--enable-newlib-register-fini" | ||
| 543 | #$flags)))))))) | ||
| 544 | |||
| 545 | (define make-newlib-arm-none-eabi-12.3.rel1 | ||
| 546 | (mlambda () | ||
| 547 | (make-base-newlib-arm-none-eabi-12.3.rel1 (make-newlib-arm-none-eabi)))) | ||
| 548 | |||
| 549 | (define make-newlib-nano-arm-none-eabi-12.3.rel1 | ||
| 550 | (mlambda () | ||
| 551 | (make-base-newlib-arm-none-eabi-12.3.rel1 (make-newlib-nano-arm-none-eabi)))) | ||
| 552 | |||
| 553 | |||
| 472 | (define make-libstdc++-arm-none-eabi | 554 | (define make-libstdc++-arm-none-eabi |
| 473 | (mlambda (xgcc newlib) | 555 | (mlambda (xgcc newlib) |
| 474 | (let ((libstdc++ (make-libstdc++ xgcc))) | 556 | (let* ((libstdc++ (make-libstdc++ xgcc)) |
| 557 | (src (package-source libstdc++))) | ||
| 475 | (package | 558 | (package |
| 476 | (inherit libstdc++) | 559 | (inherit libstdc++) |
| 560 | (source | ||
| 561 | (origin | ||
| 562 | (inherit src) | ||
| 563 | (patches (append | ||
| 564 | ; libstdc++ cannot be linked with since the configure phase | ||
| 565 | ; cannot detect properly the presence of getentropy function. | ||
| 566 | ; The function is inside of a header, but it's not present in the resulting | ||
| 567 | ; newlib. configure will conclude getentropy is present, | ||
| 568 | ; random will use getentropy, and any linking with random will fail. | ||
| 569 | (if (version>=? (package-version xgcc) "12.0") | ||
| 570 | (search-patches "newlib-getentropy.patch") | ||
| 571 | '()) | ||
| 572 | (origin-patches src))))) | ||
| 477 | (name "libstdc++-arm-none-eabi") | 573 | (name "libstdc++-arm-none-eabi") |
| 478 | (arguments | 574 | (arguments |
| 479 | (substitute-keyword-arguments (package-arguments libstdc++) | 575 | (substitute-keyword-arguments (package-arguments libstdc++) |
| @@ -626,6 +722,18 @@ languages are C and C++.") | |||
| 626 | (make-gcc-arm-none-eabi-7-2018-q2-update) | 722 | (make-gcc-arm-none-eabi-7-2018-q2-update) |
| 627 | (make-newlib-nano-arm-none-eabi-7-2018-q2-update)))) | 723 | (make-newlib-nano-arm-none-eabi-7-2018-q2-update)))) |
| 628 | 724 | ||
| 725 | (define make-arm-none-eabi-toolchain-12.3.rel1 | ||
| 726 | (mlambda () | ||
| 727 | (make-arm-none-eabi-toolchain | ||
| 728 | (make-gcc-arm-none-eabi-12.3.rel1) | ||
| 729 | (make-newlib-arm-none-eabi-12.3.rel1)))) | ||
| 730 | |||
| 731 | (define make-arm-none-eabi-nano-toolchain-12.3.rel1 | ||
| 732 | (mlambda () | ||
| 733 | (make-arm-none-eabi-toolchain | ||
| 734 | (make-gcc-arm-none-eabi-12.3.rel1) | ||
| 735 | (make-newlib-nano-arm-none-eabi-12.3.rel1)))) | ||
| 736 | |||
| 629 | (define make-gdb-arm-none-eabi | 737 | (define make-gdb-arm-none-eabi |
| 630 | (mlambda () | 738 | (mlambda () |
| 631 | (package | 739 | (package |
