Remove explicit suffixes from (ll)ndk_library

Soong can rename these automatically for internal use, so don't require
users to set these.

Bug: 33241851
Test: Android-aosp_arm.mk is the same before/after
Test: build.ninja is the same before/after
Test: build-aosp_arm.ninja is the same before/after
Merged-In: Ia92356a0ec079f908fd49812231228046783e50d
Change-Id: Ia92356a0ec079f908fd49812231228046783e50d
diff --git a/cc/androidmk.go b/cc/androidmk.go
index 2cfa3f4..fa7ce42 100644
--- a/cc/androidmk.go
+++ b/cc/androidmk.go
@@ -279,7 +279,7 @@
 }
 
 func (c *stubDecorator) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkData) {
-	ret.SubName = "." + c.properties.ApiLevel
+	ret.SubName = ndkLibrarySuffix + "." + c.properties.ApiLevel
 	ret.Class = "SHARED_LIBRARIES"
 
 	ret.Extra = append(ret.Extra, func(w io.Writer, outputFile android.Path) error {
@@ -301,6 +301,7 @@
 
 func (c *llndkStubDecorator) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkData) {
 	ret.Class = "SHARED_LIBRARIES"
+	ret.SubName = llndkLibrarySuffix
 
 	ret.Extra = append(ret.Extra, func(w io.Writer, outputFile android.Path) error {
 		c.libraryDecorator.androidMkWriteExportedFlags(w)
diff --git a/cc/cc.go b/cc/cc.go
index 8ef606f..ae203a3 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -430,7 +430,9 @@
 
 func (c *Module) Name() string {
 	name := c.ModuleBase.Name()
-	if p, ok := c.linker.(prebuiltLinkerInterface); ok {
+	if p, ok := c.linker.(interface {
+		Name(string) string
+	}); ok {
 		name = p.Name(name)
 	}
 	return name
diff --git a/cc/llndk_library.go b/cc/llndk_library.go
index 60efc57..cde1bc7 100644
--- a/cc/llndk_library.go
+++ b/cc/llndk_library.go
@@ -29,15 +29,10 @@
 
 // Creates a stub shared library based on the provided version file.
 //
-// The name of the generated file will be based on the module name by stripping
-// the ".llndk" suffix from the module name. Module names must end with ".llndk"
-// (as a convention to allow soong to guess the LL-NDK name of a dependency when
-// needed). "libfoo.llndk" will generate "libfoo.so".
-//
 // Example:
 //
 // llndk_library {
-//     name: "libfoo.llndk",
+//     name: "libfoo",
 //     symbol_file: "libfoo.map.txt",
 //     export_include_dirs: ["include_vndk"],
 // }
@@ -69,10 +64,6 @@
 }
 
 func (stub *llndkStubDecorator) compile(ctx ModuleContext, flags Flags, deps PathDeps) Objects {
-	if !strings.HasSuffix(ctx.ModuleName(), llndkLibrarySuffix) {
-		ctx.ModuleErrorf("llndk_library modules names must be suffixed with %q\n",
-			llndkLibrarySuffix)
-	}
 	objs, versionScript := compileStubLibrary(ctx, flags, stub.Properties.Symbol_file, "current", "--vndk")
 	stub.versionScriptPath = versionScript
 	return objs
@@ -82,6 +73,10 @@
 	return Deps{}
 }
 
+func (stub *llndkStubDecorator) Name(name string) string {
+	return name + llndkLibrarySuffix
+}
+
 func (stub *llndkStubDecorator) linkerFlags(ctx ModuleContext, flags Flags) Flags {
 	stub.libraryDecorator.libName = strings.TrimSuffix(ctx.ModuleName(),
 		llndkLibrarySuffix)
diff --git a/cc/ndk_library.go b/cc/ndk_library.go
index 75785f9..f5499dd 100644
--- a/cc/ndk_library.go
+++ b/cc/ndk_library.go
@@ -65,15 +65,10 @@
 
 // Creates a stub shared library based on the provided version file.
 //
-// The name of the generated file will be based on the module name by stripping
-// the ".ndk" suffix from the module name. Module names must end with ".ndk"
-// (as a convention to allow soong to guess the NDK name of a dependency when
-// needed). "libfoo.ndk" will generate "libfoo.so.
-//
 // Example:
 //
 // ndk_library {
-//     name: "libfoo.ndk",
+//     name: "libfoo",
 //     symbol_file: "libfoo.map.txt",
 //     first_version: "9",
 // }
@@ -230,7 +225,11 @@
 func (c *stubDecorator) compilerInit(ctx BaseModuleContext) {
 	c.baseCompiler.compilerInit(ctx)
 
-	name := strings.TrimSuffix(ctx.ModuleName(), ".ndk")
+	name := ctx.baseModuleName()
+	if strings.HasSuffix(name, ndkLibrarySuffix) {
+		ctx.PropertyErrorf("name", "Do not append %q manually, just use the base name", ndkLibrarySuffix)
+	}
+
 	ndkMigratedLibsLock.Lock()
 	defer ndkMigratedLibsLock.Unlock()
 	for _, lib := range ndkMigratedLibs {
@@ -276,10 +275,6 @@
 }
 
 func (c *stubDecorator) compile(ctx ModuleContext, flags Flags, deps PathDeps) Objects {
-	if !strings.HasSuffix(ctx.ModuleName(), ndkLibrarySuffix) {
-		ctx.ModuleErrorf("ndk_library modules names must be suffixed with %q\n",
-			ndkLibrarySuffix)
-	}
 	objs, versionScript := compileStubLibrary(ctx, flags, c.properties.Symbol_file, c.properties.ApiLevel, "")
 	c.versionScriptPath = versionScript
 	return objs
@@ -289,9 +284,12 @@
 	return Deps{}
 }
 
+func (linker *stubDecorator) Name(name string) string {
+	return name + ndkLibrarySuffix
+}
+
 func (stub *stubDecorator) linkerFlags(ctx ModuleContext, flags Flags) Flags {
-	stub.libraryDecorator.libName = strings.TrimSuffix(ctx.ModuleName(),
-		ndkLibrarySuffix)
+	stub.libraryDecorator.libName = ctx.baseModuleName()
 	return stub.libraryDecorator.linkerFlags(ctx, flags)
 }