summaryrefslogtreecommitdiff
path: root/gnu/packages/embedded.scm
diff options
context:
space:
mode:
authorRutherther <rutherther@protonmail.com>2024-09-13 11:42:26 +0000
committerLudovic Courtès <ludo@gnu.org>2024-10-12 19:23:34 +0200
commit979003c0f0fe30d0328c4d9fc526cc4cde234b9b (patch)
tree76a708272ae40663c6b600d46c42e9bfc1fa231d /gnu/packages/embedded.scm
parentc9aae9300af62686179009302d5b02e8c11b98b7 (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.scm110
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