Loading cc/cc_test.go +8 −1 Original line number Diff line number Diff line Loading @@ -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: { Loading Loading @@ -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"}) Loading cc/vndk.go +31 −13 Original line number Diff line number Diff line Loading @@ -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 }) Loading Loading @@ -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) Loading @@ -436,6 +431,7 @@ type vndkLibrariesTxt struct { lister moduleListerFunc makeVarName string filterOutFromMakeVar string properties VndkLibrariesTxtProperties Loading @@ -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 Loading Loading @@ -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, 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:] Loading Loading @@ -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 Loading Loading
cc/cc_test.go +8 −1 Original line number Diff line number Diff line Loading @@ -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: { Loading Loading @@ -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"}) Loading
cc/vndk.go +31 −13 Original line number Diff line number Diff line Loading @@ -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 }) Loading Loading @@ -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) Loading @@ -436,6 +431,7 @@ type vndkLibrariesTxt struct { lister moduleListerFunc makeVarName string filterOutFromMakeVar string properties VndkLibrariesTxtProperties Loading @@ -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 Loading Loading @@ -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, 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:] Loading Loading @@ -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 Loading