Revert "Revert "Speed up vendor snapshot header globs""
This reverts commit c2aff9e9fd8d35f7a1c90827d504f13322840acb.
Reason for revert: modifying glob results no longer corrupts cache after aosp/1557261
Change-Id: I682b92ad08c82ac4fa5482497cb587bd0223d21b
diff --git a/cc/library.go b/cc/library.go
index af9aaca..73ed969 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -449,23 +449,37 @@
}
continue
}
- exts := headerExts
- // Glob all files under this special directory, because of C++ headers.
- if strings.HasPrefix(dir, "external/libcxx/include") {
- exts = []string{""}
+ glob, err := ctx.GlobWithDeps(dir+"/**/*", nil)
+ if err != nil {
+ ctx.ModuleErrorf("glob failed: %#v", err)
+ return
}
- for _, ext := range exts {
- glob, err := ctx.GlobWithDeps(dir+"/**/*"+ext, nil)
- if err != nil {
- ctx.ModuleErrorf("glob failed: %#v", err)
- return
- }
- for _, header := range glob {
- if strings.HasSuffix(header, "/") {
+ isLibcxx := strings.HasPrefix(dir, "external/libcxx/include")
+ j := 0
+ for i, header := range glob {
+ if isLibcxx {
+ // Glob all files under this special directory, because of C++ headers with no
+ // extension.
+ if !strings.HasSuffix(header, "/") {
continue
}
- ret = append(ret, android.PathForSource(ctx, header))
+ } else {
+ // Filter out only the files with extensions that are headers.
+ found := false
+ for _, ext := range headerExts {
+ if strings.HasSuffix(header, ext) {
+ found = true
+ break
+ }
+ }
+ if !found {
+ continue
+ }
}
+ if i != j {
+ glob[j] = glob[i]
+ }
+ j++
}
}