andrew-wja added a comment.

In D93164#3252509 <https://reviews.llvm.org/D93164#3252509>, @lancethepants 
wrote:

> In D93164#3250945 <https://reviews.llvm.org/D93164#3250945>, @andrew-wja 
> wrote:
>
>> In D93164#3048130 <https://reviews.llvm.org/D93164#3048130>, @lancethepants 
>> wrote:
>>
>>> In D93164#2653067 <https://reviews.llvm.org/D93164#2653067>, @mgorny wrote:
>>>
>>>> This change breaks cross-compilation now, as it tries running an 
>>>> executable built for the target system:
>>>>
>>>>   FAILED: tools/clang/lib/Tooling/ASTNodeAPI.json 
>>>>   cd /home/mgorny/llvm-project/build.arm64/tools/clang/lib/Tooling && 
>>>> /home/mgorny/llvm-project/build.arm64/bin/clang-ast-dump 
>>>> --skip-processing=0 
>>>> --astheader=/home/mgorny/llvm-project/build.arm64/tools/clang/lib/Tooling/ASTTU.cpp
>>>>  -I /home/mgorny/llvm-project/build.arm64/lib/clang/13.0.0/include -I 
>>>> /home/mgorny/llvm-project/llvm/../clang/include -I 
>>>> /home/mgorny/llvm-project/build.arm64/tools/clang/include -I 
>>>> /home/mgorny/llvm-project/build.arm64/include -I 
>>>> /home/mgorny/llvm-project/llvm/include -I 
>>>> /sysroot/arm64/usr/include/c++/v1 -I /usr/lib/clang/11.0.1/include -I 
>>>> /sysroot/arm64/usr/include --json-output-path 
>>>> /home/mgorny/llvm-project/build.arm64/tools/clang/lib/Tooling/ASTNodeAPI.json
>>>>   /bin/sh: /home/mgorny/llvm-project/build.arm64/bin/clang-ast-dump: Exec 
>>>> format error
>>>>
>>>> I guess you can look at TableGens how to correctly generate and use host 
>>>> executables.
>>>
>>> I am now running into this error now that clang13 has released.  I cannot 
>>> figure a way around this. I do not see any cmake options similar to the 
>>> tablegens that allow you to specify the binary for the build system.  Am I 
>>> missing something or is clang13 just broken for cross compilation?
>>
>> Another confirmation that this change has broken cross compilation. I have 
>> tried setting both `-DCLANG_TOOLING_BUILD_AST_INTROSPECTION=OFF` and 
>> `-DCMAKE_CROSSCOMPILING=ON` separately and in combination. This means that 
>> LLVM cannot be cross compiled for AArch64, which is a pretty serious problem!
>
> So I did find a solution. Maybe somewhere else in the forums or on irc. Can't 
> remember for sure.
>
> -DCMAKE_SYSTEM_NAME="Linux"
> Add this is well to your cmake invocation. For some reason this triggers in 
> cmake that we are cross-compiling. Why -DCMAKE_CROSSCOMPILING=ON is 
> insufficient I have no idea why. I'm compiling on linux for linux, didn't 
> think I'd need it.  Kind of unintuitive, but that should hopefully get you 
> going.

@lancethepants @smeenai thanks for the pointers! Unfortunately, it still 
doesn't work for me after passing -DCMAKE_SYSTEM_NAME="Linux". Passing that 
option did change the CMake output, so it's definitely recognized at least (the 
messages about which sanitizer tests will run now call the platform "Linux" as 
opposed to referring to the platform as default). I am also compiling on Linux 
for Linux, I'm just trying to build an AArch64 toolchain which I can copy to an 
SD card for testing on an AArch64 board. @lancethepants could you check your 
CMake version where you got this to work? I'm using CMake 3.22.1 and trying to 
build llvmorg-13.0.0

The full invocation I'm using is the following:

  cmake -G Ninja \
    -DLLVM_TABLEGEN=${TOP}/${CLANG_TBLGEN_DIR}/bin/llvm-tblgen \
    -DCLANG_TABLEGEN=${TOP}/${CLANG_TBLGEN_DIR}/bin/clang-tblgen \
    -DCMAKE_SYSTEM_NAME="Linux" \
    -DCMAKE_CROSSCOMPILING=ON \
    -DCLANG_TOOLING_BUILD_AST_INTROSPECTION=OFF \
    -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc \
    -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ \
    -DCMAKE_BUILD_TYPE=MinSizeRel \
    -DCMAKE_INSTALL_PREFIX=${TOP}/${ROOT_DIR} \
    -DLLVM_DEFAULT_TARGET_TRIPLE=aarch64-linux-gnu \
    -DLLVM_NATIVE_ARCH="X86" \
    -DLLVM_TARGET_ARCH="AArch64" \
    -DLLVM_TARGETS_TO_BUILD="AArch64" \
    -DLLVM_ENABLE_PROJECTS="clang;compiler-rt;lld;" \
    -DLLVM_ENABLE_TERMINFO=OFF \
    -DLLVM_ENABLE_BINDINGS=OFF \
    -DLLVM_BUILD_EXAMPLES=OFF \
    -DLLVM_BUILD_TESTS=OFF \
    -DLLVM_BUILD_BENCHMARKS=OFF \
    ${TOP}/${SRC_DIR}/llvm/


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D93164/new/

https://reviews.llvm.org/D93164

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to