diff --git a/cc/androidmk.go b/cc/androidmk.go index 69ed77183..5e3897392 100644 --- a/cc/androidmk.go +++ b/cc/androidmk.go @@ -143,6 +143,9 @@ func (library *libraryDecorator) AndroidMk(ctx AndroidMkContext, ret *android.An ret.Extra = append(ret.Extra, func(w io.Writer, outputFile android.Path) { fmt.Fprintln(w, "LOCAL_SOONG_TOC :=", library.toc().String()) fmt.Fprintln(w, "LOCAL_SOONG_UNSTRIPPED_BINARY :=", library.unstrippedOutputFile.String()) + if len(library.Properties.Overrides) > 0 { + fmt.Fprintln(w, "LOCAL_OVERRIDES_MODULES := "+strings.Join(library.Properties.Overrides, " ")) + } }) } else if library.header() { ret.Class = "HEADER_LIBRARIES" diff --git a/cc/library.go b/cc/library.go index 975f3253f..abaa6c49d 100644 --- a/cc/library.go +++ b/cc/library.go @@ -77,6 +77,16 @@ type LibraryProperties struct { // List versions to generate stubs libs for. Versions []string } + + // set the name of the output + Stem *string `android:"arch_variant"` + + // Names of modules to be overridden. Listed modules can only be other shared libraries + // (in Make or Soong). + // This does not completely prevent installation of the overridden libraries, but if both + // binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed + // from PRODUCT_PACKAGES. + Overrides []string } type LibraryMutatedProperties struct { @@ -429,7 +439,10 @@ type libraryInterface interface { func (library *libraryDecorator) getLibName(ctx ModuleContext) string { name := library.libName if name == "" { - name = ctx.baseModuleName() + name = String(library.Properties.Stem) + if name == "" { + name = ctx.baseModuleName() + } } if ctx.isVndkExt() {