From 419e359a5e98f546661fc58e3a682378dcc60bca Mon Sep 17 00:00:00 2001 From: Z572 <873216071@qq.com> Date: Thu, 7 Sep 2023 18:42:11 +0800 Subject: gnu: llvm: Fix riscv64 cross-compilation. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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: 宋文武 --- gnu/packages/llvm.scm | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'gnu/packages') diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index daff67f7f2..cd551f4e02 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -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))) #~()) -- cgit v1.2.3