unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
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





  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).