From 946e32e1842854899ed962ee3816ecca76354613 Mon Sep 17 00:00:00 2001 From: Yifan Hong Date: Tue, 3 Apr 2018 13:22:50 -0700 Subject: [PATCH] Add overrides to cc_binary Test: use it for healthd, it is not installed. Bug: 77541952 Change-Id: I170a31d1b4d15f20de6a6b6279a2eeda49ca7447 --- androidmk/cmd/androidmk/android.go | 1 + cc/androidmk.go | 4 ++++ cc/binary.go | 7 +++++++ 3 files changed, 12 insertions(+) diff --git a/androidmk/cmd/androidmk/android.go b/androidmk/cmd/androidmk/android.go index 91f47e0f6..b2a8914e9 100644 --- a/androidmk/cmd/androidmk/android.go +++ b/androidmk/cmd/androidmk/android.go @@ -111,6 +111,7 @@ func init() { "LOCAL_CONLYFLAGS": "conlyflags", "LOCAL_CPPFLAGS": "cppflags", "LOCAL_REQUIRED_MODULES": "required", + "LOCAL_OVERRIDES_MODULES": "overrides", "LOCAL_LDLIBS": "host_ldlibs", "LOCAL_CLANG_CFLAGS": "clang_cflags", "LOCAL_YACCFLAGS": "yaccflags", diff --git a/cc/androidmk.go b/cc/androidmk.go index 56ff713c0..9bcb7835a 100644 --- a/cc/androidmk.go +++ b/cc/androidmk.go @@ -228,6 +228,10 @@ func (binary *binaryDecorator) AndroidMk(ctx AndroidMkContext, ret *android.Andr if binary.coverageOutputFile.Valid() { fmt.Fprintln(w, "LOCAL_PREBUILT_COVERAGE_ARCHIVE :=", binary.coverageOutputFile.String()) } + + if len(binary.Properties.Overrides) > 0 { + fmt.Fprintln(w, "LOCAL_OVERRIDES_MODULES := "+strings.Join(binary.Properties.Overrides, " ")) + } }) } diff --git a/cc/binary.go b/cc/binary.go index 7794eab6a..c3e899a04 100644 --- a/cc/binary.go +++ b/cc/binary.go @@ -45,6 +45,13 @@ type BinaryLinkerProperties struct { No_pie *bool `android:"arch_variant"` DynamicLinker string `blueprint:"mutated"` + + // Names of modules to be overridden. Listed modules can only be other binaries + // (in Make or Soong). + // This does not completely prevent installation of the overridden binaries, but if both + // binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will be removed + // from PRODUCT_PACKAGES. + Overrides []string } func init() {