Index: build/common.gypi |
diff --git a/build/common.gypi b/build/common.gypi |
index e7b0527c34f39c8c13b86878f6ad5da0b8425d50..56dc197b40e0b1b7d5740c45aa57bdf4cafc4b76 100644 |
--- a/build/common.gypi |
+++ b/build/common.gypi |
@@ -5260,6 +5260,16 @@ |
}, # configuration "Release" |
}, # configurations |
'xcode_settings': { |
+ # Everything should include libc++ headers. Just passing |
+ # -stdlib=libc++ doesn't just work in NaCl targets with asan enabled |
+ # until http://crbug.com/544325 is fixed, so tell the compiler to not |
+ # add any include paths, and instead below add the c++ include |
+ # directory as include_dirs. Then we can not set CLANG_CXX_LIBRARY |
+ # to libc++ for NaCl targets and that way they'll link against |
+ # libstdc++ on the ASan bots (ASan requires a C++ library to be linked |
+ # even for the C-only NaCl programs). |
+ 'OTHER_CPLUSPLUSFLAGS': [ '$inherited', '-nostdinc++', ], |
+ |
'GCC_DYNAMIC_NO_PIC': 'NO', # No -mdynamic-no-pic |
# (Equivalent to -fPIC) |
# MACOSX_DEPLOYMENT_TARGET maps to -mmacosx-version-min |
@@ -5277,22 +5287,53 @@ |
'-fno-strict-aliasing', # See http://crbug.com/32204. |
], |
'conditions': [ |
- ['component=="shared_library"', { |
- # In component builds, link to the system libc++. This requires |
- # OS X 10.7, but we currently pass -mmacosx-version-min=10.6. |
- # Xcode's clang complains about this, but our open-source bundled |
- # chromium clang doesn't. This has the effect of making |
- # everything depend on libc++, which means component-build |
- # binaries won't run on 10.6 (no libc++ there), but for a |
- # developer-only configuration that's ok. |
- # (We don't want to raise the deployment target yet so that |
- # official and dev builds have the same deployment target. This |
- # affects things like which functions are considered deprecated.) |
+ # TODO(thakis): Remove this condition once http://crbug.com/544325 |
+ # is fixed. Some targets below native_client still link use the |
+ # 10.6 SDK which doesn't contain a libc++. |
+ ['mac_sdk!="10.6"', { |
+ # Tell the compiler to use libc++'s headers and the linker to link |
+ # against libc++. The latter part normally requires OS X 10.7, |
+ # but we still support running on 10.6. How does this work? Two |
+ # parts: |
+ # 1. Chromium's clang doesn't error on -mmacosx-version-min=10.6 |
+ # combined with -stdlib=libc++ (it normally silently produced a |
+ # binary that doesn't run on 10.6) |
+ # 2. Further down, library_dirs is set to |
+ # third_party/libc++-static, which contains a static |
+ # libc++.a library. The linker then links against that instead |
+ # of against /usr/lib/libc++.dylib when it sees the -lc++ flag |
+ # added by the driver. |
+ # |
+ # In component builds, just link to the system libc++. This has |
+ # the effect of making everything depend on libc++, which means |
+ # component-build binaries won't run on 10.6 (no libc++ there), |
+ # but for a developer-only configuration that's ok. (We don't |
+ # want to raise the deployment target yet so that official and |
+ # dev builds have the same deployment target. This affects |
+ # things like which functions are considered deprecated.) |
'CLANG_CXX_LIBRARY': 'libc++', # -stdlib=libc++ |
+ |
}], |
], |
}, |
'target_conditions': [ |
+ ['>(nacl_untrusted_build)==0', { |
+ 'include_dirs': [ |
+ '<(DEPTH)/third_party/llvm-build/Release+Asserts/include/c++/v1', |
+ ], |
+ }], |
+ ['>(nacl_untrusted_build)==0 and component=="static_library"', { |
+ # See the comment for CLANG_CXX_LIBRARY above for what this does. |
+ # The NaCl toolchains have their own toolchain and don't need this. |
+ # ASan requires 10.7+ and clang implicitly adds -lc++abi in ASan |
+ # mode. Our libc++.a contains both libc++ and libc++abi in one |
+ # library, so it doesn't work in that mode. |
+ 'conditions': [ |
+ ['asan==0', { |
+ 'library_dirs': [ '<(DEPTH)/third_party/libc++-static' ], |
+ }], |
+ ], |
+ }], |
['_type=="executable"', { |
'postbuilds': [ |
{ |