clang-check doesn't find C++ headers with -stdlib=libc++ option

I have clang, clang-check, libc++, libc++abi, etc. installed in a tree rooted in a non-standard location. The directory structure looks like this:



_ clang

_ clang-check


_ various built-in C header files



_ various libc++ header files

_lib → lib64


_ various libraries

Note that the above directory structure is standard, only the root directory is in a non-standard location. A simple C++ file like this:

// /tmp/fill.cpp



std::vector v{1, 2, 3};

int main() {

std::fill(v.begin(), v.end(), -1);

return 0;


compiles fine with clang++:

$ clang++ -std=c++11 -stdlib=libc++ /tmp/fill.cpp


But with clang-check, it doesn’t compile fine even though compile_commands.json has the exact same clang “command”. Even specifying -stdlib=libc++ on the command line doesn’t work:

$ clang-check /tmp/fill.cpp – -stdlib=libc++ -std=c++11 -xc++

/tmp/fill.cpp:1:10: fatal error: ‘algorithm’ file not found



1 error generated.

Error while processing /tmp/fill.cpp.


But the following works:

$ clang-check /tmp/fill.cpp – -std=c++11 -cxx-isystem ${CLANG_ROOT}/include/c++/v1


Why is clang-check not automatically inferring libc++ header paths the same way clang++ driver finds them? Is there some build configuration that can make clang tools find libc++ headers automatically when -stdlib=libc++ is specified.

BTW, clang-check finds libstdc++ headers if –gcc-toolchain option is specified.

Forgot to mention the platform is Linux. I found where clang++ automatically detects the C++ include path for libc++:



Not sure if this ever gets invoked from clang-check driver.