aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Willemsen <dwillemsen@google.com>2016-03-09 10:30:22 -0800
committerDan Willemsen <dwillemsen@google.com>2016-03-09 10:30:22 -0800
commit282a4b0dda2eea7c4bc8d277ab52e5fc24f234e8 (patch)
treef7076480c9ade23ee2a8ad8431ebd8bb6203e3bd
parent71ea9c13c90b2c5bfefd196caa442777eb0f8ce2 (diff)
downloadbuild_soong-282a4b0dda2eea7c4bc8d277ab52e5fc24f234e8.tar.gz
build_soong-282a4b0dda2eea7c4bc8d277ab52e5fc24f234e8.tar.bz2
build_soong-282a4b0dda2eea7c4bc8d277ab52e5fc24f234e8.zip
Fix C++ on Darwin
Port of https://android-review.googlesource.com/207241 Change-Id: Idad81a528a2104579de0225b0724bb81293eea44
-rw-r--r--cc/cc.go4
-rw-r--r--cc/toolchain.go11
-rw-r--r--cc/x86_darwin_host.go37
3 files changed, 37 insertions, 15 deletions
diff --git a/cc/cc.go b/cc/cc.go
index d79cdbee..4a874337 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -955,6 +955,10 @@ func (c *CCLinked) flags(ctx common.AndroidModuleContext, flags CCFlags) CCFlags
// Host builds will use GNU libstdc++.
if ctx.Device() {
flags.CFlags = append(flags.CFlags, "-I"+common.PathForSource(ctx, "bionic/libstdc++/include").String())
+ } else {
+ // Host builds will use the system C++. libc++ on Darwin, GNU libstdc++ everywhere else
+ flags.CppFlags = append(flags.CppFlags, flags.Toolchain.SystemCppCppflags())
+ flags.LdFlags = append(flags.LdFlags, flags.Toolchain.SystemCppLdflags())
}
case "ndk_system":
ndkSrcRoot := common.PathForSource(ctx, "prebuilts/ndk/current/sources/cxx-stl/system/include")
diff --git a/cc/toolchain.go b/cc/toolchain.go
index 9f6ad2ea..1f51384a 100644
--- a/cc/toolchain.go
+++ b/cc/toolchain.go
@@ -70,6 +70,9 @@ type Toolchain interface {
ShlibSuffix() string
ExecutableSuffix() string
+
+ SystemCppCppflags() string
+ SystemCppLdflags() string
}
type toolchainBase struct {
@@ -117,6 +120,14 @@ func (toolchainBase) ClangAsflags() string {
return ""
}
+func (toolchainBase) SystemCppCppflags() string {
+ return ""
+}
+
+func (toolchainBase) SystemCppLdflags() string {
+ return ""
+}
+
type toolchain64Bit struct {
toolchainBase
}
diff --git a/cc/x86_darwin_host.go b/cc/x86_darwin_host.go
index 7f4c4890..9a7b68a9 100644
--- a/cc/x86_darwin_host.go
+++ b/cc/x86_darwin_host.go
@@ -32,16 +32,20 @@ var (
"-DMACOSX_DEPLOYMENT_TARGET=${macSdkVersion}",
}
- darwinCppflags = []string{
- "-isystem ${macToolchainRoot}/usr/include/c++/v1",
- }
-
darwinLdflags = []string{
"-isysroot ${macSdkRoot}",
"-Wl,-syslibroot,${macSdkRoot}",
"-mmacosx-version-min=${macSdkVersion}",
}
+ darwinSystemCppCppflags = []string{
+ "-isystem ${macToolchainRoot}/usr/include/c++/v1",
+ }
+
+ darwinSystemCppLdflags = []string{
+ "-stdlib=libc++",
+ }
+
// Extended cflags
darwinX86Cflags = []string{
"-m32",
@@ -74,8 +78,6 @@ var (
darwinX8664ClangLdflags = clangFilterUnknownCflags(darwinX8664Ldflags)
- darwinClangCppflags = clangFilterUnknownCflags(darwinCppflags)
-
darwinSupportedSdkVersions = []string{
"macosx10.8",
"macosx10.9",
@@ -113,11 +115,12 @@ func init() {
pctx.StaticVariable("darwinCflags", strings.Join(darwinCflags, " "))
pctx.StaticVariable("darwinLdflags", strings.Join(darwinLdflags, " "))
- pctx.StaticVariable("darwinCppflags", strings.Join(darwinCppflags, " "))
pctx.StaticVariable("darwinClangCflags", strings.Join(darwinClangCflags, " "))
pctx.StaticVariable("darwinClangLdflags", strings.Join(darwinClangLdflags, " "))
- pctx.StaticVariable("darwinClangCppflags", strings.Join(darwinClangCppflags, " "))
+
+ pctx.StaticVariable("darwinSystemCppCppflags", strings.Join(darwinSystemCppCppflags, " "))
+ pctx.StaticVariable("darwinSystemCppLdflags", strings.Join(darwinSystemCppLdflags, " "))
// Extended cflags
pctx.StaticVariable("darwinX86Cflags", strings.Join(darwinX86Cflags, " "))
@@ -198,7 +201,7 @@ func (t *toolchainDarwinX8664) Cflags() string {
}
func (t *toolchainDarwin) Cppflags() string {
- return "${darwinCppflags}"
+ return ""
}
func (t *toolchainDarwinX86) Ldflags() string {
@@ -221,10 +224,6 @@ func (t *toolchainDarwinX86) ClangCflags() string {
return "${darwinClangCflags} ${darwinX86ClangCflags}"
}
-func (t *toolchainDarwinX86) ClangCppflags() string {
- return "${darwinClangCppflags}"
-}
-
func (t *toolchainDarwinX8664) ClangTriple() string {
return "x86_64-darwin-gnu"
}
@@ -233,8 +232,8 @@ func (t *toolchainDarwinX8664) ClangCflags() string {
return "${darwinClangCflags} ${darwinX8664ClangCflags}"
}
-func (t *toolchainDarwinX8664) ClangCppflags() string {
- return "${darwinClangCppflags}"
+func (t *toolchainDarwin) ClangCppflags() string {
+ return ""
}
func (t *toolchainDarwinX86) ClangLdflags() string {
@@ -249,6 +248,14 @@ func (t *toolchainDarwin) ShlibSuffix() string {
return ".dylib"
}
+func (t *toolchainDarwin) SystemCppCppflags() string {
+ return "${darwinSystemCppCppflags}"
+}
+
+func (t *toolchainDarwin) SystemCppLdflags() string {
+ return "${darwinSystemCppLdflags}"
+}
+
var toolchainDarwinX86Singleton Toolchain = &toolchainDarwinX86{}
var toolchainDarwinX8664Singleton Toolchain = &toolchainDarwinX8664{}