aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cc/gen.go5
-rw-r--r--common/paths.go13
-rw-r--r--java/gen.go5
-rw-r--r--java/resources.go3
4 files changed, 19 insertions, 7 deletions
diff --git a/cc/gen.go b/cc/gen.go
index bd91d647..3bfe679d 100644
--- a/cc/gen.go
+++ b/cc/gen.go
@@ -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, "**/*")