[PATCH] D41623: [cmake] [libcxxabi] Fix path problems when cross compiling.
Don Hinton via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Jan 19 12:10:01 PST 2018
hintonda added a comment.
In https://reviews.llvm.org/D41623#982189, @phosek wrote:
> Isn't `NO_DEFAULT_PATH` more appropriate here? That's what libc++ uses as well.
Unfortunately no.
When cross compiling, it's important to look for headers in CMAKE_SYSROOT and/or CMAKE_FIND_ROOT_PATH, or you'll end up finding for headers on the host, not the target. To make sure this works as expected, cmake recommends using `set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)` -- see https://cmake.org/Wiki/CMake_Cross_Compiling for details.
With `CMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY` and `CMAKE_SYSROOT` set, all `find_XXX()` commands will add the `CMAKE_SYSROOT` prefix to all the paths used in the search. So, if you are trying to look in a local source directory, you'll never find it, because `find_XXX()` will actually use `${CMAKE_SYSROOT}/<my local path>`, which is always the wrong place.
These `find_path()` invocations are looking in specific places which exist on the host system, not the target system.
Repository:
rCXXA libc++abi
https://reviews.llvm.org/D41623
More information about the cfe-commits
mailing list