Skip to content

Commit bc53ebb

Browse files
committed
[docs] HowToCrossCompileLLVM.rst: update cmake options
This patch updates the cmake options suggested when cross compiling. This should fix [llvm#52819](llvm#52819). Brad King (Member of CMake) says: The linked [CMAKE_CROSSCOMPILING](https://cmake.org/cmake/help/v3.22/variable/CMAKE_CROSSCOMPILING.html) documentation says: This variable will be set to true by CMake if the `CMAKE_SYSTEM_NAME` variable has been set manually (i.e. in a toolchain file or as a cache entry from the cmake command line). It is not meant to be set by project code or toolchain files. It is always set automatically. Don't put `set(CMAKE_CROSSCOMPILING ON)` anywhere in your code. `CMAKE_CROSSCOMPILING` indicates only whether `CMAKE_SYSTEM_NAME` was set by the user/project/toolchain-file instead of by CMake. In LLVM project, `CMAKE_CROSSCOMPILING` is used to determine whether to execute some tests on the host machine. LLVM needs to use another method for that. `CMAKE_CROSSCOMPILING` is not a reliable indicator of whether produced binaries will run on the host, and does not claim so in its documentation. If one sets `CMAKE_SYSTEM_NAME` to Linux in a toolchain file, and builds on a Linux host, that doesn't mean the target architecture or minimum glibc version is the same. Reviewed By: rengolin Differential Revision: https://reviews.llvm.org/D119804
1 parent 9106b5e commit bc53ebb

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

llvm/docs/HowToCrossCompileLLVM.rst

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,16 @@ see :doc:`CMake`.
4040

4141
The CMake options you need to add are:
4242

43-
* ``-DCMAKE_CROSSCOMPILING=True``
43+
* ``-DCMAKE_SYSTEM_NAME=<target-system>``
4444
* ``-DCMAKE_INSTALL_PREFIX=<install-dir>``
4545
* ``-DLLVM_TABLEGEN=<path-to-host-bin>/llvm-tblgen``
4646
* ``-DCLANG_TABLEGEN=<path-to-host-bin>/clang-tblgen``
4747
* ``-DLLVM_DEFAULT_TARGET_TRIPLE=arm-linux-gnueabihf``
4848
* ``-DLLVM_TARGET_ARCH=ARM``
4949
* ``-DLLVM_TARGETS_TO_BUILD=ARM``
5050

51+
Note: ``CMAKE_CROSSCOMPILING`` is always set automatically when ``CMAKE_SYSTEM_NAME`` is set. Don't put ``-DCMAKE_CROSSCOMPILING=TRUE`` in your options.
52+
5153
If you're compiling with GCC, you can use architecture options for your target,
5254
and the compiler driver will detect everything that it needs:
5355

0 commit comments

Comments
 (0)