Merge "Do not filter LLNDK lib from llndk.libraries.txt"
This commit is contained in:
@@ -554,6 +554,13 @@ func TestVndk(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
cc_library {
|
||||
name: "libclang_rt.hwasan-llndk",
|
||||
llndk: {
|
||||
symbol_file: "libclang_rt.hwasan.map.txt",
|
||||
}
|
||||
}
|
||||
|
||||
cc_library_headers {
|
||||
name: "libllndk_headers",
|
||||
llndk: {
|
||||
@@ -661,7 +668,7 @@ func TestVndk(t *testing.T) {
|
||||
"VNDK-product: libvndk_product.so",
|
||||
"VNDK-product: libvndk_sp_product_private-x.so",
|
||||
})
|
||||
checkVndkLibrariesOutput(t, ctx, "llndk.libraries.txt", []string{"libc.so", "libdl.so", "libft2.so", "libllndk.so", "libm.so"})
|
||||
checkVndkLibrariesOutput(t, ctx, "llndk.libraries.txt", []string{"libc.so", "libclang_rt.hwasan-llndk.so", "libdl.so", "libft2.so", "libllndk.so", "libm.so"})
|
||||
checkVndkLibrariesOutput(t, ctx, "vndkcore.libraries.txt", []string{"libvndk-private.so", "libvndk.so", "libvndk_product.so"})
|
||||
checkVndkLibrariesOutput(t, ctx, "vndksp.libraries.txt", []string{"libc++.so", "libvndk_sp-x.so", "libvndk_sp_private-x.so", "libvndk_sp_product_private-x.so"})
|
||||
checkVndkLibrariesOutput(t, ctx, "vndkprivate.libraries.txt", []string{"libft2.so", "libvndk-private.so", "libvndk_sp_private-x.so", "libvndk_sp_product_private-x.so"})
|
||||
|
44
cc/vndk.go
44
cc/vndk.go
@@ -234,7 +234,6 @@ type moduleListerFunc func(ctx android.SingletonContext) (moduleNames, fileNames
|
||||
|
||||
var (
|
||||
llndkLibraries = vndkModuleLister(func(m *Module) bool { return m.VendorProperties.IsLLNDK && !m.Header() })
|
||||
llndkLibrariesWithoutHWASAN = vndkModuleListRemover(llndkLibraries, "libclang_rt.hwasan-")
|
||||
vndkSPLibraries = vndkModuleLister(func(m *Module) bool { return m.VendorProperties.IsVNDKSP })
|
||||
vndkCoreLibraries = vndkModuleLister(func(m *Module) bool { return m.VendorProperties.IsVNDKCore })
|
||||
vndkPrivateLibraries = vndkModuleLister(func(m *Module) bool { return m.VendorProperties.IsVNDKPrivate })
|
||||
@@ -419,10 +418,6 @@ func init() {
|
||||
}
|
||||
|
||||
func RegisterVndkLibraryTxtTypes(ctx android.RegistrationContext) {
|
||||
// Make uses LLNDK_LIBRARIES to determine which libraries to install.
|
||||
// HWASAN is only part of the LL-NDK in builds in which libc depends on HWASAN.
|
||||
// Therefore, by removing the library here, we cause it to only be installed if libc
|
||||
// depends on it.
|
||||
ctx.RegisterSingletonModuleType("llndk_libraries_txt", llndkLibrariesTxtFactory)
|
||||
ctx.RegisterSingletonModuleType("vndksp_libraries_txt", vndkSPLibrariesTxtFactory)
|
||||
ctx.RegisterSingletonModuleType("vndkcore_libraries_txt", vndkCoreLibrariesTxtFactory)
|
||||
@@ -434,8 +429,9 @@ func RegisterVndkLibraryTxtTypes(ctx android.RegistrationContext) {
|
||||
type vndkLibrariesTxt struct {
|
||||
android.SingletonModuleBase
|
||||
|
||||
lister moduleListerFunc
|
||||
makeVarName string
|
||||
lister moduleListerFunc
|
||||
makeVarName string
|
||||
filterOutFromMakeVar string
|
||||
|
||||
properties VndkLibrariesTxtProperties
|
||||
|
||||
@@ -454,8 +450,12 @@ var _ android.OutputFileProducer = &vndkLibrariesTxt{}
|
||||
// llndk_libraries_txt is a singleton module whose content is a list of LLNDK libraries
|
||||
// generated by Soong but can be referenced by other modules.
|
||||
// For example, apex_vndk can depend on these files as prebuilt.
|
||||
// Make uses LLNDK_LIBRARIES to determine which libraries to install.
|
||||
// HWASAN is only part of the LL-NDK in builds in which libc depends on HWASAN.
|
||||
// Therefore, by removing the library here, we cause it to only be installed if libc
|
||||
// depends on it.
|
||||
func llndkLibrariesTxtFactory() android.SingletonModule {
|
||||
return newVndkLibrariesTxt(llndkLibrariesWithoutHWASAN, "LLNDK_LIBRARIES")
|
||||
return newVndkLibrariesWithMakeVarFilter(llndkLibraries, "LLNDK_LIBRARIES", "libclang_rt.hwasan-")
|
||||
}
|
||||
|
||||
// vndksp_libraries_txt is a singleton module whose content is a list of VNDKSP libraries
|
||||
@@ -493,16 +493,21 @@ func vndkUsingCoreVariantLibrariesTxtFactory() android.SingletonModule {
|
||||
return newVndkLibrariesTxt(vndkUsingCoreVariantLibraries, "VNDK_USING_CORE_VARIANT_LIBRARIES")
|
||||
}
|
||||
|
||||
func newVndkLibrariesTxt(lister moduleListerFunc, makeVarName string) android.SingletonModule {
|
||||
func newVndkLibrariesWithMakeVarFilter(lister moduleListerFunc, makeVarName string, filter string) android.SingletonModule {
|
||||
m := &vndkLibrariesTxt{
|
||||
lister: lister,
|
||||
makeVarName: makeVarName,
|
||||
lister: lister,
|
||||
makeVarName: makeVarName,
|
||||
filterOutFromMakeVar: filter,
|
||||
}
|
||||
m.AddProperties(&m.properties)
|
||||
android.InitAndroidModule(m)
|
||||
return m
|
||||
}
|
||||
|
||||
func newVndkLibrariesTxt(lister moduleListerFunc, makeVarName string) android.SingletonModule {
|
||||
return newVndkLibrariesWithMakeVarFilter(lister, makeVarName, "")
|
||||
}
|
||||
|
||||
func insertVndkVersion(filename string, vndkVersion string) string {
|
||||
if index := strings.LastIndex(filename, "."); index != -1 {
|
||||
return filename[:index] + "." + vndkVersion + filename[index:]
|
||||
@@ -542,8 +547,21 @@ func (txt *vndkLibrariesTxt) AndroidMkEntries() []android.AndroidMkEntries {
|
||||
}
|
||||
|
||||
func (txt *vndkLibrariesTxt) MakeVars(ctx android.MakeVarsContext) {
|
||||
ctx.Strict(txt.makeVarName, strings.Join(txt.moduleNames, " "))
|
||||
|
||||
filter := func(modules []string, prefix string) []string {
|
||||
if prefix == "" {
|
||||
return modules
|
||||
}
|
||||
var result []string
|
||||
for _, module := range modules {
|
||||
if strings.HasPrefix(module, prefix) {
|
||||
continue
|
||||
} else {
|
||||
result = append(result, module)
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
ctx.Strict(txt.makeVarName, strings.Join(filter(txt.moduleNames, txt.filterOutFromMakeVar), " "))
|
||||
}
|
||||
|
||||
// PrebuiltEtcModule interface
|
||||
|
Reference in New Issue
Block a user