[PATCH] Make compiler-rt tests work with relocatable SDKs on OS X

Kuba Břečka kuba.brecka at gmail.com
Mon Jun 2 16:06:44 PDT 2014


Hi,

I am trying to play a bit with ASan on OS X and I found out that on
recent OS X releases, compiler-rt tests fail to build and run with
CMake. That's because OS X now provides relocatable SDKs with Xcode
and has no system-wide standard headers/libs. I am aware that
currently compiler-rt tests are supported only with CMake.

There are actually two issues:

* Newly built clang binary can't find the platform SDK. Either the
SDKROOT env has to be set or -isysroot passed on command line.
* Newly build clang binary can't find c++ headers. It expects to find
them in "../include/c++" relative to its binary. This issue goes away
if you put libcxx into "llvm/projects/" and build libcxx
simultaneously with llvm.

My proposed patch adds OS X detection into CMake to add the -isysroot
parameter and it creates a symlink pointing from the build directory's
include/c++ into Xcode's toolchain (but only if you don't
simultaneously build libcxx). It also moves a similar SDKROOT
detection from clang's lit config into a util function and uses it in
compiler-rt lit tests as well.

One other solution to make the tests build and pass would be to
enforce OS X users to set their SDKROOT env property (most OS X users
don't have it set) and lit would need to be changed in a way to
propagate this env property (it doesn't now). Installing a SDK into a
system-wide location (e.g. /usr/include) is discouraged and deprecated
on OS X, although manually installing Xcode Command Line Tools does
that. Note that this will not solve the other issue (missing c++
headers).

The attached patch is three files, which should go into llvm,
compiler-rt and clang projects respectively.

Kuba Brecka



More information about the llvm-commits mailing list