diff options
-rw-r--r-- | cc/gen.go | 5 | ||||
-rw-r--r-- | common/paths.go | 13 | ||||
-rw-r--r-- | java/gen.go | 5 | ||||
-rw-r--r-- | java/resources.go | 3 |
4 files changed, 19 insertions, 7 deletions
@@ -20,7 +20,6 @@ package cc import ( "path/filepath" - "strings" "github.com/google/blueprint" "github.com/google/blueprint/pathtools" @@ -51,7 +50,7 @@ var ( ) func genYacc(ctx common.AndroidModuleContext, yaccFile, yaccFlags string) (cppFile, headerFile string) { - cppFile = strings.TrimPrefix(yaccFile, common.ModuleSrcDir(ctx)) + cppFile = common.SrcDirRelPath(ctx, yaccFile) cppFile = filepath.Join(common.ModuleGenDir(ctx), cppFile) cppFile = pathtools.ReplaceExtension(cppFile, "cpp") hppFile := pathtools.ReplaceExtension(cppFile, "hpp") @@ -74,7 +73,7 @@ func genYacc(ctx common.AndroidModuleContext, yaccFile, yaccFlags string) (cppFi } func genLex(ctx common.AndroidModuleContext, lexFile string) (cppFile string) { - cppFile = strings.TrimPrefix(lexFile, common.ModuleSrcDir(ctx)) + cppFile = common.SrcDirRelPath(ctx, lexFile) cppFile = filepath.Join(common.ModuleGenDir(ctx), cppFile) cppFile = pathtools.ReplaceExtension(cppFile, "cpp") diff --git a/common/paths.go b/common/paths.go index c4bdfc72..d92dcf91 100644 --- a/common/paths.go +++ b/common/paths.go @@ -15,6 +15,7 @@ package common import ( + "fmt" "os" "path/filepath" ) @@ -105,3 +106,15 @@ func CheckSrcDirsExist(ctx AndroidModuleContext, dirs []string, prop string) { } } } + +// Returns a path relative to the top level source directory. Panics if path is not inside the +// top level source directory. +func SrcDirRelPath(ctx AndroidModuleContext, path string) string { + srcDir := ctx.AConfig().SrcDir() + relPath, err := filepath.Rel(srcDir, path) + if err != nil { + panic(fmt.Errorf("%q is not inside %q: %s", path, srcDir, err.Error())) + } + + return relPath +} diff --git a/java/gen.go b/java/gen.go index dd86f66f..6e8313a9 100644 --- a/java/gen.go +++ b/java/gen.go @@ -20,7 +20,6 @@ package java import ( "path/filepath" - "strings" "github.com/google/blueprint" "github.com/google/blueprint/pathtools" @@ -63,7 +62,7 @@ var ( ) func genAidl(ctx common.AndroidModuleContext, aidlFile, aidlFlags string) string { - javaFile := strings.TrimPrefix(aidlFile, common.ModuleSrcDir(ctx)) + javaFile := common.SrcDirRelPath(ctx, aidlFile) javaFile = filepath.Join(common.ModuleGenDir(ctx), javaFile) javaFile = pathtools.ReplaceExtension(javaFile, "java") depFile := javaFile + ".d" @@ -83,7 +82,7 @@ func genAidl(ctx common.AndroidModuleContext, aidlFile, aidlFlags string) string } func genLogtags(ctx common.AndroidModuleContext, logtagsFile string) string { - javaFile := strings.TrimPrefix(logtagsFile, common.ModuleSrcDir(ctx)) + javaFile := common.SrcDirRelPath(ctx, logtagsFile) javaFile = filepath.Join(common.ModuleGenDir(ctx), javaFile) javaFile = pathtools.ReplaceExtension(javaFile, "java") diff --git a/java/resources.go b/java/resources.go index 995e60df..405d8b05 100644 --- a/java/resources.go +++ b/java/resources.go @@ -56,7 +56,8 @@ func ResourceDirsToJarSpecs(ctx common.AndroidModuleContext, resourceDirs, exclu resourceDir := filepath.Join(common.ModuleSrcDir(ctx), resourceDir) dirs := ctx.Glob("java_resources", resourceDir, nil) for _, dir := range dirs { - fileListFile := filepath.Join(common.ModuleOutDir(ctx), "res", dir, "resources.list") + relDir := common.SrcDirRelPath(ctx, dir) + fileListFile := filepath.Join(common.ModuleOutDir(ctx), "res", relDir, "resources.list") depFile := fileListFile + ".d" glob := filepath.Join(dir, "**/*") |