Loading android/module.go +32 −12 Original line number Diff line number Diff line Loading @@ -1176,15 +1176,24 @@ func (ctx *androidModuleContext) ExpandOptionalSource(srcFile *string, prop stri func (ctx *androidModuleContext) ExpandSourcesSubDir(srcFiles, excludes []string, subDir string) Paths { prefix := PathForModuleSrc(ctx).String() for i, e := range excludes { j := findStringInSlice(e, srcFiles) if j != -1 { srcFiles = append(srcFiles[:j], srcFiles[j+1:]...) } expandedExcludes := make([]string, 0, len(excludes)) excludes[i] = filepath.Join(prefix, e) for _, e := range excludes { if m := SrcIsModule(e); m != "" { module := ctx.GetDirectDepWithTag(m, SourceDepTag) if module == nil { // Error will have been handled by ExtractSourcesDeps continue } if srcProducer, ok := module.(SourceFileProducer); ok { expandedExcludes = append(expandedExcludes, srcProducer.Srcs().Strings()...) } else { ctx.ModuleErrorf("srcs dependency %q is not a source file producing module", m) } } else { expandedExcludes = append(expandedExcludes, filepath.Join(prefix, e)) } } expandedSrcFiles := make(Paths, 0, len(srcFiles)) for _, s := range srcFiles { if m := SrcIsModule(s); m != "" { Loading @@ -1194,22 +1203,33 @@ func (ctx *androidModuleContext) ExpandSourcesSubDir(srcFiles, excludes []string continue } if srcProducer, ok := module.(SourceFileProducer); ok { expandedSrcFiles = append(expandedSrcFiles, srcProducer.Srcs()...) moduleSrcs := srcProducer.Srcs() for _, e := range expandedExcludes { for j, ms := range moduleSrcs { if ms.String() == e { moduleSrcs = append(moduleSrcs[:j], moduleSrcs[j+1:]...) } } } expandedSrcFiles = append(expandedSrcFiles, moduleSrcs...) } else { ctx.ModuleErrorf("srcs dependency %q is not a source file producing module", m) } } else if pathtools.IsGlob(s) { globbedSrcFiles := ctx.Glob(filepath.Join(prefix, s), excludes) globbedSrcFiles := ctx.Glob(filepath.Join(prefix, s), expandedExcludes) for i, s := range globbedSrcFiles { globbedSrcFiles[i] = s.(ModuleSrcPath).WithSubDir(ctx, subDir) } expandedSrcFiles = append(expandedSrcFiles, globbedSrcFiles...) } else { s := PathForModuleSrc(ctx, s).WithSubDir(ctx, subDir) expandedSrcFiles = append(expandedSrcFiles, s) } p := PathForModuleSrc(ctx, s).WithSubDir(ctx, subDir) j := findStringInSlice(p.String(), expandedExcludes) if j == -1 { expandedSrcFiles = append(expandedSrcFiles, p) } } } return expandedSrcFiles } Loading cc/compiler.go +1 −0 Original line number Diff line number Diff line Loading @@ -202,6 +202,7 @@ func (compiler *baseCompiler) compilerDeps(ctx DepsContext, deps Deps) Deps { deps.GeneratedHeaders = append(deps.GeneratedHeaders, compiler.Properties.Generated_headers...) android.ExtractSourcesDeps(ctx, compiler.Properties.Srcs) android.ExtractSourcesDeps(ctx, compiler.Properties.Exclude_srcs) if compiler.hasSrcExt(".proto") { deps = protoDeps(ctx, deps, &compiler.Proto, Bool(compiler.Properties.Proto.Static)) Loading genrule/filegroup.go +1 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ func FileGroupFactory() android.Module { func (fg *fileGroup) DepsMutator(ctx android.BottomUpMutatorContext) { android.ExtractSourcesDeps(ctx, fg.properties.Srcs) android.ExtractSourcesDeps(ctx, fg.properties.Exclude_srcs) } func (fg *fileGroup) GenerateAndroidBuildActions(ctx android.ModuleContext) { Loading java/java.go +1 −0 Original line number Diff line number Diff line Loading @@ -466,6 +466,7 @@ func (j *Module) deps(ctx android.BottomUpMutatorContext) { ctx.AddDependency(ctx.Module(), libTag, j.properties.Annotation_processors...) android.ExtractSourcesDeps(ctx, j.properties.Srcs) android.ExtractSourcesDeps(ctx, j.properties.Exclude_srcs) android.ExtractSourcesDeps(ctx, j.properties.Java_resources) android.ExtractSourceDeps(ctx, j.properties.Manifest) Loading java/java_test.go +39 −10 Original line number Diff line number Diff line Loading @@ -141,6 +141,9 @@ func testContext(config android.Config, bp string, "java-res/a": nil, "java-res/b": nil, "java-res2/a": nil, "java-fg/a.java": nil, "java-fg/b.java": nil, "java-fg/c.java": nil, "prebuilts/sdk/14/android.jar": nil, "prebuilts/sdk/14/framework.aidl": nil, Loading Loading @@ -907,6 +910,32 @@ func TestJarGenrules(t *testing.T) { } } func TestExcludeFileGroupInSrcs(t *testing.T) { ctx := testJava(t, ` java_library { name: "foo", srcs: ["a.java", ":foo-srcs"], exclude_srcs: ["a.java", ":foo-excludes"], } filegroup { name: "foo-srcs", srcs: ["java-fg/a.java", "java-fg/b.java", "java-fg/c.java"], } filegroup { name: "foo-excludes", srcs: ["java-fg/a.java", "java-fg/b.java"], } `) javac := ctx.ModuleForTests("foo", "android_common").Rule("javac") if len(javac.Inputs) != 1 || javac.Inputs[0].String() != "java-fg/c.java" { t.Errorf(`foo inputs %v != ["java-fg/c.java"]`, javac.Inputs) } } func fail(t *testing.T, errs []error) { t.Helper() if len(errs) > 0 { Loading Loading
android/module.go +32 −12 Original line number Diff line number Diff line Loading @@ -1176,15 +1176,24 @@ func (ctx *androidModuleContext) ExpandOptionalSource(srcFile *string, prop stri func (ctx *androidModuleContext) ExpandSourcesSubDir(srcFiles, excludes []string, subDir string) Paths { prefix := PathForModuleSrc(ctx).String() for i, e := range excludes { j := findStringInSlice(e, srcFiles) if j != -1 { srcFiles = append(srcFiles[:j], srcFiles[j+1:]...) } expandedExcludes := make([]string, 0, len(excludes)) excludes[i] = filepath.Join(prefix, e) for _, e := range excludes { if m := SrcIsModule(e); m != "" { module := ctx.GetDirectDepWithTag(m, SourceDepTag) if module == nil { // Error will have been handled by ExtractSourcesDeps continue } if srcProducer, ok := module.(SourceFileProducer); ok { expandedExcludes = append(expandedExcludes, srcProducer.Srcs().Strings()...) } else { ctx.ModuleErrorf("srcs dependency %q is not a source file producing module", m) } } else { expandedExcludes = append(expandedExcludes, filepath.Join(prefix, e)) } } expandedSrcFiles := make(Paths, 0, len(srcFiles)) for _, s := range srcFiles { if m := SrcIsModule(s); m != "" { Loading @@ -1194,22 +1203,33 @@ func (ctx *androidModuleContext) ExpandSourcesSubDir(srcFiles, excludes []string continue } if srcProducer, ok := module.(SourceFileProducer); ok { expandedSrcFiles = append(expandedSrcFiles, srcProducer.Srcs()...) moduleSrcs := srcProducer.Srcs() for _, e := range expandedExcludes { for j, ms := range moduleSrcs { if ms.String() == e { moduleSrcs = append(moduleSrcs[:j], moduleSrcs[j+1:]...) } } } expandedSrcFiles = append(expandedSrcFiles, moduleSrcs...) } else { ctx.ModuleErrorf("srcs dependency %q is not a source file producing module", m) } } else if pathtools.IsGlob(s) { globbedSrcFiles := ctx.Glob(filepath.Join(prefix, s), excludes) globbedSrcFiles := ctx.Glob(filepath.Join(prefix, s), expandedExcludes) for i, s := range globbedSrcFiles { globbedSrcFiles[i] = s.(ModuleSrcPath).WithSubDir(ctx, subDir) } expandedSrcFiles = append(expandedSrcFiles, globbedSrcFiles...) } else { s := PathForModuleSrc(ctx, s).WithSubDir(ctx, subDir) expandedSrcFiles = append(expandedSrcFiles, s) } p := PathForModuleSrc(ctx, s).WithSubDir(ctx, subDir) j := findStringInSlice(p.String(), expandedExcludes) if j == -1 { expandedSrcFiles = append(expandedSrcFiles, p) } } } return expandedSrcFiles } Loading
cc/compiler.go +1 −0 Original line number Diff line number Diff line Loading @@ -202,6 +202,7 @@ func (compiler *baseCompiler) compilerDeps(ctx DepsContext, deps Deps) Deps { deps.GeneratedHeaders = append(deps.GeneratedHeaders, compiler.Properties.Generated_headers...) android.ExtractSourcesDeps(ctx, compiler.Properties.Srcs) android.ExtractSourcesDeps(ctx, compiler.Properties.Exclude_srcs) if compiler.hasSrcExt(".proto") { deps = protoDeps(ctx, deps, &compiler.Proto, Bool(compiler.Properties.Proto.Static)) Loading
genrule/filegroup.go +1 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ func FileGroupFactory() android.Module { func (fg *fileGroup) DepsMutator(ctx android.BottomUpMutatorContext) { android.ExtractSourcesDeps(ctx, fg.properties.Srcs) android.ExtractSourcesDeps(ctx, fg.properties.Exclude_srcs) } func (fg *fileGroup) GenerateAndroidBuildActions(ctx android.ModuleContext) { Loading
java/java.go +1 −0 Original line number Diff line number Diff line Loading @@ -466,6 +466,7 @@ func (j *Module) deps(ctx android.BottomUpMutatorContext) { ctx.AddDependency(ctx.Module(), libTag, j.properties.Annotation_processors...) android.ExtractSourcesDeps(ctx, j.properties.Srcs) android.ExtractSourcesDeps(ctx, j.properties.Exclude_srcs) android.ExtractSourcesDeps(ctx, j.properties.Java_resources) android.ExtractSourceDeps(ctx, j.properties.Manifest) Loading
java/java_test.go +39 −10 Original line number Diff line number Diff line Loading @@ -141,6 +141,9 @@ func testContext(config android.Config, bp string, "java-res/a": nil, "java-res/b": nil, "java-res2/a": nil, "java-fg/a.java": nil, "java-fg/b.java": nil, "java-fg/c.java": nil, "prebuilts/sdk/14/android.jar": nil, "prebuilts/sdk/14/framework.aidl": nil, Loading Loading @@ -907,6 +910,32 @@ func TestJarGenrules(t *testing.T) { } } func TestExcludeFileGroupInSrcs(t *testing.T) { ctx := testJava(t, ` java_library { name: "foo", srcs: ["a.java", ":foo-srcs"], exclude_srcs: ["a.java", ":foo-excludes"], } filegroup { name: "foo-srcs", srcs: ["java-fg/a.java", "java-fg/b.java", "java-fg/c.java"], } filegroup { name: "foo-excludes", srcs: ["java-fg/a.java", "java-fg/b.java"], } `) javac := ctx.ModuleForTests("foo", "android_common").Rule("javac") if len(javac.Inputs) != 1 || javac.Inputs[0].String() != "java-fg/c.java" { t.Errorf(`foo inputs %v != ["java-fg/c.java"]`, javac.Inputs) } } func fail(t *testing.T, errs []error) { t.Helper() if len(errs) > 0 { Loading