From 3645a62f536db49f103aba19d2c331a5ca8d02b9 Mon Sep 17 00:00:00 2001 From: Spandan Das Date: Thu, 7 Sep 2023 22:32:25 +0000 Subject: [PATCH] Write the list of ndk libraries to cc_toolchain/ndk_libs.bzl Soong adds "--no-ndk" to cc stubs for apexes if the library is not an NDK library. In order to port this logic, emit the list to a .bzl file. We cannot use the exportedVars.Export* soong_injection api for this since we need to visit all modules to get this list. Test: m nothing Bug: 299501496 Change-Id: If8487db85e08b32b9b40aef3371d9f3f7d5a77e0 --- bp2build/bp2build_product_config.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/bp2build/bp2build_product_config.go b/bp2build/bp2build_product_config.go index 77179934f..021494108 100644 --- a/bp2build/bp2build_product_config.go +++ b/bp2build/bp2build_product_config.go @@ -12,6 +12,7 @@ import ( "android/soong/android/soongconfig" "android/soong/starlark_import" + "github.com/google/blueprint" "github.com/google/blueprint/proptools" "go.starlark.net/starlark" ) @@ -45,6 +46,15 @@ func CreateProductConfigFiles( return nil, nil, err } + // Visit all modules to determine the list of ndk libraries + // This list will be used to add additional flags for cc stub generation + ndkLibsStringFormatted := []string{} + ctx.Context().VisitAllModules(func(m blueprint.Module) { + if ctx.Context().ModuleType(m) == "ndk_library" { + ndkLibsStringFormatted = append(ndkLibsStringFormatted, fmt.Sprintf(`"%s"`, m.Name())) // name will be `"libc.ndk"` + } + }) + // TODO(b/249685973): the name is product_config_platforms because product_config // was already used for other files. Deduplicate them. currentProductFolder := fmt.Sprintf("product_config_platforms/products/%s-%s", targetProduct, targetBuildVariant) @@ -154,6 +164,11 @@ build --host_platform @soong_injection//{PRODUCT_FOLDER}:{PRODUCT}-{VARIANT}_lin productReplacer.Replace(` build --host_platform @soong_injection//{PRODUCT_FOLDER}:{PRODUCT}-{VARIANT}_darwin_x86_64 `)), + newFile( + "cc_toolchain", + "ndk_libs.bzl", + fmt.Sprintf("ndk_libs = [%v]", strings.Join(ndkLibsStringFormatted, ", ")), + ), } bp2buildDirFiles := []BazelFile{ newFile(