gnu: llvm: Fix riscv64 cross-compilation.

* gnu/packages/llvm.scm (system->llvm-target-arch): New procedure.
(llvm-15,llvm-14,llvm-12): Use It.
(system->llvm-target): Rewrite in terms of 'system->llvm-target-arch'.

Co-authored-by: 宋文武 <iyzsong@member.fsf.org>
This commit is contained in:
Z572 2023-09-07 18:42:11 +08:00 committed by 宋文武
parent b099e5e980
commit 419e359a5e
No known key found for this signature in database
GPG key ID: D415BF253B515976

View file

@ -85,19 +85,32 @@ (define* (system->llvm-target #:optional
"Return the LLVM target name that corresponds to SYSTEM, a system type such
as \"x86_64-linux\"."
;; See the 'lib/Target' directory of LLVM for a list of supported targets.
(match (system->llvm-target-arch system)
("RISCV64" "RISCV")
("X86_64" "X86")
(x x)))
(define* (system->llvm-target-arch #:optional
(system (or (and=> (%current-target-system)
gnu-triplet->nix-system)
(%current-system))))
"Return the LLVM target arch name that corresponds to SYSTEM, a system type such
as \"x86_64-linux\"."
;; See the 'cmake/config-ix.cmake' file of LLVM for a list of supported targets arch.
;; start with # Determine the native architecture.
(letrec-syntax ((matches (syntax-rules (=>)
((_ (system-prefix => target) rest ...)
(if (string-prefix? system-prefix system)
target
(matches rest ...)))
((_)
(error "LLVM target for system is unknown" system)))))
(error "LLVM target arch for system is unknown" system)))))
(matches ("aarch64" => "AArch64")
("armhf" => "ARM")
("mips64el" => "Mips")
("powerpc" => "PowerPC")
("riscv" => "RISCV")
("x86_64" => "X86")
("riscv64" => "RISCV64")
("x86_64" => "X86_64")
("i686" => "X86")
("i586" => "X86"))))
@ -598,7 +611,7 @@ (define-public llvm-15
#$(string-append "-DLLVM_DEFAULT_TARGET_TRIPLE="
(%current-target-system))
#$(string-append "-DLLVM_TARGET_ARCH="
(system->llvm-target))
(system->llvm-target-arch))
#$(string-append "-DLLVM_TARGETS_TO_BUILD="
(system->llvm-target)))
'())
@ -658,7 +671,7 @@ (define-public llvm-14
#$(string-append "-DLLVM_DEFAULT_TARGET_TRIPLE="
(%current-target-system))
#$(string-append "-DLLVM_TARGET_ARCH="
(system->llvm-target))
(system->llvm-target-arch))
#$(string-append "-DLLVM_TARGETS_TO_BUILD="
(system->llvm-target)))
'())
@ -901,7 +914,7 @@ (define-public llvm-12
#$(string-append "-DLLVM_DEFAULT_TARGET_TRIPLE="
(%current-target-system))
#$(string-append "-DLLVM_TARGET_ARCH="
(system->llvm-target))
(system->llvm-target-arch))
#$(string-append "-DLLVM_TARGETS_TO_BUILD="
(system->llvm-target)))
#~())