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 {
|
cc_library_headers {
|
||||||
name: "libllndk_headers",
|
name: "libllndk_headers",
|
||||||
llndk: {
|
llndk: {
|
||||||
@@ -661,7 +668,7 @@ func TestVndk(t *testing.T) {
|
|||||||
"VNDK-product: libvndk_product.so",
|
"VNDK-product: libvndk_product.so",
|
||||||
"VNDK-product: libvndk_sp_product_private-x.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, "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, "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"})
|
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 (
|
var (
|
||||||
llndkLibraries = vndkModuleLister(func(m *Module) bool { return m.VendorProperties.IsLLNDK && !m.Header() })
|
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 })
|
vndkSPLibraries = vndkModuleLister(func(m *Module) bool { return m.VendorProperties.IsVNDKSP })
|
||||||
vndkCoreLibraries = vndkModuleLister(func(m *Module) bool { return m.VendorProperties.IsVNDKCore })
|
vndkCoreLibraries = vndkModuleLister(func(m *Module) bool { return m.VendorProperties.IsVNDKCore })
|
||||||
vndkPrivateLibraries = vndkModuleLister(func(m *Module) bool { return m.VendorProperties.IsVNDKPrivate })
|
vndkPrivateLibraries = vndkModuleLister(func(m *Module) bool { return m.VendorProperties.IsVNDKPrivate })
|
||||||
@@ -419,10 +418,6 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func RegisterVndkLibraryTxtTypes(ctx android.RegistrationContext) {
|
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("llndk_libraries_txt", llndkLibrariesTxtFactory)
|
||||||
ctx.RegisterSingletonModuleType("vndksp_libraries_txt", vndkSPLibrariesTxtFactory)
|
ctx.RegisterSingletonModuleType("vndksp_libraries_txt", vndkSPLibrariesTxtFactory)
|
||||||
ctx.RegisterSingletonModuleType("vndkcore_libraries_txt", vndkCoreLibrariesTxtFactory)
|
ctx.RegisterSingletonModuleType("vndkcore_libraries_txt", vndkCoreLibrariesTxtFactory)
|
||||||
@@ -434,8 +429,9 @@ func RegisterVndkLibraryTxtTypes(ctx android.RegistrationContext) {
|
|||||||
type vndkLibrariesTxt struct {
|
type vndkLibrariesTxt struct {
|
||||||
android.SingletonModuleBase
|
android.SingletonModuleBase
|
||||||
|
|
||||||
lister moduleListerFunc
|
lister moduleListerFunc
|
||||||
makeVarName string
|
makeVarName string
|
||||||
|
filterOutFromMakeVar string
|
||||||
|
|
||||||
properties VndkLibrariesTxtProperties
|
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
|
// 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.
|
// generated by Soong but can be referenced by other modules.
|
||||||
// For example, apex_vndk can depend on these files as prebuilt.
|
// 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 {
|
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
|
// 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")
|
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{
|
m := &vndkLibrariesTxt{
|
||||||
lister: lister,
|
lister: lister,
|
||||||
makeVarName: makeVarName,
|
makeVarName: makeVarName,
|
||||||
|
filterOutFromMakeVar: filter,
|
||||||
}
|
}
|
||||||
m.AddProperties(&m.properties)
|
m.AddProperties(&m.properties)
|
||||||
android.InitAndroidModule(m)
|
android.InitAndroidModule(m)
|
||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func newVndkLibrariesTxt(lister moduleListerFunc, makeVarName string) android.SingletonModule {
|
||||||
|
return newVndkLibrariesWithMakeVarFilter(lister, makeVarName, "")
|
||||||
|
}
|
||||||
|
|
||||||
func insertVndkVersion(filename string, vndkVersion string) string {
|
func insertVndkVersion(filename string, vndkVersion string) string {
|
||||||
if index := strings.LastIndex(filename, "."); index != -1 {
|
if index := strings.LastIndex(filename, "."); index != -1 {
|
||||||
return filename[:index] + "." + vndkVersion + filename[index:]
|
return filename[:index] + "." + vndkVersion + filename[index:]
|
||||||
@@ -542,8 +547,21 @@ func (txt *vndkLibrariesTxt) AndroidMkEntries() []android.AndroidMkEntries {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (txt *vndkLibrariesTxt) MakeVars(ctx android.MakeVarsContext) {
|
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
|
// PrebuiltEtcModule interface
|
||||||
|
Reference in New Issue
Block a user