Add a systemModules utility type

Storing system modules in a classpath is clumsy, as there should
only ever be one system modules, and it needs to store both a
directory to pass as the argument and a set of generated files
to use as dependencies.  Store them in a separate systemModules
type instead.

Test: m checkbuild
Change-Id: I020556c736bd5091865bcca51dc0fb9e4db6b45b
This commit is contained in:
Colin Cross
2019-07-16 13:57:13 -07:00
parent 33961b54e6
commit b77043e207
3 changed files with 37 additions and 43 deletions

View File

@@ -148,16 +148,15 @@ func init() {
}
type javaBuilderFlags struct {
javacFlags string
bootClasspath classpath
classpath classpath
processorPath classpath
processor string
systemModules classpath
systemModulesDeps android.Paths
aidlFlags string
aidlDeps android.Paths
javaVersion string
javacFlags string
bootClasspath classpath
classpath classpath
processorPath classpath
processor string
systemModules *systemModules
aidlFlags string
aidlDeps android.Paths
javaVersion string
errorProneExtraJavacFlags string
errorProneProcessorPath classpath
@@ -249,8 +248,9 @@ func transformJavaToClasses(ctx android.ModuleContext, outputFile android.Writab
var bootClasspath string
if flags.javaVersion == "1.9" {
deps = append(deps, flags.systemModulesDeps...)
bootClasspath = flags.systemModules.FormJavaSystemModulesPath("--system=", ctx.Device())
var systemModuleDeps android.Paths
bootClasspath, systemModuleDeps = flags.systemModules.FormJavaSystemModulesPath(ctx.Device())
deps = append(deps, systemModuleDeps...)
} else {
deps = append(deps, flags.bootClasspath...)
if len(flags.bootClasspath) == 0 && ctx.Device() {
@@ -424,21 +424,6 @@ func (x *classpath) FormJavaClassPath(optName string) 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) FormJavaSystemModulesPath(optName string, forceEmpty bool) string {
if len(*x) > 1 {
panic("more than one system module")
} else if len(*x) == 1 {
return optName + (*x)[0].String()
} else if forceEmpty {
return optName + "none"
} else {
return ""
}
}
func (x *classpath) FormTurbineClasspath(optName string) []string {
if x == nil || *x == nil {
return nil
@@ -466,3 +451,21 @@ func (x *classpath) Strings() []string {
}
return ret
}
type systemModules struct {
dir android.Path
deps android.Paths
}
// 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 *systemModules) FormJavaSystemModulesPath(forceEmpty bool) (string, android.Paths) {
if x != nil {
return "--system=" + x.dir.String(), x.deps
} else if forceEmpty {
return "--system=none", nil
} else {
return "", nil
}
}