Merge "Revert "Revert "Make Metalava checkapi a seperate run."""
diff --git a/cc/builder.go b/cc/builder.go
index 5a77d3e..7d207b0 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -236,29 +236,30 @@
}
type builderFlags struct {
- globalFlags string
- arFlags string
- asFlags string
- cFlags string
- toolingCFlags string // A separate set of Cflags for clang LibTooling tools
- conlyFlags string
- cppFlags string
- ldFlags string
- libFlags string
- yaccFlags string
- protoFlags string
- protoOutParams string
- tidyFlags string
- sAbiFlags string
- yasmFlags string
- aidlFlags string
- rsFlags string
- toolchain config.Toolchain
- clang bool
- tidy bool
- coverage bool
- sAbiDump bool
- protoRoot bool
+ globalFlags string
+ arFlags string
+ asFlags string
+ cFlags string
+ toolingCFlags string // A separate set of cFlags for clang LibTooling tools
+ toolingCppFlags string // A separate set of cppFlags for clang LibTooling tools
+ conlyFlags string
+ cppFlags string
+ ldFlags string
+ libFlags string
+ yaccFlags string
+ protoFlags string
+ protoOutParams string
+ tidyFlags string
+ sAbiFlags string
+ yasmFlags string
+ aidlFlags string
+ rsFlags string
+ toolchain config.Toolchain
+ clang bool
+ tidy bool
+ coverage bool
+ sAbiDump bool
+ protoRoot bool
systemIncludeFlags string
@@ -330,7 +331,7 @@
toolingCppflags := strings.Join([]string{
commonFlags,
flags.toolingCFlags,
- flags.cppFlags,
+ flags.toolingCppFlags,
}, " ")
cppflags := strings.Join([]string{
diff --git a/cc/config/clang.go b/cc/config/clang.go
index 36afc68..186d790 100644
--- a/cc/config/clang.go
+++ b/cc/config/clang.go
@@ -93,8 +93,10 @@
})
var ClangLibToolingUnknownCflags = []string{
+ // Remove -flto and other flto dependent flags.
"-flto*",
"-fsanitize*",
+ "-fwhole-program-vtables",
}
func init() {
diff --git a/cc/sabi.go b/cc/sabi.go
index 42b2f35..72a3c5c 100644
--- a/cc/sabi.go
+++ b/cc/sabi.go
@@ -71,6 +71,7 @@
// Assuming that the cflags which clang LibTooling tools cannot
// understand have not been converted to ninja variables yet.
flags.ToolingCFlags = filterOutWithPrefix(flags.CFlags, config.ClangLibToolingUnknownCflags)
+ flags.ToolingCppFlags = filterOutWithPrefix(flags.CppFlags, config.ClangLibToolingUnknownCflags)
// RSClang does not support recent mcpu option likes exynos-m2.
// So we need overriding mcpu option when we want to use it.
diff --git a/cc/util.go b/cc/util.go
index 8de4210..93cf536 100644
--- a/cc/util.go
+++ b/cc/util.go
@@ -59,29 +59,30 @@
func flagsToBuilderFlags(in Flags) builderFlags {
return builderFlags{
- globalFlags: strings.Join(in.GlobalFlags, " "),
- arFlags: strings.Join(in.ArFlags, " "),
- asFlags: strings.Join(in.AsFlags, " "),
- cFlags: strings.Join(in.CFlags, " "),
- toolingCFlags: strings.Join(in.ToolingCFlags, " "),
- conlyFlags: strings.Join(in.ConlyFlags, " "),
- cppFlags: strings.Join(in.CppFlags, " "),
- yaccFlags: strings.Join(in.YaccFlags, " "),
- protoFlags: strings.Join(in.protoFlags, " "),
- protoOutParams: strings.Join(in.protoOutParams, ","),
- aidlFlags: strings.Join(in.aidlFlags, " "),
- rsFlags: strings.Join(in.rsFlags, " "),
- ldFlags: strings.Join(in.LdFlags, " "),
- libFlags: strings.Join(in.libFlags, " "),
- tidyFlags: strings.Join(in.TidyFlags, " "),
- sAbiFlags: strings.Join(in.SAbiFlags, " "),
- yasmFlags: strings.Join(in.YasmFlags, " "),
- toolchain: in.Toolchain,
- clang: in.Clang,
- coverage: in.Coverage,
- tidy: in.Tidy,
- sAbiDump: in.SAbiDump,
- protoRoot: in.ProtoRoot,
+ globalFlags: strings.Join(in.GlobalFlags, " "),
+ arFlags: strings.Join(in.ArFlags, " "),
+ asFlags: strings.Join(in.AsFlags, " "),
+ cFlags: strings.Join(in.CFlags, " "),
+ toolingCFlags: strings.Join(in.ToolingCFlags, " "),
+ toolingCppFlags: strings.Join(in.ToolingCppFlags, " "),
+ conlyFlags: strings.Join(in.ConlyFlags, " "),
+ cppFlags: strings.Join(in.CppFlags, " "),
+ yaccFlags: strings.Join(in.YaccFlags, " "),
+ protoFlags: strings.Join(in.protoFlags, " "),
+ protoOutParams: strings.Join(in.protoOutParams, ","),
+ aidlFlags: strings.Join(in.aidlFlags, " "),
+ rsFlags: strings.Join(in.rsFlags, " "),
+ ldFlags: strings.Join(in.LdFlags, " "),
+ libFlags: strings.Join(in.libFlags, " "),
+ tidyFlags: strings.Join(in.TidyFlags, " "),
+ sAbiFlags: strings.Join(in.SAbiFlags, " "),
+ yasmFlags: strings.Join(in.YasmFlags, " "),
+ toolchain: in.Toolchain,
+ clang: in.Clang,
+ coverage: in.Coverage,
+ tidy: in.Tidy,
+ sAbiDump: in.SAbiDump,
+ protoRoot: in.ProtoRoot,
systemIncludeFlags: strings.Join(in.SystemIncludeFlags, " "),
diff --git a/cmd/pom2bp/pom2bp.go b/cmd/pom2bp/pom2bp.go
index 9ce6b50..a39642f 100644
--- a/cmd/pom2bp/pom2bp.go
+++ b/cmd/pom2bp/pom2bp.go
@@ -104,6 +104,24 @@
var excludes = make(Exclude)
+type HostModuleNames map[string]bool
+
+func (n HostModuleNames) IsHostModule(groupId string, artifactId string) bool {
+ _, found := n[groupId + ":" + artifactId]
+ return found
+}
+
+func (n HostModuleNames) String() string {
+ return ""
+}
+
+func (n HostModuleNames) Set(v string) error {
+ n[v] = true
+ return nil
+}
+
+var hostModuleNames = HostModuleNames{}
+
var sdkVersion string
var useVersion string
@@ -160,6 +178,14 @@
return p.Packaging == "jar"
}
+func (p Pom) IsHostModule() bool {
+ return hostModuleNames.IsHostModule(p.GroupId, p.ArtifactId)
+}
+
+func (p Pom) IsDeviceModule() bool {
+ return !p.IsHostModule()
+}
+
func (p Pom) BpName() string {
if p.BpTarget == "" {
p.BpTarget = rewriteNames.MavenToBp(p.GroupId, p.ArtifactId)
@@ -278,11 +304,11 @@
],{{end}}
}
-{{if .IsAar}}android_library{{else}}java_library_static{{end}} {
- name: "{{.BpName}}",
+{{if .IsAar}}android_library{{else}}{{if .IsDeviceModule}}java_library_static{{else}}java_library_host{{end}}{{end}} {
+ name: "{{.BpName}}",{{if .IsDeviceModule}}
sdk_version: "{{.SdkVersion}}",{{if .IsAar}}
min_sdk_version: "{{.MinSdkVersion}}",
- manifest: "manifests/{{.BpName}}/AndroidManifest.xml",{{end}}
+ manifest: "manifests/{{.BpName}}/AndroidManifest.xml",{{end}}{{end}}
static_libs: [
"{{.BpName}}-nodeps",{{range .BpJarDeps}}
"{{.}}",{{end}}{{range .BpAarDeps}}
@@ -422,6 +448,7 @@
flag.Var(&excludes, "exclude", "Exclude module")
flag.Var(&extraDeps, "extra-deps", "Extra dependencies needed when depending on a module")
flag.Var(&rewriteNames, "rewrite", "Regex(es) to rewrite artifact names")
+ flag.Var(&hostModuleNames, "host", "Specifies that the corresponding module (specified in the form 'module.group:module.artifact') is a host module")
flag.StringVar(&sdkVersion, "sdk-version", "", "What to write to LOCAL_SDK_VERSION")
flag.StringVar(&useVersion, "use-version", "", "Only read artifacts of a specific version")
flag.Bool("static-deps", false, "Ignored")