diff --git a/cmd/pom2bp/pom2bp.go b/cmd/pom2bp/pom2bp.go index c858c402c..191b919e9 100644 --- a/cmd/pom2bp/pom2bp.go +++ b/cmd/pom2bp/pom2bp.go @@ -124,6 +124,25 @@ func (n HostModuleNames) Set(v string) error { var hostModuleNames = HostModuleNames{} +type HostAndDeviceModuleNames map[string]bool + +func (n HostAndDeviceModuleNames) IsHostAndDeviceModule(groupId string, artifactId string) bool { + _, found := n[groupId+":"+artifactId] + + return found +} + +func (n HostAndDeviceModuleNames) String() string { + return "" +} + +func (n HostAndDeviceModuleNames) Set(v string) error { + n[v] = true + return nil +} + +var hostAndDeviceModuleNames = HostAndDeviceModuleNames{} + var sdkVersion string var useVersion string var staticDeps bool @@ -190,10 +209,14 @@ func (p Pom) IsDeviceModule() bool { return !p.IsHostModule() } +func (p Pom) IsHostAndDeviceModule() bool { + return hostAndDeviceModuleNames.IsHostAndDeviceModule(p.GroupId, p.ArtifactId) +} + func (p Pom) ModuleType() string { if p.IsAar() { return "android_library" - } else if p.IsHostModule() { + } else if p.IsHostModule() && !p.IsHostAndDeviceModule() { return "java_library_host" } else { return "java_library_static" @@ -203,7 +226,7 @@ func (p Pom) ModuleType() string { func (p Pom) ImportModuleType() string { if p.IsAar() { return "android_library_import" - } else if p.IsHostModule() { + } else if p.IsHostModule() && !p.IsHostAndDeviceModule() { return "java_import_host" } else { return "java_import" @@ -340,6 +363,9 @@ var bpTemplate = template.Must(template.New("bp").Parse(` {{- if .Jetifier}} jetifier: true, {{- end}} + {{- if .IsHostAndDeviceModule}} + host_supported: true, + {{- end}} {{- if .IsAar}} min_sdk_version: "{{.MinSdkVersion}}", static_libs: [ @@ -372,6 +398,9 @@ var bpDepsTemplate = template.Must(template.New("bp").Parse(` {{- if .Jetifier}} jetifier: true, {{- end}} + {{- if .IsHostAndDeviceModule}} + host_supported: true, + {{- end}} {{- if .IsAar}} min_sdk_version: "{{.MinSdkVersion}}", static_libs: [ @@ -399,6 +428,9 @@ var bpDepsTemplate = template.Must(template.New("bp").Parse(` name: "{{.BpName}}", {{- if .IsDeviceModule}} sdk_version: "{{.SdkVersion}}", + {{- if .IsHostAndDeviceModule}} + host_supported: true, + {{- end}} {{- if .IsAar}} min_sdk_version: "{{.MinSdkVersion}}", manifest: "manifests/{{.BpName}}/AndroidManifest.xml", @@ -564,6 +596,7 @@ Usage: %s [--rewrite =] [-exclude ] [--extra-static-libs flag.Var(&extraLibs, "extra-libs", "Extra runtime 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.Var(&hostAndDeviceModuleNames, "host-and-device", "Specifies that the corresponding module (specified in the form 'module.group:module.artifact') is both a host and device module.") flag.StringVar(&sdkVersion, "sdk-version", "", "What to write to sdk_version") flag.StringVar(&useVersion, "use-version", "", "Only read artifacts of a specific version") flag.BoolVar(&staticDeps, "static-deps", false, "Statically include direct dependencies") diff --git a/java/support_libraries.go b/java/support_libraries.go index 5a72f41a9..af7c3c2a0 100644 --- a/java/support_libraries.go +++ b/java/support_libraries.go @@ -52,8 +52,6 @@ func supportLibrariesMakeVarsProvider(ctx android.MakeVarsContext) { supportAars = append(supportAars, name) case *Library, *Import: supportJars = append(supportJars, name) - default: - ctx.ModuleErrorf(module, "unknown module type %t", module) } })