Add experimental option to use OpenJDK 11 toolchain.
With this change, setting the environment variable EXPERIMENTAL_USE_OPENJDK11_TOOLCHAIN=true switches from the OpenJDK 9 toolchain to the OpenJDK 11 one (prebuilts/jdk/jdk11). Since the version of the java.base module has to match the version of the jlink tool which consumes it, the --module-version argument to the jmod create call is also switched. Test: make Test: EXPERIMENTAL_USE_OPENJDK11_TOOLCHAIN make Bug: 131683177 Change-Id: I606d22538165f309fe5537bd67a26390b1dd5771
This commit is contained in:
@@ -86,6 +86,14 @@ func init() {
|
|||||||
// This is set up and guaranteed by soong_ui
|
// This is set up and guaranteed by soong_ui
|
||||||
return ctx.Config().Getenv("ANDROID_JAVA_HOME")
|
return ctx.Config().Getenv("ANDROID_JAVA_HOME")
|
||||||
})
|
})
|
||||||
|
pctx.VariableFunc("JlinkVersion", func(ctx android.PackageVarContext) string {
|
||||||
|
switch ctx.Config().Getenv("EXPERIMENTAL_USE_OPENJDK11_TOOLCHAIN") {
|
||||||
|
case "true":
|
||||||
|
return "11"
|
||||||
|
default:
|
||||||
|
return "9"
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
pctx.SourcePathVariable("JavaToolchain", "${JavaHome}/bin")
|
pctx.SourcePathVariable("JavaToolchain", "${JavaHome}/bin")
|
||||||
pctx.SourcePathVariableWithEnvOverride("JavacCmd",
|
pctx.SourcePathVariableWithEnvOverride("JavacCmd",
|
||||||
|
@@ -38,6 +38,7 @@ func makeVarsProvider(ctx android.MakeVarsContext) {
|
|||||||
ctx.Strict("ANDROID_JAVA_HOME", "${JavaHome}")
|
ctx.Strict("ANDROID_JAVA_HOME", "${JavaHome}")
|
||||||
ctx.Strict("ANDROID_JAVA8_HOME", "prebuilts/jdk/jdk8/${hostPrebuiltTag}")
|
ctx.Strict("ANDROID_JAVA8_HOME", "prebuilts/jdk/jdk8/${hostPrebuiltTag}")
|
||||||
ctx.Strict("ANDROID_JAVA9_HOME", "prebuilts/jdk/jdk9/${hostPrebuiltTag}")
|
ctx.Strict("ANDROID_JAVA9_HOME", "prebuilts/jdk/jdk9/${hostPrebuiltTag}")
|
||||||
|
ctx.Strict("ANDROID_JAVA11_HOME", "prebuilts/jdk/jdk11/${hostPrebuiltTag}")
|
||||||
ctx.Strict("ANDROID_JAVA_TOOLCHAIN", "${JavaToolchain}")
|
ctx.Strict("ANDROID_JAVA_TOOLCHAIN", "${JavaToolchain}")
|
||||||
ctx.Strict("JAVA", "${JavaCmd} ${JavaVmFlags}")
|
ctx.Strict("JAVA", "${JavaCmd} ${JavaVmFlags}")
|
||||||
ctx.Strict("JAVAC", "${JavacCmd} ${JavacVmFlags}")
|
ctx.Strict("JAVAC", "${JavacCmd} ${JavacVmFlags}")
|
||||||
|
@@ -40,7 +40,9 @@ var (
|
|||||||
`${config.JavacCmd} --system=none --patch-module=java.base=${classpath} ${workDir}/module-info.java && ` +
|
`${config.JavacCmd} --system=none --patch-module=java.base=${classpath} ${workDir}/module-info.java && ` +
|
||||||
`${config.SoongZipCmd} -jar -o ${workDir}/classes.jar -C ${workDir} -f ${workDir}/module-info.class && ` +
|
`${config.SoongZipCmd} -jar -o ${workDir}/classes.jar -C ${workDir} -f ${workDir}/module-info.class && ` +
|
||||||
`${config.MergeZipsCmd} -j ${workDir}/module.jar ${workDir}/classes.jar $in && ` +
|
`${config.MergeZipsCmd} -j ${workDir}/module.jar ${workDir}/classes.jar $in && ` +
|
||||||
`${config.JmodCmd} create --module-version 9 --target-platform android ` +
|
// Note: The version of the java.base module created must match the version
|
||||||
|
// of the jlink tool which consumes it.
|
||||||
|
`${config.JmodCmd} create --module-version ${config.JlinkVersion} --target-platform android ` +
|
||||||
` --class-path ${workDir}/module.jar ${workDir}/jmod/java.base.jmod && ` +
|
` --class-path ${workDir}/module.jar ${workDir}/jmod/java.base.jmod && ` +
|
||||||
`${config.JlinkCmd} --module-path ${workDir}/jmod --add-modules java.base --output ${outDir} ` +
|
`${config.JlinkCmd} --module-path ${workDir}/jmod --add-modules java.base --output ${outDir} ` +
|
||||||
// Note: The system-modules jlink plugin is disabled because (a) it is not
|
// Note: The system-modules jlink plugin is disabled because (a) it is not
|
||||||
|
@@ -214,10 +214,14 @@ func NewConfig(ctx Context, args ...string) Config {
|
|||||||
// Configure Java-related variables, including adding it to $PATH
|
// Configure Java-related variables, including adding it to $PATH
|
||||||
java8Home := filepath.Join("prebuilts/jdk/jdk8", ret.HostPrebuiltTag())
|
java8Home := filepath.Join("prebuilts/jdk/jdk8", ret.HostPrebuiltTag())
|
||||||
java9Home := filepath.Join("prebuilts/jdk/jdk9", ret.HostPrebuiltTag())
|
java9Home := filepath.Join("prebuilts/jdk/jdk9", ret.HostPrebuiltTag())
|
||||||
|
java11Home := filepath.Join("prebuilts/jdk/jdk11", ret.HostPrebuiltTag())
|
||||||
javaHome := func() string {
|
javaHome := func() string {
|
||||||
if override, ok := ret.environ.Get("OVERRIDE_ANDROID_JAVA_HOME"); ok {
|
if override, ok := ret.environ.Get("OVERRIDE_ANDROID_JAVA_HOME"); ok {
|
||||||
return override
|
return override
|
||||||
}
|
}
|
||||||
|
if toolchain11, ok := ret.environ.Get("EXPERIMENTAL_USE_OPENJDK11_TOOLCHAIN"); ok && toolchain11 == "true" {
|
||||||
|
return java11Home
|
||||||
|
}
|
||||||
return java9Home
|
return java9Home
|
||||||
}()
|
}()
|
||||||
absJavaHome := absPath(ctx, javaHome)
|
absJavaHome := absPath(ctx, javaHome)
|
||||||
@@ -228,11 +232,13 @@ func NewConfig(ctx Context, args ...string) Config {
|
|||||||
if path, ok := ret.environ.Get("PATH"); ok && path != "" {
|
if path, ok := ret.environ.Get("PATH"); ok && path != "" {
|
||||||
newPath = append(newPath, path)
|
newPath = append(newPath, path)
|
||||||
}
|
}
|
||||||
|
|
||||||
ret.environ.Unset("OVERRIDE_ANDROID_JAVA_HOME")
|
ret.environ.Unset("OVERRIDE_ANDROID_JAVA_HOME")
|
||||||
ret.environ.Set("JAVA_HOME", absJavaHome)
|
ret.environ.Set("JAVA_HOME", absJavaHome)
|
||||||
ret.environ.Set("ANDROID_JAVA_HOME", javaHome)
|
ret.environ.Set("ANDROID_JAVA_HOME", javaHome)
|
||||||
ret.environ.Set("ANDROID_JAVA8_HOME", java8Home)
|
ret.environ.Set("ANDROID_JAVA8_HOME", java8Home)
|
||||||
ret.environ.Set("ANDROID_JAVA9_HOME", java9Home)
|
ret.environ.Set("ANDROID_JAVA9_HOME", java9Home)
|
||||||
|
ret.environ.Set("ANDROID_JAVA11_HOME", java11Home)
|
||||||
ret.environ.Set("PATH", strings.Join(newPath, string(filepath.ListSeparator)))
|
ret.environ.Set("PATH", strings.Join(newPath, string(filepath.ListSeparator)))
|
||||||
|
|
||||||
outDir := ret.OutDir()
|
outDir := ret.OutDir()
|
||||||
|
Reference in New Issue
Block a user