diff options
Diffstat (limited to 'java/builder.go')
-rw-r--r-- | java/builder.go | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/java/builder.go b/java/builder.go index 118f23979..8992f681a 100644 --- a/java/builder.go +++ b/java/builder.go @@ -126,6 +126,7 @@ type javaBuilderFlags struct { dxFlags string bootClasspath classpath classpath classpath + systemModules classpath desugarFlags string aidlFlags string javaVersion string @@ -177,7 +178,16 @@ func transformJavaToClasses(ctx android.ModuleContext, srcFiles, srcFileLists an } deps = append(deps, srcFileLists...) - deps = append(deps, flags.bootClasspath...) + + var bootClasspath string + if flags.javaVersion == "1.9" { + deps = append(deps, flags.systemModules...) + bootClasspath = flags.systemModules.JavaSystemModules(ctx.Device()) + } else { + deps = append(deps, flags.bootClasspath...) + bootClasspath = flags.bootClasspath.JavaBootClasspath(ctx.Device()) + } + deps = append(deps, flags.classpath...) ctx.ModuleBuild(pctx, android.ModuleBuildParams{ @@ -188,7 +198,7 @@ func transformJavaToClasses(ctx android.ModuleContext, srcFiles, srcFileLists an Implicits: deps, Args: map[string]string{ "javacFlags": javacFlags, - "bootClasspath": flags.bootClasspath.JavaBootClasspath(ctx.Device()), + "bootClasspath": bootClasspath, "classpath": flags.classpath.JavaClasspath(), "outDir": android.PathForModuleOut(ctx, "classes"+suffix).String(), "annoDir": android.PathForModuleOut(ctx, "anno"+suffix).String(), @@ -259,7 +269,7 @@ func TransformDesugar(ctx android.ModuleContext, classesJar android.Path, dumpDir := android.PathForModuleOut(ctx, "desugar_dumped_classes") javaFlags := "" - if ctx.AConfig().Getenv("EXPERIMENTAL_USE_OPENJDK9") != "" { + if ctx.AConfig().UseOpenJDK9() { javaFlags = "--add-opens java.base/java.lang.invoke=ALL-UNNAMED" } @@ -359,6 +369,21 @@ func (x *classpath) JavaBootClasspath(forceEmpty bool) string { } } +// Returns a --system argument in the form javac expects with -source 1.9. If forceEmpty is true, +// returns --system=none if the list is empty to ensure javac does not fall back to the default +// system modules. +func (x *classpath) JavaSystemModules(forceEmpty bool) string { + if len(*x) > 1 { + panic("more than one system module") + } else if len(*x) == 1 { + return "--system=" + strings.TrimSuffix((*x)[0].String(), "lib/modules") + } else if forceEmpty { + return "--system=none" + } else { + return "" + } +} + func (x *classpath) DesugarBootClasspath() []string { if x == nil || *x == nil { return nil |