Merge "Static variant of a stubs lib is correctly tracked"

am: eebdf43337

Change-Id: I431341b18a2601b25fa459c0fb108ce9ae36b860
This commit is contained in:
Jiyong Park 2019-02-08 21:08:03 -08:00 committed by android-build-merger
commit d563bc7b92
3 changed files with 52 additions and 0 deletions

View File

@ -348,6 +348,7 @@ var (
linkerFlagsDepTag = dependencyTag{name: "linker flags file"}
dynamicLinkerDepTag = dependencyTag{name: "dynamic linker"}
reuseObjTag = dependencyTag{name: "reuse objects"}
staticVariantTag = dependencyTag{name: "static variant"}
ndkStubDepTag = dependencyTag{name: "ndk stub", library: true}
ndkLateStubDepTag = dependencyTag{name: "ndk late stub", library: true}
vndkExtDepTag = dependencyTag{name: "vndk extends", library: true}
@ -1536,6 +1537,13 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
}
}
if depTag == staticVariantTag {
if _, ok := ccDep.compiler.(libraryInterface); ok {
c.staticVariant = ccDep
return
}
}
// Extract explicitlyVersioned field from the depTag and reset it inside the struct.
// Otherwise, sharedDepTag and lateSharedDepTag with explicitlyVersioned set to true
// won't be matched to sharedDepTag and lateSharedDepTag.

View File

@ -215,6 +215,7 @@ func createTestContext(t *testing.T, config android.Config, bp string, os androi
ctx.RegisterModuleType("cc_binary", android.ModuleFactoryAdaptor(BinaryFactory))
ctx.RegisterModuleType("cc_library", android.ModuleFactoryAdaptor(LibraryFactory))
ctx.RegisterModuleType("cc_library_shared", android.ModuleFactoryAdaptor(LibrarySharedFactory))
ctx.RegisterModuleType("cc_library_static", android.ModuleFactoryAdaptor(LibraryStaticFactory))
ctx.RegisterModuleType("cc_library_headers", android.ModuleFactoryAdaptor(LibraryHeaderFactory))
ctx.RegisterModuleType("toolchain_library", android.ModuleFactoryAdaptor(ToolchainLibraryFactory))
ctx.RegisterModuleType("llndk_library", android.ModuleFactoryAdaptor(LlndkLibraryFactory))
@ -1966,3 +1967,43 @@ func TestStaticExecutable(t *testing.T) {
}
}
}
func TestStaticDepsOrderWithStubs(t *testing.T) {
ctx := testCc(t, `
cc_binary {
name: "mybin",
srcs: ["foo.c"],
static_libs: ["libB"],
static_executable: true,
stl: "none",
}
cc_library {
name: "libB",
srcs: ["foo.c"],
shared_libs: ["libC"],
stl: "none",
}
cc_library {
name: "libC",
srcs: ["foo.c"],
stl: "none",
stubs: {
versions: ["1"],
},
}`)
mybin := ctx.ModuleForTests("mybin", "android_arm64_armv8-a_core").Module().(*Module)
actual := mybin.depsInLinkOrder
expected := getOutputPaths(ctx, "android_arm64_armv8-a_core_static", []string{"libB", "libC"})
if !reflect.DeepEqual(actual, expected) {
t.Errorf("staticDeps orderings were not propagated correctly"+
"\nactual: %v"+
"\nexpected: %v",
actual,
expected,
)
}
}

View File

@ -1032,6 +1032,9 @@ func reuseStaticLibrary(mctx android.BottomUpMutatorContext, static, shared *Mod
sharedCompiler.baseCompiler.Properties.Srcs
sharedCompiler.baseCompiler.Properties.Srcs = nil
sharedCompiler.baseCompiler.Properties.Generated_sources = nil
} else {
// This dep is just to reference static variant from shared variant
mctx.AddInterVariantDependency(staticVariantTag, shared, static)
}
}
}