Black-list for clang LibTooling Cflags.
Add a list of flags which are not understood by clang LibTooling tools
and filter them out of the Cflags the tools are invoked with.
Test: In frameworks/av, make libmedia vendor_available (this invokes
header-abi-dumper on this module), mm -j64.
Bug: 62447349
Change-Id: I46f017212b89f4331145c999103d0ed44da0abaf
diff --git a/cc/builder.go b/cc/builder.go
index 51c4ce9..61c0572 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -206,26 +206,27 @@
}
type builderFlags struct {
- globalFlags string
- arFlags string
- asFlags string
- cFlags string
- conlyFlags string
- cppFlags string
- ldFlags string
- libFlags string
- yaccFlags string
- protoFlags string
- tidyFlags string
- sAbiFlags string
- yasmFlags string
- aidlFlags string
- rsFlags string
- toolchain config.Toolchain
- clang bool
- tidy bool
- coverage bool
- sAbiDump bool
+ globalFlags string
+ arFlags string
+ asFlags string
+ cFlags string
+ toolingCFlags string // Seperate set of Cflags for clang LibTooling tools
+ conlyFlags string
+ cppFlags string
+ ldFlags string
+ libFlags string
+ yaccFlags string
+ protoFlags string
+ tidyFlags string
+ sAbiFlags string
+ yasmFlags string
+ aidlFlags string
+ rsFlags string
+ toolchain config.Toolchain
+ clang bool
+ tidy bool
+ coverage bool
+ sAbiDump bool
systemIncludeFlags string
@@ -275,25 +276,40 @@
coverageFiles = make(android.Paths, 0, len(srcFiles))
}
- cflags := strings.Join([]string{
+ commonFlags := strings.Join([]string{
flags.globalFlags,
flags.systemIncludeFlags,
+ }, " ")
+
+ toolingCflags := strings.Join([]string{
+ commonFlags,
+ flags.toolingCFlags,
+ flags.conlyFlags,
+ }, " ")
+
+ cflags := strings.Join([]string{
+ commonFlags,
flags.cFlags,
flags.conlyFlags,
}, " ")
+ toolingCppflags := strings.Join([]string{
+ commonFlags,
+ flags.toolingCFlags,
+ flags.cppFlags,
+ }, " ")
+
cppflags := strings.Join([]string{
- flags.globalFlags,
- flags.systemIncludeFlags,
+ commonFlags,
flags.cFlags,
flags.cppFlags,
}, " ")
asflags := strings.Join([]string{
- flags.globalFlags,
- flags.systemIncludeFlags,
+ commonFlags,
flags.asFlags,
}, " ")
+
var sAbiDumpFiles android.Paths
if flags.sAbiDump && flags.clang {
sAbiDumpFiles = make(android.Paths, 0, len(srcFiles))
@@ -301,7 +317,9 @@
if flags.clang {
cflags += " ${config.NoOverrideClangGlobalCflags}"
+ toolingCflags += " ${config.NoOverrideClangGlobalCflags}"
cppflags += " ${config.NoOverrideClangGlobalCflags}"
+ toolingCppflags += " ${config.NoOverrideClangGlobalCflags}"
} else {
cflags += " ${config.NoOverrideGlobalCflags}"
cppflags += " ${config.NoOverrideGlobalCflags}"
@@ -327,6 +345,7 @@
}
var moduleCflags string
+ var moduleToolingCflags string
var ccCmd string
tidy := flags.tidy && flags.clang
coverage := flags.coverage
@@ -342,9 +361,11 @@
case ".c":
ccCmd = "gcc"
moduleCflags = cflags
+ moduleToolingCflags = toolingCflags
case ".cpp", ".cc", ".mm":
ccCmd = "g++"
moduleCflags = cppflags
+ moduleToolingCflags = toolingCppflags
default:
ctx.ModuleErrorf("File %s has unknown extension", srcFile)
continue
@@ -402,7 +423,7 @@
// support exporting dependencies.
Implicit: objFile,
Args: map[string]string{
- "cFlags": moduleCflags,
+ "cFlags": moduleToolingCflags,
"tidyFlags": flags.tidyFlags,
},
})
@@ -419,7 +440,7 @@
Input: srcFile,
Implicit: objFile,
Args: map[string]string{
- "cFlags": moduleCflags,
+ "cFlags": moduleToolingCflags,
"exportDirs": flags.sAbiFlags,
},
})