Add alias variations to linkageMutator
Alias the shared variation if it exists, otherwise the static variation. This allows modules that are not aware of shared library variations (like cc_genrule) to depend on shared libraries by depending on just the normal image, os and arch variations. Bug: 162437057 Test: TestLibraryGenruleCmd Change-Id: Icec57d43538e01ab05cc50d4e3f9a11cc55f0162
This commit is contained in:
parent
094faa5b26
commit
81ca6cd407
|
@ -76,3 +76,42 @@ func TestArchGenruleCmd(t *testing.T) {
|
||||||
t.Errorf(`want arm64 inputs %v, got %v`, expected, gen.Inputs.Strings())
|
t.Errorf(`want arm64 inputs %v, got %v`, expected, gen.Inputs.Strings())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestLibraryGenruleCmd(t *testing.T) {
|
||||||
|
bp := `
|
||||||
|
cc_library {
|
||||||
|
name: "libboth",
|
||||||
|
}
|
||||||
|
|
||||||
|
cc_library_shared {
|
||||||
|
name: "libshared",
|
||||||
|
}
|
||||||
|
|
||||||
|
cc_library_static {
|
||||||
|
name: "libstatic",
|
||||||
|
}
|
||||||
|
|
||||||
|
cc_genrule {
|
||||||
|
name: "gen",
|
||||||
|
tool_files: ["tool"],
|
||||||
|
srcs: [
|
||||||
|
":libboth",
|
||||||
|
":libshared",
|
||||||
|
":libstatic",
|
||||||
|
],
|
||||||
|
cmd: "$(location tool) $(in) $(out)",
|
||||||
|
out: ["out"],
|
||||||
|
}
|
||||||
|
`
|
||||||
|
ctx := testCc(t, bp)
|
||||||
|
|
||||||
|
gen := ctx.ModuleForTests("gen", "android_arm_armv7-a-neon").Output("out")
|
||||||
|
expected := []string{"libboth.so", "libshared.so", "libstatic.a"}
|
||||||
|
var got []string
|
||||||
|
for _, input := range gen.Inputs {
|
||||||
|
got = append(got, input.Base())
|
||||||
|
}
|
||||||
|
if !reflect.DeepEqual(expected, got) {
|
||||||
|
t.Errorf(`want inputs %v, got %v`, expected, got)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1469,6 +1469,12 @@ func LinkageMutator(mctx android.BottomUpMutatorContext) {
|
||||||
static.linker.(prebuiltLibraryInterface).setStatic()
|
static.linker.(prebuiltLibraryInterface).setStatic()
|
||||||
shared.linker.(prebuiltLibraryInterface).setShared()
|
shared.linker.(prebuiltLibraryInterface).setShared()
|
||||||
|
|
||||||
|
if library.buildShared() {
|
||||||
|
mctx.AliasVariation("shared")
|
||||||
|
} else if library.buildStatic() {
|
||||||
|
mctx.AliasVariation("static")
|
||||||
|
}
|
||||||
|
|
||||||
if !library.buildStatic() {
|
if !library.buildStatic() {
|
||||||
static.linker.(prebuiltLibraryInterface).disablePrebuilt()
|
static.linker.(prebuiltLibraryInterface).disablePrebuilt()
|
||||||
}
|
}
|
||||||
|
@ -1500,18 +1506,22 @@ func LinkageMutator(mctx android.BottomUpMutatorContext) {
|
||||||
if _, ok := library.(*Module); ok {
|
if _, ok := library.(*Module); ok {
|
||||||
reuseStaticLibrary(mctx, static.(*Module), shared.(*Module))
|
reuseStaticLibrary(mctx, static.(*Module), shared.(*Module))
|
||||||
}
|
}
|
||||||
|
mctx.AliasVariation("shared")
|
||||||
} else if library.BuildStaticVariant() {
|
} else if library.BuildStaticVariant() {
|
||||||
variations := append([]string{"static"}, variations...)
|
variations := append([]string{"static"}, variations...)
|
||||||
|
|
||||||
modules := mctx.CreateLocalVariations(variations...)
|
modules := mctx.CreateLocalVariations(variations...)
|
||||||
modules[0].(LinkableInterface).SetStatic()
|
modules[0].(LinkableInterface).SetStatic()
|
||||||
|
mctx.AliasVariation("static")
|
||||||
} else if library.BuildSharedVariant() {
|
} else if library.BuildSharedVariant() {
|
||||||
variations := append([]string{"shared"}, variations...)
|
variations := append([]string{"shared"}, variations...)
|
||||||
|
|
||||||
modules := mctx.CreateLocalVariations(variations...)
|
modules := mctx.CreateLocalVariations(variations...)
|
||||||
modules[0].(LinkableInterface).SetShared()
|
modules[0].(LinkableInterface).SetShared()
|
||||||
|
mctx.AliasVariation("shared")
|
||||||
} else if len(variations) > 0 {
|
} else if len(variations) > 0 {
|
||||||
mctx.CreateLocalVariations(variations...)
|
mctx.CreateLocalVariations(variations...)
|
||||||
|
mctx.AliasVariation(variations[0])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue