[all-commits] [llvm/llvm-project] 930105: [CMake] Don't pass CMAKE_C(XX)_COMPILER to the nes...

Martin Storsjö via All-commits all-commits at lists.llvm.org
Tue Jun 21 23:34:52 PDT 2022

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 93010544a813dfbfa64dd7cee68785f572f974d1
  Author: Martin Storsjö <martin at martin.st>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M llvm/cmake/modules/CrossCompile.cmake

  Log Message:
  [CMake] Don't pass CMAKE_C(XX)_COMPILER to the nested NATIVE build when cross compiling

Originally, the nested build was set up with the CMake command
`execute_process` which implicitly passes CC/CXX variables for
the configured compiler, which then was picked up by the nested
CMake. (This CMake behaviour, to implicitly pass such variables
is up for discussion and might change in the future; see

How the nested cmake build is set up was changed in
aa7d6db5c8fc449b2908c6d629d6d9a067f49896 / D40229 - the old behaviour
was brought along by manually passing
configuration. This was then later made optional in
f5f0fffea5ace079cc208fafa65150d23935a4d9 / D40947. But still,
the default if the user doesn't pass
is to pass in the surrounding build's compiler - which usually
doesn't work, and is quite non-obvious to figure out.

Just drop the default passing of the outer compiler, when cross
compiling. This should avoid surprising cases of using the cross
compiler for the native build for essentially all new users trying
to cross compile, until they've discovered CROSS_TOOLCHAIN_FLAGS_NATIVE.

Keep passing these when not cross compiling, e.g. if building with
optimized tablegen.

This was already suggested at the end in D40229, but apparently never
acted upon.

Differential Revision: https://reviews.llvm.org/D126313

More information about the All-commits mailing list