aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2017-08-02 07:32:51 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2017-08-02 07:32:51 +0000
commit1cf94219cc49668e1298709a6c1fa70c1a4387df (patch)
tree1f4d0003383c01cdc014ff96f7332d69c1451675
parentb2ddc88959c9a81f0f08c75626f91c96559d1288 (diff)
parent7ec6cb270bf206ce0af29160b9bb66e6598a8134 (diff)
downloadsoong-1cf94219cc49668e1298709a6c1fa70c1a4387df.tar.gz
release-request-ceffd4a6-d719-491c-b078-6ce33cda5fb8-for-git_oc-mr1-release-4237114 snap-temp-L83200000088245566
Change-Id: Ic1b72eeda75adc39de4e19205743c046e34c1ba1
-rw-r--r--cc/androidmk.go10
-rw-r--r--cc/cc.go23
-rw-r--r--cc/sanitize.go15
3 files changed, 39 insertions, 9 deletions
diff --git a/cc/androidmk.go b/cc/androidmk.go
index a92a95c0f..940e7c779 100644
--- a/cc/androidmk.go
+++ b/cc/androidmk.go
@@ -23,6 +23,10 @@ import (
"android/soong/android"
)
+var (
+ vendorSuffix = ".vendor"
+)
+
type AndroidMkContext interface {
Target() android.Target
subAndroidMk(*android.AndroidMkData, interface{})
@@ -81,8 +85,10 @@ func (c *Module) AndroidMk() (ret android.AndroidMkData, err error) {
}
c.subAndroidMk(&ret, c.installer)
- if c.vndk() {
- ret.SubName += ".vendor"
+ if c.vndk() && Bool(c.Properties.Vendor_available) {
+ // .vendor suffix is added only when we will have two variants: core and vendor.
+ // The suffix is not added for vendor-only module.
+ ret.SubName += vendorSuffix
}
return ret, nil
diff --git a/cc/cc.go b/cc/cc.go
index ae4825041..0f754a661 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -720,9 +720,6 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) {
deps := c.deps(ctx)
- c.Properties.AndroidMkSharedLibs = append(c.Properties.AndroidMkSharedLibs, deps.SharedLibs...)
- c.Properties.AndroidMkSharedLibs = append(c.Properties.AndroidMkSharedLibs, deps.LateSharedLibs...)
-
variantNdkLibs := []string{}
variantLateNdkLibs := []string{}
if ctx.Os() == android.Android {
@@ -1101,6 +1098,26 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
}
*depPtr = append(*depPtr, dep.Path())
}
+
+ // Export the shared libs to the make world. In doing so, .vendor suffix
+ // is added if the lib has both core and vendor variants and this module
+ // is building against vndk. This is because the vendor variant will be
+ // have .vendor suffix in its name in the make world. However, if the
+ // lib is a vendor-only lib or this lib is not building against vndk,
+ // then the suffix is not added.
+ switch tag {
+ case sharedDepTag, sharedExportDepTag, lateSharedDepTag:
+ libName := strings.TrimSuffix(name, llndkLibrarySuffix)
+ libName = strings.TrimPrefix(libName, "prebuilt_")
+ isLLndk := inList(libName, config.LLndkLibraries())
+ if c.vndk() && (Bool(cc.Properties.Vendor_available) || isLLndk) {
+ libName += vendorSuffix
+ }
+ // Note: the order of libs in this list is not important because
+ // they merely serve as dependencies in the make world and do not
+ // affect this lib itself.
+ c.Properties.AndroidMkSharedLibs = append(c.Properties.AndroidMkSharedLibs, libName)
+ }
})
// Dedup exported flags from dependencies
diff --git a/cc/sanitize.go b/cc/sanitize.go
index eccd25587..916fe7181 100644
--- a/cc/sanitize.go
+++ b/cc/sanitize.go
@@ -116,7 +116,8 @@ type SanitizeProperties struct {
type sanitize struct {
Properties SanitizeProperties
- runtimeLibrary string
+ runtimeLibrary string
+ androidMkRuntimeLibrary string
}
func (sanitize *sanitize) props() []interface{} {
@@ -422,12 +423,18 @@ func (sanitize *sanitize) flags(ctx ModuleContext, flags Flags) Flags {
runtimeLibrary = config.UndefinedBehaviorSanitizerRuntimeLibrary(ctx.toolchain())
}
- // ASan runtime library must be the first in the link order.
if runtimeLibrary != "" {
+ // ASan runtime library must be the first in the link order.
flags.libFlags = append([]string{
"${config.ClangAsanLibDir}/" + runtimeLibrary + ctx.toolchain().ShlibSuffix(),
}, flags.libFlags...)
sanitize.runtimeLibrary = runtimeLibrary
+
+ // When linking against VNDK, use the vendor variant of the runtime lib
+ sanitize.androidMkRuntimeLibrary = sanitize.runtimeLibrary
+ if ctx.vndk() {
+ sanitize.androidMkRuntimeLibrary = sanitize.runtimeLibrary + vendorSuffix
+ }
}
blacklist := android.OptionalPathForModuleSrc(ctx, sanitize.Properties.Sanitize.Blacklist)
@@ -441,8 +448,8 @@ func (sanitize *sanitize) flags(ctx ModuleContext, flags Flags) Flags {
func (sanitize *sanitize) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkData) {
ret.Extra = append(ret.Extra, func(w io.Writer, outputFile android.Path) error {
- if sanitize.runtimeLibrary != "" {
- fmt.Fprintln(w, "LOCAL_SHARED_LIBRARIES += "+sanitize.runtimeLibrary)
+ if sanitize.androidMkRuntimeLibrary != "" {
+ fmt.Fprintln(w, "LOCAL_SHARED_LIBRARIES += "+sanitize.androidMkRuntimeLibrary)
}
return nil