diff options
Diffstat (limited to 'android/module.go')
-rw-r--r-- | android/module.go | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/android/module.go b/android/module.go index 430563d3..b5de1adf 100644 --- a/android/module.go +++ b/android/module.go @@ -77,6 +77,7 @@ type ModuleContext interface { ModuleBuild(pctx blueprint.PackageContext, params ModuleBuildParams) ExpandSources(srcFiles, excludes []string) Paths + ExpandSourcesSubDir(srcFiles, excludes []string, subDir string) Paths Glob(globPattern string, excludes []string) Paths InstallFile(installPath OutputPath, srcPath Path, deps ...Path) OutputPath @@ -742,9 +743,14 @@ type SourceFileProducer interface { } // Returns a list of paths expanded from globs and modules referenced using ":module" syntax. -// ExpandSourceDeps must have already been called during the dependency resolution phase. +// ExtractSourcesDeps must have already been called during the dependency resolution phase. func (ctx *androidModuleContext) ExpandSources(srcFiles, excludes []string) Paths { + return ctx.ExpandSourcesSubDir(srcFiles, excludes, "") +} + +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 { @@ -754,23 +760,28 @@ func (ctx *androidModuleContext) ExpandSources(srcFiles, excludes []string) Path excludes[i] = filepath.Join(prefix, e) } - globbedSrcFiles := make(Paths, 0, len(srcFiles)) + expandedSrcFiles := make(Paths, 0, len(srcFiles)) for _, s := range srcFiles { if m := SrcIsModule(s); m != "" { module := ctx.GetDirectDepWithTag(m, SourceDepTag) if srcProducer, ok := module.(SourceFileProducer); ok { - globbedSrcFiles = append(globbedSrcFiles, srcProducer.Srcs()...) + expandedSrcFiles = append(expandedSrcFiles, srcProducer.Srcs()...) } else { ctx.ModuleErrorf("srcs dependency %q is not a source file producing module", m) } } else if pathtools.IsGlob(s) { - globbedSrcFiles = append(globbedSrcFiles, ctx.Glob(filepath.Join(prefix, s), excludes)...) + globbedSrcFiles := ctx.Glob(filepath.Join(prefix, s), excludes) + expandedSrcFiles = append(expandedSrcFiles, globbedSrcFiles...) + for i, s := range expandedSrcFiles { + expandedSrcFiles[i] = s.(ModuleSrcPath).WithSubDir(ctx, subDir) + } } else { - globbedSrcFiles = append(globbedSrcFiles, PathForModuleSrc(ctx, s)) + s := PathForModuleSrc(ctx, s).WithSubDir(ctx, subDir) + expandedSrcFiles = append(expandedSrcFiles, s) } } - return globbedSrcFiles + return expandedSrcFiles } func (ctx *androidModuleContext) Glob(globPattern string, excludes []string) Paths { |