Revert "Export non-apex variants of modules to make"

This reverts commit 502da3987a488307ffab5b5b2cedc119892e40d6.

Reason for revert: b/274195633

```
In file included from out/soong/installs-aosp_cf_x86_pasan.mk:134984:
In file included from out/soong/Android-aosp_cf_x86_pasan.mk:981696:
In file included from build/make/core/soong_cc_rust_prebuilt.mk:76:
build/make/core/base_rules.mk:342: error: packages/modules/Uwb/service/uci/jni: MODULE.TARGET.SHARED_LIBRARIES.libuwb_uci_jni_rust already defined by packages/modules/Uwb/service/uci/jni.
```

Change-Id: Ic1ea6969e54c23a7d126eb0fb47ab6f2e44ee965
diff --git a/android/androidmk.go b/android/androidmk.go
index a7b69f6..aa411d1 100644
--- a/android/androidmk.go
+++ b/android/androidmk.go
@@ -560,8 +560,6 @@
 		a.SetPaths("LOCAL_SOONG_INSTALL_SYMLINKS", base.katiSymlinks.InstallPaths().Paths())
 	}
 
-	a.SetBoolIfTrue("LOCAL_UNINSTALLABLE_MODULE", base.commonProperties.SkipInstall)
-
 	if am, ok := mod.(ApexModule); ok {
 		a.SetBoolIfTrue("LOCAL_NOT_AVAILABLE_FOR_PLATFORM", am.NotAvailableForPlatform())
 	}
diff --git a/android/apex.go b/android/apex.go
index a0ac5b8..358818f 100644
--- a/android/apex.go
+++ b/android/apex.go
@@ -603,7 +603,7 @@
 			// Do not install the module for platform, but still allow it to output
 			// uninstallable AndroidMk entries in certain cases when they have side
 			// effects.  TODO(jiyong): move this routine to somewhere else
-			mod.SkipInstall()
+			mod.MakeUninstallable()
 		}
 		if !platformVariation {
 			mctx.SetVariationProvider(mod, ApexInfoProvider, apexInfos[i-1])
diff --git a/android/module.go b/android/module.go
index b45ed95..773d77b 100644
--- a/android/module.go
+++ b/android/module.go
@@ -505,8 +505,8 @@
 	PartitionTag(DeviceConfig) string
 	HideFromMake()
 	IsHideFromMake() bool
-	SkipInstall()
 	IsSkipInstall() bool
+	MakeUninstallable()
 	ReplacedByPrebuilt()
 	IsReplacedByPrebuilt() bool
 	ExportedToMake() bool
@@ -1964,6 +1964,15 @@
 	return m.commonProperties.SkipInstall
 }
 
+// Similar to HideFromMake, but if the AndroidMk entry would set
+// LOCAL_UNINSTALLABLE_MODULE then this variant may still output that entry
+// rather than leaving it out altogether. That happens in cases where it would
+// have other side effects, in particular when it adds a NOTICE file target,
+// which other install targets might depend on.
+func (m *ModuleBase) MakeUninstallable() {
+	m.HideFromMake()
+}
+
 func (m *ModuleBase) ReplacedByPrebuilt() {
 	m.commonProperties.ReplacedByPrebuilt = true
 	m.HideFromMake()
diff --git a/android/packaging_test.go b/android/packaging_test.go
index f32d1c3..91ac1f3 100644
--- a/android/packaging_test.go
+++ b/android/packaging_test.go
@@ -15,7 +15,6 @@
 package android
 
 import (
-	"strings"
 	"testing"
 
 	"github.com/google/blueprint"
@@ -29,8 +28,6 @@
 		Deps         []string
 		Skip_install *bool
 	}
-
-	builtFile Path
 }
 
 // dep tag used in this test. All dependencies are considered as installable.
@@ -51,21 +48,13 @@
 }
 
 func (m *componentTestModule) GenerateAndroidBuildActions(ctx ModuleContext) {
-	m.builtFile = PathForModuleOut(ctx, m.Name())
+	builtFile := PathForModuleOut(ctx, m.Name())
 	dir := ctx.Target().Arch.ArchType.Multilib
 	installDir := PathForModuleInstall(ctx, dir)
 	if proptools.Bool(m.props.Skip_install) {
 		m.SkipInstall()
 	}
-	ctx.InstallFile(installDir, m.Name(), m.builtFile)
-}
-
-func (m *componentTestModule) AndroidMkEntries() []AndroidMkEntries {
-	return []AndroidMkEntries{
-		{
-			OutputFile: OptionalPathForPath(m.builtFile),
-		},
-	}
+	ctx.InstallFile(installDir, m.Name(), builtFile)
 }
 
 // Module that itself is a package
