summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Colin Cross <ccross@android.com> 2016-03-24 13:14:12 -0700
committer Colin Cross <ccross@android.com> 2016-03-24 13:14:12 -0700
commita23446680ff2e0b17e4048b5ef258a4db420d12f (patch)
tree4b50c11e3d10780f1bb3b4cddffa1aafa76faf32
parentca860ac720e2990bf60d701883ee86bdf9b736a1 (diff)
Use correct install paths in generated Android.mk
Extract Soong's install path and put it in the generated Android.mk file so that tests get installed in the correct place. Change-Id: Id4726855c5677855406de20773a5da533bdd4cea
-rw-r--r--cc/androidmk.go15
-rw-r--r--cc/cc.go2
-rw-r--r--common/androidmk.go5
-rw-r--r--common/module.go8
-rw-r--r--common/paths.go4
5 files changed, 28 insertions, 6 deletions
diff --git a/cc/androidmk.go b/cc/androidmk.go
index aa5c4dcdf..8b1b349ca 100644
--- a/cc/androidmk.go
+++ b/cc/androidmk.go
@@ -17,6 +17,7 @@ package cc
import (
"fmt"
"io"
+ "path/filepath"
"strings"
"android/soong/common"
@@ -105,5 +106,17 @@ func (binary *binaryLinker) AndroidMk(ret *common.AndroidMkData) {
}
func (test *testLinker) AndroidMk(ret *common.AndroidMkData) {
- ret.Disabled = true
+ test.binaryLinker.AndroidMk(ret)
+ if Bool(test.Properties.Test_per_src) {
+ ret.SubName = test.binaryLinker.Properties.Stem
+ }
+}
+
+func (installer *baseInstaller) AndroidMk(ret *common.AndroidMkData) {
+ ret.Extra = append(ret.Extra, func(w io.Writer, outputFile common.Path) error {
+ path := installer.path.RelPathString()
+ fmt.Fprintln(w, "LOCAL_MODULE_PATH := $(OUT_DIR)/"+filepath.Dir(path))
+ fmt.Fprintln(w, "LOCAL_MODULE_STEM := "+filepath.Base(path))
+ return nil
+ })
}
diff --git a/cc/cc.go b/cc/cc.go
index d20a19718..251d1cdcb 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -1195,7 +1195,7 @@ type baseInstaller struct {
dir64 string
data bool
- path common.Path
+ path common.OutputPath
}
var _ installer = (*baseInstaller)(nil)
diff --git a/common/androidmk.go b/common/androidmk.go
index 49380e05b..a16a652d8 100644
--- a/common/androidmk.go
+++ b/common/androidmk.go
@@ -38,6 +38,7 @@ type AndroidMkDataProvider interface {
type AndroidMkData struct {
Class string
+ SubName string
OutputFile OptionalPath
Disabled bool
@@ -141,6 +142,10 @@ func translateAndroidMkModule(ctx blueprint.SingletonContext, w io.Writer, mod b
return err
}
+ if data.SubName != "" {
+ name += "_" + data.SubName
+ }
+
hostCross := false
if amod.Host() && amod.HostType() != CurrentHostType() {
hostCross = true
diff --git a/common/module.go b/common/module.go
index 8e4595272..ee028da15 100644
--- a/common/module.go
+++ b/common/module.go
@@ -76,8 +76,8 @@ type AndroidModuleContext interface {
ExpandSources(srcFiles, excludes []string) Paths
Glob(outDir, globPattern string, excludes []string) Paths
- InstallFile(installPath OutputPath, srcPath Path, deps ...Path) Path
- InstallFileName(installPath OutputPath, name string, srcPath Path, deps ...Path) Path
+ InstallFile(installPath OutputPath, srcPath Path, deps ...Path) OutputPath
+ InstallFileName(installPath OutputPath, name string, srcPath Path, deps ...Path) OutputPath
CheckbuildFile(srcPath Path)
AddMissingDependencies(deps []string)
@@ -531,7 +531,7 @@ func (a *androidBaseContextImpl) InstallInData() bool {
}
func (a *androidModuleContext) InstallFileName(installPath OutputPath, name string, srcPath Path,
- deps ...Path) Path {
+ deps ...Path) OutputPath {
fullInstallPath := installPath.Join(a, name)
@@ -552,7 +552,7 @@ func (a *androidModuleContext) InstallFileName(installPath OutputPath, name stri
return fullInstallPath
}
-func (a *androidModuleContext) InstallFile(installPath OutputPath, srcPath Path, deps ...Path) Path {
+func (a *androidModuleContext) InstallFile(installPath OutputPath, srcPath Path, deps ...Path) OutputPath {
return a.InstallFileName(installPath, filepath.Base(srcPath.String()), srcPath, deps...)
}
diff --git a/common/paths.go b/common/paths.go
index 93cad13c7..554ce3fac 100644
--- a/common/paths.go
+++ b/common/paths.go
@@ -478,6 +478,10 @@ func (p OutputPath) String() string {
return filepath.Join(p.config.buildDir, p.path)
}
+func (p OutputPath) RelPathString() string {
+ return p.path
+}
+
// Join creates a new OutputPath with paths... joined with the current path. The
// provided paths... may not use '..' to escape from the current path.
func (p OutputPath) Join(ctx PathContext, paths ...string) OutputPath {