Fix: sysprop module can't be used with whole_static_libs
When a sysprop module is listed in whole_static_libs, it is renamed to "lib" + <module> to actually refer to the generated C++ library for the sysprop module. Test: m (sysprop_test amended) Change-Id: I05eddb24433d444376787be567830929ef078159
This commit is contained in:
14
cc/cc.go
14
cc/cc.go
@@ -1225,12 +1225,18 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) {
|
||||
return
|
||||
}
|
||||
|
||||
actx.AddVariationDependencies([]blueprint.Variation{
|
||||
{Mutator: "link", Variation: "static"},
|
||||
}, wholeStaticDepTag, deps.WholeStaticLibs...)
|
||||
|
||||
syspropImplLibraries := syspropImplLibraries(actx.Config())
|
||||
|
||||
for _, lib := range deps.WholeStaticLibs {
|
||||
depTag := wholeStaticDepTag
|
||||
if impl, ok := syspropImplLibraries[lib]; ok {
|
||||
lib = impl
|
||||
}
|
||||
actx.AddVariationDependencies([]blueprint.Variation{
|
||||
{Mutator: "link", Variation: "static"},
|
||||
}, depTag, lib)
|
||||
}
|
||||
|
||||
for _, lib := range deps.StaticLibs {
|
||||
depTag := staticDepTag
|
||||
if inList(lib, deps.ReexportStaticLibHeaders) {
|
||||
|
@@ -73,6 +73,7 @@ func testContext(config android.Config, bp string,
|
||||
})
|
||||
|
||||
ctx.RegisterModuleType("cc_library", android.ModuleFactoryAdaptor(cc.LibraryFactory))
|
||||
ctx.RegisterModuleType("cc_library_static", android.ModuleFactoryAdaptor(cc.LibraryFactory))
|
||||
ctx.RegisterModuleType("cc_object", android.ModuleFactoryAdaptor(cc.ObjectFactory))
|
||||
ctx.RegisterModuleType("llndk_library", android.ModuleFactoryAdaptor(cc.LlndkLibraryFactory))
|
||||
ctx.RegisterModuleType("toolchain_library", android.ModuleFactoryAdaptor(cc.ToolchainLibraryFactory))
|
||||
@@ -251,6 +252,12 @@ func TestSyspropLibrary(t *testing.T) {
|
||||
static_libs: ["sysprop-platform"],
|
||||
}
|
||||
|
||||
cc_library_static {
|
||||
name: "cc-client-platform-static",
|
||||
srcs: ["d.cpp"],
|
||||
whole_static_libs: ["sysprop-platform"],
|
||||
}
|
||||
|
||||
cc_library {
|
||||
name: "cc-client-product",
|
||||
srcs: ["d.cpp"],
|
||||
@@ -300,12 +307,21 @@ func TestSyspropLibrary(t *testing.T) {
|
||||
platformClient := ctx.ModuleForTests("cc-client-platform", coreVariant)
|
||||
platformFlags := platformClient.Rule("cc").Args["cFlags"]
|
||||
|
||||
// Platform should use platform's internal header
|
||||
// platform should use platform's internal header
|
||||
if !strings.Contains(platformFlags, platformInternalPath) {
|
||||
t.Errorf("flags for platform must contain %#v, but was %#v.",
|
||||
platformInternalPath, platformFlags)
|
||||
}
|
||||
|
||||
platformStaticClient := ctx.ModuleForTests("cc-client-platform-static", coreVariant)
|
||||
platformStaticFlags := platformStaticClient.Rule("cc").Args["cFlags"]
|
||||
|
||||
// platform-static should use platform's internal header
|
||||
if !strings.Contains(platformStaticFlags, platformInternalPath) {
|
||||
t.Errorf("flags for platform-static must contain %#v, but was %#v.",
|
||||
platformInternalPath, platformStaticFlags)
|
||||
}
|
||||
|
||||
productClient := ctx.ModuleForTests("cc-client-product", coreVariant)
|
||||
productFlags := productClient.Rule("cc").Args["cFlags"]
|
||||
|
||||
|
Reference in New Issue
Block a user