Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2353)

Unified Diff: build/common.gypi

Issue 1413863003: mac: In static library builds, link against a static libc++.a (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: haaaaack Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « DEPS ('k') | chrome/chrome_dll.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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': [
{
« no previous file with comments | « DEPS ('k') | chrome/chrome_dll.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698