diff mbox series

[bug#72409] gnu: llvm: Fix misc errors for unsupported targets.

Message ID 0e25963b235b36407c0e7f7b0ef77b02ba6029fe.1722519885.git.mail@cbaines.net
State New
Headers show
Series [bug#72409] gnu: llvm: Fix misc errors for unsupported targets. | expand

Commit Message

Christopher Baines Aug. 1, 2024, 1:44 p.m. UTC
* gnu/packages/llvm.scm (system->llvm-target-arch): Return #f for unknown
targets.
(llvm-15, llvm-14): Handle system->llvm-target-arch and raise a
package-unsupported-target-error condition.

Change-Id: I647f721a64a39bb34196998b7e4adda3a25f1ab3
---
 gnu/packages/llvm.scm | 49 +++++++++++++++++++++++++++----------------
 1 file changed, 31 insertions(+), 18 deletions(-)


base-commit: 56d3d04a442b52097e523dcfebf60ff5bf82bcfd

Comments

Christopher Baines Aug. 11, 2024, 10:34 a.m. UTC | #1
Christopher Baines <mail@cbaines.net> writes:

> * gnu/packages/llvm.scm (system->llvm-target-arch): Return #f for unknown
> targets.
> (llvm-15, llvm-14): Handle system->llvm-target-arch and raise a
> package-unsupported-target-error condition.
>
> Change-Id: I647f721a64a39bb34196998b7e4adda3a25f1ab3
> ---
>  gnu/packages/llvm.scm | 49 +++++++++++++++++++++++++++----------------
>  1 file changed, 31 insertions(+), 18 deletions(-)

Pushed to master as 5f0dcf22a384af08f1e7d5aafff340f3f808b55b.

Chris
diff mbox series

Patch

diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 2614a403c1..0c0ec1bca1 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -78,6 +78,8 @@  (define-module (gnu packages llvm)
   #:use-module (gnu packages vulkan)
   #:use-module (gnu packages xml)
   #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-34)
+  #:use-module (srfi srfi-35)
   #:use-module (ice-9 match)
   #:export (make-lld-wrapper
             system->llvm-target))
@@ -107,8 +109,7 @@  (define* (system->llvm-target-arch #:optional
                               (if (string-prefix? system-prefix system)
                                   target
                                   (matches rest ...)))
-                             ((_)
-                              (error "LLVM target arch for system is unknown" system)))))
+                             ((_) #f))))
     (matches ("aarch64"     => "AArch64")
              ("armhf"       => "ARM")
              ("mips64el"    => "Mips")
@@ -591,15 +592,21 @@  (define-public llvm-15
          ;; These options are required for cross-compiling LLVM according
          ;; to <https://llvm.org/docs/HowToCrossCompileLLVM.html>.
          #$@(if (%current-target-system)
-                #~((string-append "-DLLVM_TABLEGEN="
+                (or (and=>
+                     (system->llvm-target-arch)
+                     (lambda (llvm-target-arch)
+                       #~((string-append "-DLLVM_TABLEGEN="
                                   #+(file-append this-package
                                                  "/bin/llvm-tblgen"))
-                   #$(string-append "-DLLVM_DEFAULT_TARGET_TRIPLE="
-                                    (%current-target-system))
-                   #$(string-append "-DLLVM_TARGET_ARCH="
-                                    (system->llvm-target-arch))
-                   #$(string-append "-DLLVM_TARGETS_TO_BUILD="
-                                    (system->llvm-target)))
+                          #$(string-append "-DLLVM_DEFAULT_TARGET_TRIPLE="
+                                           (%current-target-system))
+                          #$(string-append "-DLLVM_TARGET_ARCH=" llvm-target-arch)
+                          #$(string-append "-DLLVM_TARGETS_TO_BUILD="
+                                           (system->llvm-target)))))
+                    (raise (condition
+                            (&package-unsupported-target-error
+                             (package this-package)
+                             (target (%current-target-system))))))
                 '())
          ;; Note: sadly, the build system refuses the use of
          ;; -DBUILD_SHARED_LIBS=ON and the large static archives are needed to
@@ -651,15 +658,21 @@  (define-public llvm-14
          ;; These options are required for cross-compiling LLVM according
          ;; to <https://llvm.org/docs/HowToCrossCompileLLVM.html>.
          #$@(if (%current-target-system)
-                #~((string-append "-DLLVM_TABLEGEN="
-                                  #+(file-append this-package
-                                                 "/bin/llvm-tblgen"))
-                   #$(string-append "-DLLVM_DEFAULT_TARGET_TRIPLE="
-                                    (%current-target-system))
-                   #$(string-append "-DLLVM_TARGET_ARCH="
-                                    (system->llvm-target-arch))
-                   #$(string-append "-DLLVM_TARGETS_TO_BUILD="
-                                    (system->llvm-target)))
+                (or (and=>
+                     (system->llvm-target-arch)
+                     (lambda (llvm-target-arch)
+                       #~((string-append "-DLLVM_TABLEGEN="
+                                         #+(file-append this-package
+                                                        "/bin/llvm-tblgen"))
+                          #$(string-append "-DLLVM_DEFAULT_TARGET_TRIPLE="
+                                           (%current-target-system))
+                          #$(string-append "-DLLVM_TARGET_ARCH=" llvm-target-arch)
+                          #$(string-append "-DLLVM_TARGETS_TO_BUILD="
+                                           (system->llvm-target)))))
+                    (raise (condition
+                            (&package-unsupported-target-error
+                             (package this-package)
+                             (target (%current-target-system))))))
                 '())
          ;; undefined reference to `__atomic_fetch_add_8' in lib/libLLVMOrcJIT.so.14
          #$@(if (target-ppc32?)