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

Commit de5aade0 authored by Dan Albert's avatar Dan Albert
Browse files

Generate the known NDK libraries list.

This doesn't need to be manually maintained. It briefly did need to be
during the transition from the old prebuilts, but that's long gone.

Test: treehugger
Bug: http://b/113547923
Change-Id: If05633f3cf622ab39e560a3dfcc88f3eb50406bf
parent 79e546f7
Loading
Loading
Loading
Loading
+3 −9
Original line number Diff line number Diff line
@@ -873,7 +873,7 @@ func (c *Module) isCoverageVariant() bool {
}

func (c *Module) IsNdk() bool {
	return inList(c.Name(), ndkMigratedLibs)
	return inList(c.Name(), ndkKnownLibs)
}

func (c *Module) isLlndk(config android.Config) bool {
@@ -1759,8 +1759,6 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) {
	variantNdkLibs := []string{}
	variantLateNdkLibs := []string{}
	if ctx.Os() == android.Android {
		version := ctx.sdkVersion()

		// rewriteLibs takes a list of names of shared libraries and scans it for three types
		// of names:
		//
@@ -1802,12 +1800,8 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) {
			for _, entry := range list {
				// strip #version suffix out
				name, _ := StubsLibNameAndVersion(entry)
				if ctx.useSdk() && inList(name, ndkPrebuiltSharedLibraries) {
					if !inList(name, ndkMigratedLibs) {
						nonvariantLibs = append(nonvariantLibs, name+".ndk."+version)
					} else {
				if ctx.useSdk() && inList(name, ndkKnownLibs) {
					variantLibs = append(variantLibs, name+ndkLibrarySuffix)
					}
				} else if ctx.useVndk() {
					nonvariantLibs = append(nonvariantLibs, rewriteVendorLibs(entry))
				} else if (ctx.Platform() || ctx.ProductSpecific()) && inList(name, *vendorPublicLibraries) {
+8 −3
Original line number Diff line number Diff line
@@ -97,7 +97,12 @@ func makeVarsProvider(ctx android.MakeVarsContext) {
	ctx.Strict("CLANG_EXTERNAL_CFLAGS", "${config.ClangExternalCflags}")
	ctx.Strict("GLOBAL_CLANG_CFLAGS_NO_OVERRIDE", "${config.NoOverrideClangGlobalCflags}")
	ctx.Strict("GLOBAL_CLANG_CPPFLAGS_NO_OVERRIDE", "")
	ctx.Strict("NDK_PREBUILT_SHARED_LIBRARIES", strings.Join(ndkPrebuiltSharedLibs, " "))
	ndkLibNames := []string{}
	for _, lib := range ndkKnownLibs {
		ndkLibNames = append(ndkLibNames, strings.TrimPrefix(lib, "lib"))
	}
	sort.Strings(ndkLibNames)
	ctx.Strict("NDK_PREBUILT_SHARED_LIBRARIES", strings.Join(ndkLibNames, " "))

	ctx.Strict("BOARD_VNDK_VERSION", ctx.DeviceConfig().VndkVersion())

@@ -174,8 +179,8 @@ func makeVarsProvider(ctx android.MakeVarsContext) {
	ctx.StrictRaw("SRC_HEADERS", strings.Join(includes, " "))
	ctx.StrictRaw("SRC_SYSTEM_HEADERS", strings.Join(systemIncludes, " "))

	sort.Strings(ndkMigratedLibs)
	ctx.Strict("NDK_MIGRATED_LIBS", strings.Join(ndkMigratedLibs, " "))
	sort.Strings(ndkKnownLibs)
	ctx.Strict("NDK_MIGRATED_LIBS", strings.Join(ndkKnownLibs, " "))

	hostTargets := ctx.Config().Targets[android.BuildOs]
	makeVarsToolchain(ctx, "", hostTargets[0])
+8 −35
Original line number Diff line number Diff line
@@ -47,37 +47,10 @@ var (

	ndkLibrarySuffix = ".ndk"

	ndkPrebuiltSharedLibs = []string{
		"aaudio",
		"amidi",
		"android",
		"binder_ndk",
		"c",
		"camera2ndk",
		"dl",
		"EGL",
		"GLESv1_CM",
		"GLESv2",
		"GLESv3",
		"jnigraphics",
		"log",
		"mediandk",
		"nativewindow",
		"m",
		"neuralnetworks",
		"OpenMAXAL",
		"OpenSLES",
		"stdc++",
		"sync",
		"vulkan",
		"z",
	}
	ndkPrebuiltSharedLibraries = addPrefix(append([]string(nil), ndkPrebuiltSharedLibs...), "lib")

	// These libraries have migrated over to the new ndk_library, which is added
	// as a variation dependency via depsMutator.
	ndkMigratedLibs     = []string{}
	ndkMigratedLibsLock sync.Mutex // protects ndkMigratedLibs writes during parallel BeginMutator
	// Added as a variation dependency via depsMutator.
	ndkKnownLibs = []string{}
	// protects ndkKnownLibs writes during parallel BeginMutator.
	ndkKnownLibsLock sync.Mutex
)

// Creates a stub shared library based on the provided version file.
@@ -257,14 +230,14 @@ func (c *stubDecorator) compilerInit(ctx BaseModuleContext) {
		ctx.PropertyErrorf("name", "Do not append %q manually, just use the base name", ndkLibrarySuffix)
	}

	ndkMigratedLibsLock.Lock()
	defer ndkMigratedLibsLock.Unlock()
	for _, lib := range ndkMigratedLibs {
	ndkKnownLibsLock.Lock()
	defer ndkKnownLibsLock.Unlock()
	for _, lib := range ndkKnownLibs {
		if lib == name {
			return
		}
	}
	ndkMigratedLibs = append(ndkMigratedLibs, name)
	ndkKnownLibs = append(ndkKnownLibs, name)
}

func addStubLibraryCompilerFlags(flags Flags) Flags {
+13 −16
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ func RegisterRequiredBuildComponentsForTest(ctx android.RegistrationContext) {
	ctx.RegisterModuleType("cc_object", ObjectFactory)
	ctx.RegisterModuleType("ndk_prebuilt_shared_stl", NdkPrebuiltSharedStlFactory)
	ctx.RegisterModuleType("ndk_prebuilt_object", NdkPrebuiltObjectFactory)
	ctx.RegisterModuleType("ndk_library", NdkLibraryFactory)
}

func GatherRequiredDepsForTest(oses ...android.OsType) string {
@@ -393,25 +394,22 @@ func GatherRequiredDepsForTest(oses ...android.OsType) string {
			system_shared_libs: [],
		}

		cc_library {
			name: "libc.ndk.current",
			sdk_version: "current",
			stl: "none",
			system_shared_libs: [],
		ndk_library {
			name: "libc",
			first_version: "minimum",
			symbol_file: "libc.map.txt",
		}

		cc_library {
			name: "libm.ndk.current",
			sdk_version: "current",
			stl: "none",
			system_shared_libs: [],
		ndk_library {
			name: "libm",
			first_version: "minimum",
			symbol_file: "libm.map.txt",
		}

		cc_library {
			name: "libdl.ndk.current",
			sdk_version: "current",
			stl: "none",
			system_shared_libs: [],
		ndk_library {
			name: "libdl",
			first_version: "minimum",
			symbol_file: "libdl.map.txt",
		}

		ndk_prebuilt_object {
@@ -503,7 +501,6 @@ func CreateTestContext() *android.TestContext {
	ctx.RegisterModuleType("cc_fuzz", FuzzFactory)
	ctx.RegisterModuleType("cc_test", TestFactory)
	ctx.RegisterModuleType("llndk_headers", llndkHeadersFactory)
	ctx.RegisterModuleType("ndk_library", NdkLibraryFactory)
	ctx.RegisterModuleType("vendor_public_library", vendorPublicLibraryFactory)
	ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
	ctx.RegisterModuleType("vndk_prebuilt_shared", VndkPrebuiltSharedFactory)