| package cc |
| |
| import ( |
| "runtime" |
| "strings" |
| |
| "android/soong/common" |
| ) |
| |
| var ( |
| darwinCflags = []string{ |
| "-fno-exceptions", // from build/core/combo/select.mk |
| "-Wno-multichar", // from build/core/combo/select.mk |
| |
| "-fPIC", |
| "-funwind-tables", |
| "-include ${SrcDir}/build/core/combo/include/arch/darwin-x86/AndroidConfig.h", |
| |
| // Workaround differences in inttypes.h between host and target. |
| //See bug 12708004. |
| "-D__STDC_FORMAT_MACROS", |
| "-D__STDC_CONSTANT_MACROS", |
| |
| // HOST_RELEASE_CFLAGS |
| "-O2", // from build/core/combo/select.mk |
| "-g", // from build/core/combo/select.mk |
| "-fno-strict-aliasing", // from build/core/combo/select.mk |
| "-isysroot ${macSdkRoot}", |
| "-mmacosx-version-min=10.9", |
| "-DMACOSX_DEPLOYMENT_TARGET=10.9", |
| } |
| |
| darwinCppflags = []string{ |
| "-isystem ${macSdkPath}/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1", |
| } |
| |
| darwinLdflags = []string{ |
| "-isysroot ${macSdkRoot}", |
| "-Wl,-syslibroot,${macSdkRoot}", |
| "-mmacosx-version-min=10.9", |
| } |
| |
| // Extended cflags |
| darwinX86Cflags = []string{ |
| "-m32", |
| } |
| |
| darwinX8664Cflags = []string{ |
| "-m64", |
| } |
| |
| darwinX86Ldflags = []string{ |
| "-m32", |
| "-Wl,-rpath,@loader_path/../lib", |
| } |
| |
| darwinX8664Ldflags = []string{ |
| "-m64", |
| "-Wl,-rpath,@loader_path/../lib64", |
| } |
| |
| darwinClangCflags = append([]string{ |
| "-integrated-as", |
| }, clangFilterUnknownCflags(darwinCflags)...) |
| |
| darwinClangLdflags = clangFilterUnknownCflags(darwinLdflags) |
| |
| darwinX86ClangLdflags = clangFilterUnknownCflags(darwinX86Ldflags) |
| |
| darwinX8664ClangLdflags = clangFilterUnknownCflags(darwinX8664Ldflags) |
| |
| darwinClangCppflags = clangFilterUnknownCflags(darwinCppflags) |
| ) |
| |
| func init() { |
| pctx.StaticVariable("macSdkPath", "/Applications/Xcode.app/Contents/Developer") |
| pctx.StaticVariable("macSdkRoot", "${macSdkPath}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk") |
| |
| pctx.StaticVariable("darwinGccVersion", "4.2.1") |
| pctx.StaticVariable("darwinGccRoot", |
| "${SrcDir}/prebuilts/gcc/${HostPrebuiltTag}/host/i686-apple-darwin-${darwinGccVersion}") |
| |
| pctx.StaticVariable("darwinGccTriple", "i686-apple-darwin11") |
| |
| 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, " ")) |
| |
| // Extended cflags |
| pctx.StaticVariable("darwinX86Cflags", strings.Join(darwinX86Cflags, " ")) |
| pctx.StaticVariable("darwinX8664Cflags", strings.Join(darwinX8664Cflags, " ")) |
| pctx.StaticVariable("darwinX86Ldflags", strings.Join(darwinX86Ldflags, " ")) |
| pctx.StaticVariable("darwinX8664Ldflags", strings.Join(darwinX8664Ldflags, " ")) |
| |
| pctx.StaticVariable("darwinX86ClangCflags", |
| strings.Join(clangFilterUnknownCflags(darwinX86Cflags), " ")) |
| pctx.StaticVariable("darwinX8664ClangCflags", |
| strings.Join(clangFilterUnknownCflags(darwinX8664Cflags), " ")) |
| pctx.StaticVariable("darwinX86ClangLdflags", strings.Join(darwinX86ClangLdflags, " ")) |
| pctx.StaticVariable("darwinX8664ClangLdflags", strings.Join(darwinX8664ClangLdflags, " ")) |
| } |
| |
| type toolchainDarwin struct { |
| cFlags, ldFlags string |
| } |
| |
| type toolchainDarwinX86 struct { |
| toolchain32Bit |
| toolchainDarwin |
| } |
| |
| type toolchainDarwinX8664 struct { |
| toolchain64Bit |
| toolchainDarwin |
| } |
| |
| func (t *toolchainDarwinX86) Name() string { |
| return "x86" |
| } |
| |
| func (t *toolchainDarwinX8664) Name() string { |
| return "x86_64" |
| } |
| |
| func (t *toolchainDarwin) GccRoot() string { |
| return "${darwinGccRoot}" |
| } |
| |
| func (t *toolchainDarwin) GccTriple() string { |
| return "${darwinGccTriple}" |
| } |
| |
| func (t *toolchainDarwin) GccVersion() string { |
| return "${darwinGccVersion}" |
| } |
| |
| func (t *toolchainDarwin) Cflags() string { |
| return "${darwinCflags} ${darwinX86Cflags}" |
| } |
| |
| func (t *toolchainDarwinX8664) Cflags() string { |
| return "${darwinCflags} ${darwinX8664Cflags}" |
| } |
| |
| func (t *toolchainDarwin) Cppflags() string { |
| return "${darwinCppflags}" |
| } |
| |
| func (t *toolchainDarwinX86) Ldflags() string { |
| return "${darwinLdflags} ${darwinX86Ldflags}" |
| } |
| |
| func (t *toolchainDarwinX8664) Ldflags() string { |
| return "${darwinLdflags} ${darwinX8664Ldflags}" |
| } |
| |
| func (t *toolchainDarwin) IncludeFlags() string { |
| return "" |
| } |
| |
| func (t *toolchainDarwinX86) ClangTriple() string { |
| return "i686-darwin-gnu" |
| } |
| |
| 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" |
| } |
| |
| func (t *toolchainDarwinX8664) ClangCflags() string { |
| return "${darwinClangCflags} ${darwinX8664ClangCflags}" |
| } |
| |
| func (t *toolchainDarwinX8664) ClangCppflags() string { |
| return "${darwinClangCppflags}" |
| } |
| |
| func (t *toolchainDarwinX86) ClangLdflags() string { |
| return "${darwinClangLdflags} ${darwinX86ClangLdflags}" |
| } |
| |
| func (t *toolchainDarwinX8664) ClangLdflags() string { |
| return "${darwinClangLdflags} ${darwinX8664ClangLdflags}" |
| } |
| |
| var toolchainDarwinX86Singleton Toolchain = &toolchainDarwinX86{} |
| var toolchainDarwinX8664Singleton Toolchain = &toolchainDarwinX8664{} |
| |
| func darwinX86ToolchainFactory(archVariant string, cpuVariant string) Toolchain { |
| return toolchainDarwinX86Singleton |
| } |
| |
| func darwinX8664ToolchainFactory(archVariant string, cpuVariant string) Toolchain { |
| return toolchainDarwinX8664Singleton |
| } |
| |
| func init() { |
| if runtime.GOOS == "darwin" { |
| registerToolchainFactory(common.Host, common.X86, darwinX86ToolchainFactory) |
| registerToolchainFactory(common.Host, common.X86_64, darwinX8664ToolchainFactory) |
| } |
| } |