summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <treehugger-gerrit@google.com> 2021-09-10 20:15:35 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2021-09-10 20:15:35 +0000
commitc521d5717ddb40e15a1d7ecf3001451a9a35848b (patch)
tree4e4a7e7c6fd5c01992dfd6e7b92adfcc25e1b67b
parent65e8f6d765a9d6e83d02b6ff4df33e9977fa8ed1 (diff)
parent24658d07f8ec45362bf6ea9a46692b74498c962c (diff)
Merge "Add support for --optional-uses-libs to pom2bp"
-rw-r--r--cmd/pom2bp/pom2bp.go32
1 files changed, 31 insertions, 1 deletions
diff --git a/cmd/pom2bp/pom2bp.go b/cmd/pom2bp/pom2bp.go
index d31489e3a..5770a7fff 100644
--- a/cmd/pom2bp/pom2bp.go
+++ b/cmd/pom2bp/pom2bp.go
@@ -93,6 +93,8 @@ var extraStaticLibs = make(ExtraDeps)
var extraLibs = make(ExtraDeps)
+var optionalUsesLibs = make(ExtraDeps)
+
type Exclude map[string]bool
func (e Exclude) String() string {
@@ -269,6 +271,10 @@ func (p Pom) BpExtraLibs() []string {
return extraLibs[p.BpName()]
}
+func (p Pom) BpOptionalUsesLibs() []string {
+ return optionalUsesLibs[p.BpName()]
+}
+
// BpDeps obtains dependencies filtered by type and scope. The results of this
// method are formatted as Android.bp targets, e.g. run through MavenToBp rules.
func (p Pom) BpDeps(typeExt string, scopes []string) []string {
@@ -400,6 +406,12 @@ var bpTemplate = template.Must(template.New("bp").Parse(`
"{{.}}",
{{- end}}
],
+ {{- if .BpOptionalUsesLibs}}
+ optional_uses_libs: [
+ {{- range .BpOptionalUsesLibs}}
+ "{{.}}",
+ {{- end}}
+ ],
{{- end}}
{{- else if not .IsHostOnly}}
min_sdk_version: "{{.DefaultMinSdkVersion}}",
@@ -443,6 +455,12 @@ var bpDepsTemplate = template.Must(template.New("bp").Parse(`
"{{.}}",
{{- end}}
],
+ {{- if .BpOptionalUsesLibs}}
+ optional_uses_libs: [
+ {{- range .BpOptionalUsesLibs}}
+ "{{.}}",
+ {{- end}}
+ ],
{{- end}}
{{- else if not .IsHostOnly}}
min_sdk_version: "{{.DefaultMinSdkVersion}}",
@@ -487,6 +505,12 @@ var bpDepsTemplate = template.Must(template.New("bp").Parse(`
"{{.}}",
{{- end}}
],
+ {{- if .BpOptionalUsesLibs}}
+ optional_uses_libs: [
+ {{- range .BpOptionalUsesLibs}}
+ "{{.}}",
+ {{- end}}
+ ],
{{- end}}
java_version: "1.7",
}
@@ -587,7 +611,7 @@ func main() {
The tool will extract the necessary information from *.pom files to create an Android.bp whose
aar libraries can be linked against when using AAPT2.
-Usage: %s [--rewrite <regex>=<replace>] [-exclude <module>] [--extra-static-libs <module>=<module>[,<module>]] [--extra-libs <module>=<module>[,<module>]] [<dir>] [-regen <file>]
+Usage: %s [--rewrite <regex>=<replace>] [--exclude <module>] [--extra-static-libs <module>=<module>[,<module>]] [--extra-libs <module>=<module>[,<module>]] [--optional-uses-libs <module>=<module>[,<module>]] [<dir>] [-regen <file>]
-rewrite <regex>=<replace>
rewrite can be used to specify mappings between Maven projects and Android.bp modules. The -rewrite
@@ -605,6 +629,11 @@ Usage: %s [--rewrite <regex>=<replace>] [-exclude <module>] [--extra-static-libs
Some Android.bp modules have transitive runtime dependencies that must be specified when they
are depended upon (like androidx.test.rules requires android.test.base).
This may be specified multiple times to declare these dependencies.
+ -optional-uses-libs <module>=<module>[,<module>]
+ Some Android.bp modules have optional dependencies (typically specified with <uses-library> in
+ the module's AndroidManifest.xml) that must be specified when they are depended upon (like
+ androidx.window:window optionally requires androidx.window:window-extensions).
+ This may be specified multiple times to declare these dependencies.
-sdk-version <version>
Sets sdk_version: "<version>" for all modules.
-default-min-sdk-version
@@ -629,6 +658,7 @@ Usage: %s [--rewrite <regex>=<replace>] [-exclude <module>] [--extra-static-libs
flag.Var(&excludes, "exclude", "Exclude module")
flag.Var(&extraStaticLibs, "extra-static-libs", "Extra static dependencies needed when depending on a module")
flag.Var(&extraLibs, "extra-libs", "Extra runtime dependencies needed when depending on a module")
+ flag.Var(&optionalUsesLibs, "optional-uses-libs", "Extra optional 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.")