From 6437995170641ff6b1f50a6e2596a10ad91f3450 Mon Sep 17 00:00:00 2001 From: Jiyong Park Date: Thu, 13 Dec 2018 18:37:29 +0900 Subject: [PATCH] Remove -include when compiling stubs. Otherwise, the force included headers might cause conflicting types error with the symbols in the generated stubs source code. e.g. double acos(double); // in header void acos() {} // in the generated source code Bug: 120266448 Test: m (apex_test also updated, and passing) Change-Id: I717df990959d1b24ec515f0f52a4e28b94e92f32 --- apex/apex_test.go | 5 +++++ cc/library.go | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/apex/apex_test.go b/apex/apex_test.go index 72f6488c7..88c57bc0d 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -267,6 +267,7 @@ func TestApexWithStubs(t *testing.T) { cc_library { name: "mylib2", srcs: ["mylib.cpp"], + cflags: ["-include mylib.h"], system_shared_libs: [], stl: "none", stubs: { @@ -316,6 +317,10 @@ func TestApexWithStubs(t *testing.T) { ensureContains(t, mylibLdFlags, "mylib3/android_arm64_armv8-a_shared_myapex/mylib3.so") // .. and not linking to the stubs variant of mylib3 ensureNotContains(t, mylibLdFlags, "mylib3/android_arm64_armv8-a_shared_12_myapex/mylib3.so") + + // Ensure that stubs libs are built without -include flags + mylib2Cflags := ctx.ModuleForTests("mylib2", "android_arm64_armv8-a_static_myapex").Rule("cc").Args["cFlags"] + ensureNotContains(t, mylib2Cflags, "-include ") } func TestApexWithExplicitStubsDependency(t *testing.T) { diff --git a/cc/library.go b/cc/library.go index 36f3a865a..524b88626 100644 --- a/cc/library.go +++ b/cc/library.go @@ -351,6 +351,24 @@ func (library *libraryDecorator) compilerFlags(ctx ModuleContext, flags Flags, d flags = library.baseCompiler.compilerFlags(ctx, flags, deps) if library.buildStubs() { + // Remove -include when compiling stubs. Otherwise, the force included + // headers might cause conflicting types error with the symbols in the + // generated stubs source code. e.g. + // double acos(double); // in header + // void acos() {} // in the generated source code + removeInclude := func(flags []string) []string { + ret := flags[:0] + for _, f := range flags { + if strings.HasPrefix(f, "-include ") { + continue + } + ret = append(ret, f) + } + return ret + } + flags.GlobalFlags = removeInclude(flags.GlobalFlags) + flags.CFlags = removeInclude(flags.CFlags) + flags = addStubLibraryCompilerFlags(flags) } return flags