Support subtracting sources from globs
Support -file or -path/glob in file lists that contain globs to subtract files from the resulting glob. Also move source file prefixing and handling into a common function. Change-Id: Ib6d74ce22f53cae7348c4ba35b779976d90359a6
This commit is contained in:
parent
1332b0035c
commit
fce532760f
6 changed files with 34 additions and 16 deletions
3
cc/cc.go
3
cc/cc.go
|
@ -525,8 +525,7 @@ func (c *ccBase) customCompileObjs(ctx common.AndroidModuleContext, flags CCFlag
|
|||
|
||||
buildFlags := ccFlagsToBuilderFlags(flags)
|
||||
|
||||
srcFiles = pathtools.PrefixPaths(srcFiles, common.ModuleSrcDir(ctx))
|
||||
srcFiles = common.ExpandGlobs(ctx, srcFiles)
|
||||
srcFiles = common.ExpandSources(ctx, srcFiles)
|
||||
srcFiles, deps := genSources(ctx, srcFiles, buildFlags)
|
||||
|
||||
return TransformSourceToObj(ctx, subdir, srcFiles, buildFlags, deps)
|
||||
|
|
|
@ -68,16 +68,23 @@ func hasGlob(in []string) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
func ExpandGlobs(ctx AndroidModuleContext, in []string) []string {
|
||||
func expandGlobs(ctx AndroidModuleContext, in []string) []string {
|
||||
if !hasGlob(in) {
|
||||
return in
|
||||
}
|
||||
|
||||
var excludes []string
|
||||
for _, s := range in {
|
||||
if s[0] == '-' {
|
||||
excludes = append(excludes, s[1:])
|
||||
}
|
||||
}
|
||||
|
||||
out := make([]string, 0, len(in))
|
||||
for _, s := range in {
|
||||
if glob.IsGlob(s) {
|
||||
out = append(out, Glob(ctx, s)...)
|
||||
} else {
|
||||
out = append(out, Glob(ctx, s, excludes)...)
|
||||
} else if s[0] != '-' {
|
||||
out = append(out, s)
|
||||
}
|
||||
}
|
||||
|
@ -85,12 +92,10 @@ func ExpandGlobs(ctx AndroidModuleContext, in []string) []string {
|
|||
return out
|
||||
}
|
||||
|
||||
func Glob(ctx AndroidModuleContext, globPattern string) []string {
|
||||
func Glob(ctx AndroidModuleContext, globPattern string, excludes []string) []string {
|
||||
fileListFile := filepath.Join(ModuleOutDir(ctx), "glob", globToString(globPattern))
|
||||
depFile := fileListFile + ".d"
|
||||
|
||||
var excludes []string
|
||||
|
||||
// Get a globbed file list, and write out fileListFile and depFile
|
||||
files, err := glob.GlobWithDepFile(globPattern, fileListFile, depFile, excludes)
|
||||
if err != nil {
|
||||
|
|
|
@ -432,3 +432,17 @@ func isAndroidModule(m blueprint.Module) bool {
|
|||
_, ok := m.(AndroidModule)
|
||||
return ok
|
||||
}
|
||||
|
||||
func ExpandSources(ctx AndroidModuleContext, srcFiles []string) []string {
|
||||
prefix := ModuleSrcDir(ctx)
|
||||
for i, srcFile := range srcFiles {
|
||||
if srcFile[0] == '-' {
|
||||
srcFiles[i] = "-" + filepath.Join(prefix, srcFile[1:])
|
||||
} else {
|
||||
srcFiles[i] = filepath.Join(prefix, srcFile)
|
||||
}
|
||||
}
|
||||
|
||||
srcFiles = expandGlobs(ctx, srcFiles)
|
||||
return srcFiles
|
||||
}
|
||||
|
|
|
@ -67,9 +67,7 @@ func (g *genSrcs) GenerateAndroidBuildActions(ctx common.AndroidModuleContext) {
|
|||
Command: g.properties.Cmd,
|
||||
})
|
||||
|
||||
srcFiles := g.properties.Srcs
|
||||
srcFiles = pathtools.PrefixPaths(srcFiles, common.ModuleSrcDir(ctx))
|
||||
srcFiles = common.ExpandGlobs(ctx, srcFiles)
|
||||
srcFiles := common.ExpandSources(ctx, g.properties.Srcs)
|
||||
|
||||
g.outputFiles = make([]string, 0, len(srcFiles))
|
||||
|
||||
|
|
|
@ -65,7 +65,12 @@ func GlobWithDepFile(glob, fileListFile, depFile string, excludes []string) (fil
|
|||
}
|
||||
if match {
|
||||
for _, e := range excludes {
|
||||
excludeMatch, err := filepath.Match(e, info.Name())
|
||||
var excludeMatch bool
|
||||
if filepath.Base(e) == e {
|
||||
excludeMatch, err = filepath.Match(e, info.Name())
|
||||
} else {
|
||||
excludeMatch, err = filepath.Match(e, path)
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -24,7 +24,6 @@ import (
|
|||
"strings"
|
||||
|
||||
"github.com/google/blueprint"
|
||||
"github.com/google/blueprint/pathtools"
|
||||
|
||||
"android/soong/common"
|
||||
)
|
||||
|
@ -193,9 +192,7 @@ func (j *javaBase) GenerateJavaBuildActions(ctx common.AndroidModuleContext) {
|
|||
|
||||
var javacDeps []string
|
||||
|
||||
srcFiles := j.properties.Srcs
|
||||
srcFiles = pathtools.PrefixPaths(srcFiles, common.ModuleSrcDir(ctx))
|
||||
srcFiles = common.ExpandGlobs(ctx, srcFiles)
|
||||
srcFiles := common.ExpandSources(ctx, j.properties.Srcs)
|
||||
|
||||
classpath, bootClasspath, classJarSpecs, resourceJarSpecs := j.collectDeps(ctx)
|
||||
|
||||
|
|
Loading…
Reference in a new issue