Loading java/droiddoc.go +5 −7 Original line number Diff line number Diff line Loading @@ -547,10 +547,10 @@ func (j *Javadoc) collectDeps(ctx android.ModuleContext) deps { case bootClasspathTag: if dep, ok := module.(Dependency); ok { deps.bootClasspath = append(deps.bootClasspath, dep.ImplementationJars()...) } else if sm, ok := module.(*SystemModules); ok { } else if sm, ok := module.(SystemModulesProvider); ok { // A system modules dependency has been added to the bootclasspath // so add its libs to the bootclasspath. deps.bootClasspath = append(deps.bootClasspath, sm.headerJars...) deps.bootClasspath = append(deps.bootClasspath, sm.HeaderJars()...) } else { panic(fmt.Errorf("unknown dependency %q for %q", otherName, ctx.ModuleName())) } Loading Loading @@ -578,11 +578,9 @@ func (j *Javadoc) collectDeps(ctx android.ModuleContext) deps { if deps.systemModules != nil { panic("Found two system module dependencies") } sm := module.(*SystemModules) if sm.outputDir == nil && len(sm.outputDeps) == 0 { panic("Missing directory for system module dependency") } deps.systemModules = &systemModules{sm.outputDir, sm.outputDeps} sm := module.(SystemModulesProvider) outputDir, outputDeps := sm.OutputDirAndDeps() deps.systemModules = &systemModules{outputDir, outputDeps} } }) // do not pass exclude_srcs directly when expanding srcFiles since exclude_srcs Loading java/java.go +5 −7 Original line number Diff line number Diff line Loading @@ -1031,18 +1031,16 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps { case bootClasspathTag: // If a system modules dependency has been added to the bootclasspath // then add its libs to the bootclasspath. sm := module.(*SystemModules) deps.bootClasspath = append(deps.bootClasspath, sm.headerJars...) sm := module.(SystemModulesProvider) deps.bootClasspath = append(deps.bootClasspath, sm.HeaderJars()...) case systemModulesTag: if deps.systemModules != nil { panic("Found two system module dependencies") } sm := module.(*SystemModules) if sm.outputDir == nil || len(sm.outputDeps) == 0 { panic("Missing directory for system module dependency") } deps.systemModules = &systemModules{sm.outputDir, sm.outputDeps} sm := module.(SystemModulesProvider) outputDir, outputDeps := sm.OutputDirAndDeps() deps.systemModules = &systemModules{outputDir, outputDeps} } } }) Loading java/java_test.go +115 −0 Original line number Diff line number Diff line Loading @@ -982,6 +982,65 @@ func TestDroiddoc(t *testing.T) { } } func TestDroidstubsWithSystemModules(t *testing.T) { ctx, _ := testJava(t, ` droidstubs { name: "stubs-source-system-modules", srcs: [ "bar-doc/*.java", ], sdk_version: "none", system_modules: "source-system-modules", } java_library { name: "source-jar", srcs: [ "a.java", ], } java_system_modules { name: "source-system-modules", libs: ["source-jar"], } droidstubs { name: "stubs-prebuilt-system-modules", srcs: [ "bar-doc/*.java", ], sdk_version: "none", system_modules: "prebuilt-system-modules", } java_import { name: "prebuilt-jar", jars: ["a.jar"], } java_system_modules_import { name: "prebuilt-system-modules", libs: ["prebuilt-jar"], } `) checkSystemModulesUseByDroidstubs(t, ctx, "stubs-source-system-modules", "source-jar.jar") checkSystemModulesUseByDroidstubs(t, ctx, "stubs-prebuilt-system-modules", "prebuilt-jar.jar") } func checkSystemModulesUseByDroidstubs(t *testing.T, ctx *android.TestContext, moduleName string, systemJar string) { metalavaRule := ctx.ModuleForTests(moduleName, "android_common").Rule("metalava") var systemJars []string for _, i := range metalavaRule.Implicits { systemJars = append(systemJars, i.Base()) } if len(systemJars) != 1 || systemJars[0] != systemJar { t.Errorf("inputs of %q must be []string{%q}, but was %#v.", moduleName, systemJar, systemJars) } } func TestJarGenrules(t *testing.T) { ctx, _ := testJava(t, ` java_library { Loading Loading @@ -1377,3 +1436,59 @@ func TestJavaSystemModulesImport(t *testing.T) { } } } func TestJavaLibraryWithSystemModules(t *testing.T) { ctx, _ := testJava(t, ` java_library { name: "lib-with-source-system-modules", srcs: [ "a.java", ], sdk_version: "none", system_modules: "source-system-modules", } java_library { name: "source-jar", srcs: [ "a.java", ], } java_system_modules { name: "source-system-modules", libs: ["source-jar"], } java_library { name: "lib-with-prebuilt-system-modules", srcs: [ "a.java", ], sdk_version: "none", system_modules: "prebuilt-system-modules", } java_import { name: "prebuilt-jar", jars: ["a.jar"], } java_system_modules_import { name: "prebuilt-system-modules", libs: ["prebuilt-jar"], } `) checkBootClasspathForSystemModule(t, ctx, "lib-with-source-system-modules", "/source-jar.jar") checkBootClasspathForSystemModule(t, ctx, "lib-with-prebuilt-system-modules", "/prebuilt-jar.jar") } func checkBootClasspathForSystemModule(t *testing.T, ctx *android.TestContext, moduleName string, expectedSuffix string) { javacRule := ctx.ModuleForTests(moduleName, "android_common").Rule("javac") bootClasspath := javacRule.Args["bootClasspath"] if strings.HasPrefix(bootClasspath, "--system ") && strings.HasSuffix(bootClasspath, expectedSuffix) { t.Errorf("bootclasspath of %q must start with --system and end with %q, but was %#v.", moduleName, expectedSuffix, bootClasspath) } } java/system_modules.go +20 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,15 @@ func SystemModulesFactory() android.Module { return module } type SystemModulesProvider interface { HeaderJars() android.Paths OutputDirAndDeps() (android.Path, android.Paths) } var _ SystemModulesProvider = (*SystemModules)(nil) var _ SystemModulesProvider = (*systemModulesImport)(nil) type SystemModules struct { android.ModuleBase android.DefaultableModuleBase Loading @@ -136,6 +145,17 @@ type SystemModulesProperties struct { Libs []string } func (system *SystemModules) HeaderJars() android.Paths { return system.headerJars } func (system *SystemModules) OutputDirAndDeps() (android.Path, android.Paths) { if system.outputDir == nil || len(system.outputDeps) == 0 { panic("Missing directory for system module dependency") } return system.outputDir, system.outputDeps } func (system *SystemModules) GenerateAndroidBuildActions(ctx android.ModuleContext) { var jars android.Paths Loading Loading
java/droiddoc.go +5 −7 Original line number Diff line number Diff line Loading @@ -547,10 +547,10 @@ func (j *Javadoc) collectDeps(ctx android.ModuleContext) deps { case bootClasspathTag: if dep, ok := module.(Dependency); ok { deps.bootClasspath = append(deps.bootClasspath, dep.ImplementationJars()...) } else if sm, ok := module.(*SystemModules); ok { } else if sm, ok := module.(SystemModulesProvider); ok { // A system modules dependency has been added to the bootclasspath // so add its libs to the bootclasspath. deps.bootClasspath = append(deps.bootClasspath, sm.headerJars...) deps.bootClasspath = append(deps.bootClasspath, sm.HeaderJars()...) } else { panic(fmt.Errorf("unknown dependency %q for %q", otherName, ctx.ModuleName())) } Loading Loading @@ -578,11 +578,9 @@ func (j *Javadoc) collectDeps(ctx android.ModuleContext) deps { if deps.systemModules != nil { panic("Found two system module dependencies") } sm := module.(*SystemModules) if sm.outputDir == nil && len(sm.outputDeps) == 0 { panic("Missing directory for system module dependency") } deps.systemModules = &systemModules{sm.outputDir, sm.outputDeps} sm := module.(SystemModulesProvider) outputDir, outputDeps := sm.OutputDirAndDeps() deps.systemModules = &systemModules{outputDir, outputDeps} } }) // do not pass exclude_srcs directly when expanding srcFiles since exclude_srcs Loading
java/java.go +5 −7 Original line number Diff line number Diff line Loading @@ -1031,18 +1031,16 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps { case bootClasspathTag: // If a system modules dependency has been added to the bootclasspath // then add its libs to the bootclasspath. sm := module.(*SystemModules) deps.bootClasspath = append(deps.bootClasspath, sm.headerJars...) sm := module.(SystemModulesProvider) deps.bootClasspath = append(deps.bootClasspath, sm.HeaderJars()...) case systemModulesTag: if deps.systemModules != nil { panic("Found two system module dependencies") } sm := module.(*SystemModules) if sm.outputDir == nil || len(sm.outputDeps) == 0 { panic("Missing directory for system module dependency") } deps.systemModules = &systemModules{sm.outputDir, sm.outputDeps} sm := module.(SystemModulesProvider) outputDir, outputDeps := sm.OutputDirAndDeps() deps.systemModules = &systemModules{outputDir, outputDeps} } } }) Loading
java/java_test.go +115 −0 Original line number Diff line number Diff line Loading @@ -982,6 +982,65 @@ func TestDroiddoc(t *testing.T) { } } func TestDroidstubsWithSystemModules(t *testing.T) { ctx, _ := testJava(t, ` droidstubs { name: "stubs-source-system-modules", srcs: [ "bar-doc/*.java", ], sdk_version: "none", system_modules: "source-system-modules", } java_library { name: "source-jar", srcs: [ "a.java", ], } java_system_modules { name: "source-system-modules", libs: ["source-jar"], } droidstubs { name: "stubs-prebuilt-system-modules", srcs: [ "bar-doc/*.java", ], sdk_version: "none", system_modules: "prebuilt-system-modules", } java_import { name: "prebuilt-jar", jars: ["a.jar"], } java_system_modules_import { name: "prebuilt-system-modules", libs: ["prebuilt-jar"], } `) checkSystemModulesUseByDroidstubs(t, ctx, "stubs-source-system-modules", "source-jar.jar") checkSystemModulesUseByDroidstubs(t, ctx, "stubs-prebuilt-system-modules", "prebuilt-jar.jar") } func checkSystemModulesUseByDroidstubs(t *testing.T, ctx *android.TestContext, moduleName string, systemJar string) { metalavaRule := ctx.ModuleForTests(moduleName, "android_common").Rule("metalava") var systemJars []string for _, i := range metalavaRule.Implicits { systemJars = append(systemJars, i.Base()) } if len(systemJars) != 1 || systemJars[0] != systemJar { t.Errorf("inputs of %q must be []string{%q}, but was %#v.", moduleName, systemJar, systemJars) } } func TestJarGenrules(t *testing.T) { ctx, _ := testJava(t, ` java_library { Loading Loading @@ -1377,3 +1436,59 @@ func TestJavaSystemModulesImport(t *testing.T) { } } } func TestJavaLibraryWithSystemModules(t *testing.T) { ctx, _ := testJava(t, ` java_library { name: "lib-with-source-system-modules", srcs: [ "a.java", ], sdk_version: "none", system_modules: "source-system-modules", } java_library { name: "source-jar", srcs: [ "a.java", ], } java_system_modules { name: "source-system-modules", libs: ["source-jar"], } java_library { name: "lib-with-prebuilt-system-modules", srcs: [ "a.java", ], sdk_version: "none", system_modules: "prebuilt-system-modules", } java_import { name: "prebuilt-jar", jars: ["a.jar"], } java_system_modules_import { name: "prebuilt-system-modules", libs: ["prebuilt-jar"], } `) checkBootClasspathForSystemModule(t, ctx, "lib-with-source-system-modules", "/source-jar.jar") checkBootClasspathForSystemModule(t, ctx, "lib-with-prebuilt-system-modules", "/prebuilt-jar.jar") } func checkBootClasspathForSystemModule(t *testing.T, ctx *android.TestContext, moduleName string, expectedSuffix string) { javacRule := ctx.ModuleForTests(moduleName, "android_common").Rule("javac") bootClasspath := javacRule.Args["bootClasspath"] if strings.HasPrefix(bootClasspath, "--system ") && strings.HasSuffix(bootClasspath, expectedSuffix) { t.Errorf("bootclasspath of %q must start with --system and end with %q, but was %#v.", moduleName, expectedSuffix, bootClasspath) } }
java/system_modules.go +20 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,15 @@ func SystemModulesFactory() android.Module { return module } type SystemModulesProvider interface { HeaderJars() android.Paths OutputDirAndDeps() (android.Path, android.Paths) } var _ SystemModulesProvider = (*SystemModules)(nil) var _ SystemModulesProvider = (*systemModulesImport)(nil) type SystemModules struct { android.ModuleBase android.DefaultableModuleBase Loading @@ -136,6 +145,17 @@ type SystemModulesProperties struct { Libs []string } func (system *SystemModules) HeaderJars() android.Paths { return system.headerJars } func (system *SystemModules) OutputDirAndDeps() (android.Path, android.Paths) { if system.outputDir == nil || len(system.outputDeps) == 0 { panic("Missing directory for system module dependency") } return system.outputDir, system.outputDeps } func (system *SystemModules) GenerateAndroidBuildActions(ctx android.ModuleContext) { var jars android.Paths Loading