@@ -262,35 +251,6 @@
 		`, []string{"lib32/foo", "lib64/foo", "lib64/bar"})
 }
 
-func TestSkipInstallProducesLocalUninstallableModule(t *testing.T) {
-	result := GroupFixturePreparers(
-		PrepareForTestWithArchMutator,
-		FixtureRegisterWithContext(func(ctx RegistrationContext) {
-			ctx.RegisterModuleType("component", componentTestModuleFactory)
-			ctx.RegisterModuleType("package_module", packageTestModuleFactory)
-		}),
-		FixtureWithRootAndroidBp(`
-component {
-	name: "foo",
-	skip_install: true,
-}
-
-package_module {
-	name: "package",
-	deps: ["foo"],
-}
-`),
-	).RunTest(t)
-	module := result.ModuleForTests("foo", "android_arm64_armv8-a").Module().(*componentTestModule)
-	entries := AndroidMkEntriesForTest(t, result.TestContext, module)
-	builder := &strings.Builder{}
-	entries[0].write(builder)
-	androidMkString := builder.String()
-	if !strings.Contains(androidMkString, "LOCAL_UNINSTALLABLE_MODULE := true") {
-		t.Errorf("Expected android mk entries to contain \"LOCAL_UNINSTALLABLE_MODULE := true\", got: \n%s", androidMkString)
-	}
-}
-
 func TestPackagingBaseSingleTarget(t *testing.T) {
 	multiTarget := false
 	runPackagingTest(t, multiTarget,
diff --git a/cc/cc.go b/cc/cc.go
index e592cc5..0e88c56 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -609,6 +609,7 @@
 	inSanitizerDir() bool
 	hostToolPath() android.OptionalPath
 	relativeInstallPath() string
+	makeUninstallable(mod *Module)
 	installInRoot() bool
 }
 
@@ -3534,6 +3535,14 @@
 	return c.InRecovery()
 }
 
+func (c *Module) MakeUninstallable() {
+	if c.installer == nil {
+		c.ModuleBase.MakeUninstallable()
+		return
+	}
+	c.installer.makeUninstallable(c)
+}
+
 func (c *Module) HostToolPath() android.OptionalPath {
 	if c.installer == nil {
 		return android.OptionalPath{}
diff --git a/cc/installer.go b/cc/installer.go
index c3618b7..e2c0e7b 100644
--- a/cc/installer.go
+++ b/cc/installer.go
@@ -121,6 +121,10 @@
 	return String(installer.Properties.Relative_install_path)
 }
 
+func (installer *baseInstaller) makeUninstallable(mod *Module) {
+	mod.ModuleBase.MakeUninstallable()
+}
+
 func (installer *baseInstaller) installInRoot() bool {
 	return Bool(installer.Properties.Install_in_root)
 }
diff --git a/cc/library.go b/cc/library.go
index 574c4c3..27f0623 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -2439,6 +2439,17 @@
 	return nil
 }
 
+func (library *libraryDecorator) makeUninstallable(mod *Module) {
+	if library.static() && library.buildStatic() && !library.buildStubs() {
+		// If we're asked to make a static library uninstallable we don't do
+		// anything since AndroidMkEntries always sets LOCAL_UNINSTALLABLE_MODULE
+		// for these entries. This is done to still get the make targets for NOTICE
+		// files from notice_files.mk, which other libraries might depend on.
+		return
+	}
+	mod.ModuleBase.MakeUninstallable()
+}
+
 func (library *libraryDecorator) getPartition() string {
 	return library.path.Partition()
 }
diff --git a/cc/prebuilt.go b/cc/prebuilt.go
index c237d75..5b7ba43 100644
--- a/cc/prebuilt.go
+++ b/cc/prebuilt.go
@@ -214,7 +214,7 @@
 			// without the prefix hack below.
 			if p.hasStubsVariants() && !p.buildStubs() && !ctx.Host() &&
 				!strings.HasPrefix(ctx.baseModuleName(), "libclang_rt.") {
-				ctx.Module().SkipInstall()
+				ctx.Module().MakeUninstallable()
 			}
 
 			return outputFile
diff --git a/java/androidmk.go b/java/androidmk.go
index d73ff46..a4dac80 100644
--- a/java/androidmk.go
+++ b/java/androidmk.go
@@ -76,6 +76,9 @@
 			entriesList = append(entriesList, dexpreoptEntries...)
 		}
 		entriesList = append(entriesList, android.AndroidMkEntries{Disabled: true})
+	} else if !library.ApexModuleBase.AvailableFor(android.AvailableToPlatform) {
+		// Platform variant.  If not available for the platform, we don't need Make module.
+		entriesList = append(entriesList, android.AndroidMkEntries{Disabled: true})
 	} else {
 		entriesList = append(entriesList, android.AndroidMkEntries{
 			Class:      "JAVA_LIBRARIES",
@@ -91,8 +94,7 @@
 						entries.AddStrings("LOCAL_LOGTAGS_FILES", logtags...)
 					}
 
-					if library.installFile == nil || !library.ApexModuleBase.AvailableFor(android.AvailableToPlatform) {
-						// If the ApexModule is not available for the platform, it shouldn't be installed.
+					if library.installFile == nil {
 						entries.SetBoolIfTrue("LOCAL_UNINSTALLABLE_MODULE", true)
 					}
 					if library.dexJarFile.IsSet() {