Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ce720c36 authored by Sorin Basca's avatar Sorin Basca
Browse files

Add experimental option to target Java 17

Bug: 233029164
Test: EXPERIMENTAL_TARGET_JAVA_VERSION_17=true \
      EXPERIMENTAL_USE_OPENJDK17_TOOLCHAIN=true m
Change-Id: I80a9ba9eb356a460c1036e711e793c2ca6620f53
parent 40f98736
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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 {
+13 −2
Original line number Diff line number Diff line
@@ -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")
+6 −0
Original line number Diff line number Diff line
@@ -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
	}