From: Z572 via Guix-patches via <guix-patches@gnu.org>
To: 宋文武 <iyzsong@envs.net>
Cc: 62438@debbugs.gnu.org
Subject: [bug#62438] [PATCH] gnu: llvm: fix riscv64 cross-compile.
Date: Mon, 03 Apr 2023 23:10:24 +0800 [thread overview]
Message-ID: <tencent_18596F7F183AADE5EA2575B5F19B1AA9F408@qq.com> (raw)
Message-ID: <87v8idq9wf.fsf_-_@qq.com> (raw)
In-Reply-To: <874jpxb4qa.fsf@envs.net> ("宋文武"'s message of "Mon, 03 Apr 2023 19:11:09 +0800")
宋文武 <iyzsong@envs.net> writes:
> Z572 <873216071@qq.com> writes:
>
>
>> - (system->llvm-target))
>> + (if (target-riscv64?)
>> + "RISCV64"
>> + (system->llvm-target)))
>> #$(string-append "-DLLVM_TARGETS_TO_BUILD="
>> (system->llvm-target)))
>> '())
>> @@ -658,7 +661,9 @@ (define-public llvm-14
>> #$(string-append "-DLLVM_DEFAULT_TARGET_TRIPLE="
>> (%current-target-system))
>> #$(string-append "-DLLVM_TARGET_ARCH="
>> - (system->llvm-target))
>> + (if (target-riscv64?)
>> + "RISCV64"
>> + (system->llvm-target)))
>> #$(string-append "-DLLVM_TARGETS_TO_BUILD="
>> (system->llvm-target)))
>> '())
>
> Hello, our `system->llvm-target` has riscv => "RISCV", does it wrong
> (should be changed to RISCV64) or does it right only for 32bit RISCV?
> And can system->llvm-target be fixed instead of fix each its usage?
>
> Thanks!
>
>
>
>
hello, system->llvm-target work for LLVM_TARGETS_TO_BUILD, but not work
for LLVM_TARGET_ARCH.
llvm.scm (system->llvm-target) also have a commit
;; See the 'lib/Target' directory of LLVM for a list of supported targets.
see
https://github.com/llvm/llvm-project/blob/1fdec59bffc11ae37eb51a1b9869f0696bfd5312/llvm/cmake/config-ix.cmake#L393-#L441,
LLVM_TARGET_ARCH is work for RISCV64 and RISCV32, not RISCV.
xxx|..........cmake/config-ix.cmake..............
432| elseif (LLVM_NATIVE_ARCH MATCHES "wasm64")
433| set(LLVM_NATIVE_ARCH WebAssembly)
434| elseif (LLVM_NATIVE_ARCH MATCHES "riscv32")
435| set(LLVM_NATIVE_ARCH RISCV)
436| elseif (LLVM_NATIVE_ARCH MATCHES "riscv64")
437| set(LLVM_NATIVE_ARCH RISCV)
xxx|.................other.......................
see
https://github.com/llvm/llvm-project/blob/1fdec59bffc11ae37eb51a1b9869f0696bfd5312/llvm/cmake/config-ix.cmake#L450-#L470,
RISCV is work for LLVM_TARGETS_TO_BUILD, it can find /lib/Target/RISCV
directory, if system->llvm_targets return "RISCV64", it cann't
work,because only have RISCV directory.
xxx|...............................cmake/config-ix.cmake.......................
450| list(FIND LLVM_TARGETS_TO_BUILD ${LLVM_NATIVE_ARCH} NATIVE_ARCH_IDX)
451| if (NATIVE_ARCH_IDX EQUAL -1)
452| message(STATUS
453| "Native target ${LLVM_NATIVE_ARCH} is not selected; lli will not JIT code")
454| else ()
455| message(STATUS "Native target architecture is ${LLVM_NATIVE_ARCH}")
456| set(LLVM_NATIVE_TARGET LLVMInitialize${LLVM_NATIVE_ARCH}Target)
457| set(LLVM_NATIVE_TARGETINFO LLVMInitialize${LLVM_NATIVE_ARCH}TargetInfo)
458| set(LLVM_NATIVE_TARGETMC LLVMInitialize${LLVM_NATIVE_ARCH}TargetMC)
459| set(LLVM_NATIVE_ASMPRINTER LLVMInitialize${LLVM_NATIVE_ARCH}AsmPrinter)
460|
461| # We don't have an ASM parser for all architectures yet.
462| if (EXISTS ${PROJECT_SOURCE_DIR}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/CMakeLists.txt)
463| set(LLVM_NATIVE_ASMPARSER LLVMInitialize${LLVM_NATIVE_ARCH}AsmParser)
464| endif ()
465|
466| # We don't have an disassembler for all architectures yet.
467| if (EXISTS ${PROJECT_SOURCE_DIR}/lib/Target/${LLVM_NATIVE_ARCH}/Disassembler/CMakeLists.txt)
468| set(LLVM_NATIVE_DISASSEMBLER LLVMInitialize${LLVM_NATIVE_ARCH}Disassembler)
469| endif ()
470| endif ()
xxx|...........................................other...........................
so a other idea is add a new procedure make -DLLVM_TARGETS_TO_BUILD and
-DLLVM_DEFAULT_TARGET_TRIPLE don't use same procedure.
or not set -DLLVM_TARGET_ARCH like nixpkgs
https://github.com/NixOS/nixpkgs/blob/2766f77c32e171a04d59b636a91083bae862274e/pkgs/development/compilers/llvm/11/llvm/default.nix
it build success on my computer too.
Thoughts?
--
over
next prev parent reply other threads:[~2023-04-03 15:11 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-25 12:13 [bug#62438] [PATCH] gnu: llvm: fix riscv64 cross-compile Z572 via Guix-patches via
2023-04-03 11:11 ` 宋文武 via Guix-patches via
[not found] ` <87v8idq9wf.fsf_-_@qq.com>
2023-04-03 15:10 ` Z572 via Guix-patches via [this message]
2023-04-08 5:32 ` [bug#62438] [PATCH] gnu: llvm: Fix riscv64 cross-compilation Z572 via Guix-patches via
2023-06-09 21:12 ` [bug#62438] [PATCH] gnu: llvm: fix riscv64 cross-compile Ludovic Courtès
[not found] ` <87jzwarpt9.fsf@qq.com>
2023-06-11 14:57 ` Z572 via Guix-patches via
2023-09-07 10:42 ` [bug#62438] [PATCH v2] gnu: llvm: Fix riscv64 cross-compilation iyzsong--- via Guix-patches via
2023-10-19 19:55 ` Ludovic Courtès
2023-10-20 9:58 ` bug#62438: " 宋文武 via Guix-patches via
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=tencent_18596F7F183AADE5EA2575B5F19B1AA9F408@qq.com \
--to=guix-patches@gnu.org \
--cc=62438@debbugs.gnu.org \
--cc=873216071@qq.com \
--cc=iyzsong@envs.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).