Use armv7a-linux-androideabi for arm device triple.

* This is a workaround of llvm LTO bug.
* Keep using current NDK include directory path.
  NDKTriple is default ClangTriple but kept as GccTriple for arm device.

Bug: 72619014
Test: make checkbuild
Change-Id: I5dc63c99760325c60bc2da98fd6a3125cef7267d
This commit is contained in:
Chih-Hung Hsieh 2018-03-15 18:44:57 -07:00
parent 45d4f09f2f
commit 1e7d1bf1c7
4 changed files with 23 additions and 2 deletions

View File

@ -283,7 +283,7 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags, deps
// behavior here, and the NDK always has all the NDK headers available.
flags.SystemIncludeFlags = append(flags.SystemIncludeFlags,
"-isystem "+getCurrentIncludePath(ctx).String(),
"-isystem "+getCurrentIncludePath(ctx).Join(ctx, tc.ClangTriple()).String())
"-isystem "+getCurrentIncludePath(ctx).Join(ctx, config.NDKTriple(tc)).String())
// Traditionally this has come from android/api-level.h, but with the
// libc headers unified it must be set by the build system since we

View File

@ -325,6 +325,12 @@ func (t *toolchainArm) InstructionSetFlags(isa string) (string, error) {
}
func (t *toolchainArm) ClangTriple() string {
// http://b/72619014 work around llvm LTO bug.
return "armv7a-linux-androideabi"
}
func (t *toolchainArm) ndkTriple() string {
// Use current NDK include path, while ClangTriple is changed.
return t.GccTriple()
}

View File

@ -68,6 +68,8 @@ type Toolchain interface {
ClangLdflags() string
ClangInstructionSetFlags(string) (string, error)
ndkTriple() string
YasmFlags() string
WindresFlags() string
@ -87,6 +89,19 @@ type Toolchain interface {
type toolchainBase struct {
}
func (t *toolchainBase) ndkTriple() string {
return ""
}
func NDKTriple(toolchain Toolchain) string {
triple := toolchain.ndkTriple()
if triple == "" {
// Use the clang triple if there is no explicit NDK triple
triple = toolchain.ClangTriple()
}
return triple
}
func (toolchainBase) InstructionSetFlags(s string) (string, error) {
if s != "" {
return "", fmt.Errorf("instruction_set: %s is not a supported instruction set", s)

View File

@ -307,7 +307,7 @@ func makeVarsToolchain(ctx android.MakeVarsContext, secondPrefix string,
ctx.Strict(makePrefix+"STRIP", gccCmd(toolchain, "strip"))
ctx.Strict(makePrefix+"GCC_VERSION", toolchain.GccVersion())
ctx.Strict(makePrefix+"NDK_GCC_VERSION", toolchain.GccVersion())
ctx.Strict(makePrefix+"NDK_TRIPLE", toolchain.ClangTriple())
ctx.Strict(makePrefix+"NDK_TRIPLE", config.NDKTriple(toolchain))
}
if target.Os.Class == android.Host || target.Os.Class == android.HostCross {