Issues with C++ stdlib include paths and Clang compilation.

Hello,

I’m having difficulties compiling the Clang 3.7.0 release. For this I’m attempting to use gcc 5.2.0 installed in a non-standard location (as the system compiler is gcc 4.4, and not something I have authorization to update).

I’m using the --with-gcc-toolchain option to the cmake command to point to the directory of the gcc 5.2.0 install, and I do get the “The CXX compiler identification is GNU 5.2.0” messages. (But it does this even when I omit the --with-gcc-toolchain option, as I’ve set the CC and CXX environment variables.)

However, when I attempt to use the compiler, I’m apparently getting the system gcc 4.4 include search paths for the standard library, rather than the 5.2.0 paths:

$ bin/clang++ -E -x c++ - -v < /dev/null

#include “…” search starts here:
#include <…> search starts here:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/…/…/…/…/include/c++/4.4.7
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/…/…/…/…/include/c++/4.4.7/x86_64-redhat-linux
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/…/…/…/…/include/c++/4.4.7/backward
/usr/local/include
/path/to/clang/3.7.0/build2/bin/…/lib/clang/3.7.0/include
/usr/include
End of search list.

Am I correct that my compile was unable to find the gcc 5.2.0 C++ standard library, or am I thinking about this in the wrong fashion?

My Google searching and different compilation attempts haven’t been very successful. The --with-gcc-toolchain option isn’t documented all that well, specifying just that it’s “where gcc is installed”, but not saying anything about what, exactly, is expected from that directory (I presume it’s the same as the install prefix passed to the GCC compile; the directory which contains the bin/ lib/ include/, etc. directories where the gcc version is), or what will happen if the C++ stdlib is not found in that directory (is there any error message?).

Thanks.

Try using GCC_INSTALL_PREFIX when you invoke cmake.

Thanks. Adding “-DGCC_INSTALL_PREFIX=/path/to/gcc/5.2.0/” on the cmake command line (as opposed to setting the GCC_INSTALL_PREFIX environment variable) seems to work.

Is there a location where this is documented? http://clang.llvm.org/get_started.html (the first hit when I Google “install clang”) still talks about the --with-gcc-toolchain option, and http://llvm.org/docs/CMake.html (linked from the previous page as more details about cmake and first hit when I search “clang cmake”) doesn’t mention it as a relevant option for the CMake build.

Looks to me like we missed updating the name of the flag when the
get_started page switched from configure to cmake. I've fixed it to say
-DGCC_INSTALL_PREFIX now.

The flag probably deserves documentation on the CMake page as well.
Would you be up to providing a patch? The file to look for is
docs/CMake.rst in the llvm repo.

Rocco Moretti via cfe-dev <cfe-dev@lists.llvm.org> writes: