Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3645a62f authored by Spandan Das's avatar Spandan Das
Browse files

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
parent 2f681324
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -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(