[all-commits] [llvm/llvm-project] bc53eb: [docs] HowToCrossCompileLLVM.rst: update cmake opt...

fourdim via All-commits all-commits at lists.llvm.org
Sat Feb 19 04:37:27 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: bc53ebbda8fb9727784a0429730b7902fed593e6
      https://github.com/llvm/llvm-project/commit/bc53ebbda8fb9727784a0429730b7902fed593e6
  Author: fourdim <fourdim at foxmail.com>
  Date:   2022-02-19 (Sat, 19 Feb 2022)

  Changed paths:
    M llvm/docs/HowToCrossCompileLLVM.rst

  Log Message:
  -----------
  [docs] HowToCrossCompileLLVM.rst: update cmake options

This patch updates the cmake options suggested when cross compiling. This should fix [#52819](https://github.com/llvm/llvm-project/issues/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




More information about the All-commits mailing list