diff options
| -rw-r--r-- | cc/library.go | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/cc/library.go b/cc/library.go index 47485ce1c..ba8b0f40d 100644 --- a/cc/library.go +++ b/cc/library.go @@ -407,6 +407,31 @@ func (l *libraryDecorator) collectHeadersForSnapshot(ctx android.ModuleContext) if strings.HasPrefix(dir, android.PathForOutput(ctx).String()) { continue } + // libeigen wrongly exports the root directory "external/eigen". But only two + // subdirectories "Eigen" and "unsupported" contain exported header files. Even worse + // some of them have no extension. So we need special treatment for libeigen in order + // to glob correctly. + if dir == "external/eigen" { + // Only these two directories contains exported headers. + for _, subdir := range []string{"Eigen", "unsupported/Eigen"} { + glob, err := ctx.GlobWithDeps("external/eigen/"+subdir+"/**/*", nil) + if err != nil { + ctx.ModuleErrorf("glob failed: %#v", err) + return + } + for _, header := range glob { + if strings.HasSuffix(header, "/") { + continue + } + ext := filepath.Ext(header) + if ext != "" && ext != ".h" { + continue + } + ret = append(ret, android.PathForSource(ctx, header)) + } + } + continue + } exts := headerExts // Glob all files under this special directory, because of C++ headers. if strings.HasPrefix(dir, "external/libcxx/include") { |