summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Sorin Basca <sorinbasca@google.com> 2022-05-24 15:12:14 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2022-05-24 15:12:14 +0000
commit78ce8c23def25e30fba5e2cdb124ad3f0409751c (patch)
treecf73a707d6f317ee6722f3af2d7ee0c7bea43749
parent91f10eccc6a081800b24f8d7e5f8ad6ad14c4e40 (diff)
parentce720c366327611b366db75737309870b59ed53e (diff)
Merge "Add experimental option to target Java 17"
-rw-r--r--android/config.go4
-rw-r--r--java/java.go15
-rw-r--r--java/sdk.go6
3 files changed, 23 insertions, 2 deletions
diff --git a/android/config.go b/android/config.go
index 403999dcf..eb01baaf6 100644
--- a/android/config.go
+++ b/android/config.go
@@ -698,6 +698,10 @@ func (c *config) IsEnvFalse(key string) bool {
return value == "0" || value == "n" || value == "no" || value == "off" || value == "false"
}
+func (c *config) TargetsJava17() bool {
+ return c.IsEnvTrue("EXPERIMENTAL_TARGET_JAVA_VERSION_17")
+}
+
// EnvDeps returns the environment variables this build depends on. The first
// call to this function blocks future reads from the environment.
func (c *config) EnvDeps() map[string]string {
diff --git a/java/java.go b/java/java.go
index 511e885e9..0dfb968e9 100644
--- a/java/java.go
+++ b/java/java.go
@@ -468,6 +468,12 @@ func getJavaVersion(ctx android.ModuleContext, javaVersion string, sdkContext an
return normalizeJavaVersion(ctx, javaVersion)
} else if ctx.Device() {
return defaultJavaLanguageVersion(ctx, sdkContext.SdkVersion(ctx))
+ } else if ctx.Config().TargetsJava17() {
+ // Temporary experimental flag to be able to try and build with
+ // java version 17 options. The flag, if used, just sets Java
+ // 17 as the default version, leaving any components that
+ // target an older version intact.
+ return JAVA_VERSION_17
} else {
return JAVA_VERSION_11
}
@@ -482,6 +488,7 @@ const (
JAVA_VERSION_8 = 8
JAVA_VERSION_9 = 9
JAVA_VERSION_11 = 11
+ JAVA_VERSION_17 = 17
)
func (v javaVersion) String() string {
@@ -496,6 +503,8 @@ func (v javaVersion) String() string {
return "1.9"
case JAVA_VERSION_11:
return "11"
+ case JAVA_VERSION_17:
+ return "17"
default:
return "unsupported"
}
@@ -518,8 +527,10 @@ func normalizeJavaVersion(ctx android.BaseModuleContext, javaVersion string) jav
return JAVA_VERSION_9
case "11":
return JAVA_VERSION_11
- case "10":
- ctx.PropertyErrorf("java_version", "Java language levels 10 is not supported")
+ case "17":
+ return JAVA_VERSION_11
+ case "10", "12", "13", "14", "15", "16":
+ ctx.PropertyErrorf("java_version", "Java language level %s is not supported", javaVersion)
return JAVA_VERSION_UNSUPPORTED
default:
ctx.PropertyErrorf("java_version", "Unrecognized Java language level")
diff --git a/java/sdk.go b/java/sdk.go
index 0dddd40aa..b0da5afba 100644
--- a/java/sdk.go
+++ b/java/sdk.go
@@ -57,6 +57,12 @@ func defaultJavaLanguageVersion(ctx android.EarlyModuleContext, s android.SdkSpe
return JAVA_VERSION_8
} else if sdk.FinalOrFutureInt() <= 31 {
return JAVA_VERSION_9
+ } else if ctx.Config().TargetsJava17() {
+ // Temporary experimental flag to be able to try and build with
+ // java version 17 options. The flag, if used, just sets Java
+ // 17 as the default version, leaving any components that
+ // target an older version intact.
+ return JAVA_VERSION_17
} else {
return JAVA_VERSION_11
}