Remove -include <file> 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
diff --git a/apex/apex_test.go b/apex/apex_test.go
index 72f6488..88c57bc 100644
--- a/apex/apex_test.go
+++ b/apex/apex_test.go
@@ -267,6 +267,7 @@
cc_library {
name: "mylib2",
srcs: ["mylib.cpp"],
+ cflags: ["-include mylib.h"],
system_shared_libs: [],
stl: "none",
stubs: {
@@ -316,6 +317,10 @@
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 36f3a86..524b886 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -351,6 +351,24 @@
flags = library.baseCompiler.compilerFlags(ctx, flags, deps)
if library.buildStubs() {
+ // Remove -include <file> 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