Added java_system_modules_import
A prebuilt version of java_system_modules. It does not import the generated system module, it generates the system module from imported java libraries in the same way that java_system_modules does. It just acts as a prebuilt, i.e. can have the same base name as another module type and the one to use is selected at runtime. Bug: 142940300 Test: m nothing Change-Id: I126db49d18294fcd6e2b7ad0237f83e9c2fdef7a
This commit is contained in:
parent
cded5ecfc3
commit
90169baf0e
|
@ -1261,3 +1261,33 @@ func TestJavaSystemModules(t *testing.T) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestJavaSystemModulesImport(t *testing.T) {
|
||||
ctx, _ := testJava(t, `
|
||||
java_system_modules_import {
|
||||
name: "system-modules",
|
||||
libs: ["system-module1", "system-module2"],
|
||||
}
|
||||
java_import {
|
||||
name: "system-module1",
|
||||
jars: ["a.jar"],
|
||||
}
|
||||
java_import {
|
||||
name: "system-module2",
|
||||
jars: ["b.jar"],
|
||||
}
|
||||
`)
|
||||
|
||||
// check the existence of the module
|
||||
systemModules := ctx.ModuleForTests("system-modules", "android_common")
|
||||
|
||||
cmd := systemModules.Rule("jarsTosystemModules")
|
||||
|
||||
// make sure the command compiles against the supplied modules.
|
||||
for _, module := range []string{"system-module1.jar", "system-module2.jar"} {
|
||||
if !strings.Contains(cmd.Args["classpath"], module) {
|
||||
t.Errorf("system modules classpath %v does not contain %q", cmd.Args["classpath"],
|
||||
module)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,6 +35,7 @@ func init() {
|
|||
|
||||
func RegisterSystemModulesBuildComponents(ctx android.RegistrationContext) {
|
||||
ctx.RegisterModuleType("java_system_modules", SystemModulesFactory)
|
||||
ctx.RegisterModuleType("java_system_modules_import", systemModulesImportFactory)
|
||||
}
|
||||
|
||||
var (
|
||||
|
@ -160,3 +161,30 @@ func (system *SystemModules) AndroidMk() android.AndroidMkData {
|
|||
},
|
||||
}
|
||||
}
|
||||
|
||||
// A prebuilt version of java_system_modules. It does not import the
|
||||
// generated system module, it generates the system module from imported
|
||||
// java libraries in the same way that java_system_modules does. It just
|
||||
// acts as a prebuilt, i.e. can have the same base name as another module
|
||||
// type and the one to use is selected at runtime.
|
||||
func systemModulesImportFactory() android.Module {
|
||||
module := &systemModulesImport{}
|
||||
module.AddProperties(&module.properties)
|
||||
android.InitPrebuiltModule(module, &module.properties.Libs)
|
||||
android.InitAndroidArchModule(module, android.HostAndDeviceSupported, android.MultilibCommon)
|
||||
android.InitDefaultableModule(module)
|
||||
return module
|
||||
}
|
||||
|
||||
type systemModulesImport struct {
|
||||
SystemModules
|
||||
prebuilt android.Prebuilt
|
||||
}
|
||||
|
||||
func (system *systemModulesImport) Name() string {
|
||||
return system.prebuilt.Name(system.ModuleBase.Name())
|
||||
}
|
||||
|
||||
func (system *systemModulesImport) Prebuilt() *android.Prebuilt {
|
||||
return &system.prebuilt
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue