[llvm-dev] Problem on cross-compiling compiler-rt

王磊 via llvm-dev llvm-dev at lists.llvm.org
Tue May 3 19:24:17 PDT 2016

I finally solved my problem. Chris's suggestion helps much, but there are still a few problems to build cross platform compiler-rt.
-DLLVM_BUILD_EXTERNAL_COMPILER_RT=On -> This is valid and required to force compiler-rt to be built by the just-built clang.
While using there two additional options, I still got errors. The build system successfully configured and built clang/LLVM but failed to configure compiler-rt due to the clang checking in compiler-rt's Cmake system.
I add x86 into LLVM_TARGET_ARCH, and this helps the just-built clang pass the CMake check, but failed in another checking which is invoked by test_target_arch. The test_target_arch is used to setup flags used for building compiler-rt, but it uses try_compile() function, which compiles a simple test code using libraries and invokes linker and linker scripts, flags, etc.. Without compiler-rt, clang will, of course, fails to link programs. However, compiler-rt does not need clang to link. I forced try_compile() successful, and everything goes smoothly. Inconveniently, I have to use clang integrated an spare x86 target.
Moreover, in compiler-rt's built-in library, there are some emulating (?) libraries, such as emutls and eprintf, that are using host system header files, which may potentially cause compatible problem. I'm not sure if they should be included in GENERIC_SOURCES.
I hope this information could help the cross-compiling of compiler-rt.
Thank you. Thanks, Chris and yanglee.


-----Original Messages-----
From: "Chris Bieneman" <beanz at apple.com>
Sent Time: Wednesday, May 4, 2016
To: "李阳" <yanglee.cqu at gmail.com>
Cc: "王磊" <wanglei at ia.ac.cn>, "LLVM Dev" <llvm-dev at lists.llvm.org>
Subject: Re: [llvm-dev] Problem on cross-compiling compiler-rt

This is currently a rough area in our build system, but there are two CMake options you probably need to set.

(1) -DLLVM_BUILD_EXTERNAL_COMPILER_RT=On —> This option causes the build to use the just-built clang when building compiler-rt
(2) -DCOMPILER_RT_DEFAULT_TARGET_ARCH=??? —> This is where you specify which architecture you want to build the compiler-rt archives and libraries for

Hopefully in the near future we’ll have a better story for building this functionality.

Hope this helps,

On May 3, 2016, at 12:09 AM, 李阳 via llvm-dev <llvm-dev at lists.llvm.org> wrote:

Hi WangLei,

Do you mean that the version 3.9 is LLVM project 3.9 and 3.5 is CMake 3.5?

In the guide[GetStarted.rst], the tutorial says before running CMake command, you must checkout all the source code.  CMake does not pickup newly added source directories in incremental builds.

Have you cross-compiled the LLVM/Clang for ARM, or other successfully?


2016-05-03 14:42 GMT+08:00 王磊 via llvm-dev <llvm-dev at lists.llvm.org>:

I'm trying to use Clang/LLVM as a cross-compiling toolchain. In previous version of LLVM with the old configure/Makefile building system, I'm able to build Clang/LLVM for target architecture with the host GCC firstly and then use the generated cross compiler to compile the compiler-rt project, and, consequently, I can get a cross compiler as well as the compiler-rt library. However, when I move to version 3.9 which abandoned configure/Makefile and uses CMake now, it always compile the compiler-rt simultaneously with the host GCC. The same problem is also existing in 3.5 CMake building system. It seems that in the CMake building system compiler-rt is not dependent on the generated toolchain. I also tried to compile the compiler-rt after Clang/LLVM has been built, and there is another problem that the generated Clang/LLVM cannot pass the CMake checking without compiler-rt, which is obvious... So is there any way that I can solve this problem. Thank you.

Lei Wang

LLVM Developers mailing list
llvm-dev at lists.llvm.org

LLVM Developers mailing list
llvm-dev at lists.llvm.org

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160504/fdeecf6c/attachment.html>

More information about the llvm-dev mailing list