Revert "Enforce min_sdk_version of apex(use_vendor:true)"

This reverts commit 380fc3615cf8c837e25dd7c480f8ce579ffd5d90.

Reason for revert: breaking one of internal targets

Change-Id: Ica96c44078e5a7f674410828af3ba851317775dd

Exempt-From-Owner-Approval: revert to fix build failure
diff --git a/apex/apex_test.go b/apex/apex_test.go
index 21d517f..babc27b 100644
--- a/apex/apex_test.go
+++ b/apex/apex_test.go
@@ -858,89 +858,58 @@
 
 }
 
-func TestApexDependsOnLLNDKTransitively(t *testing.T) {
-	testcases := []struct {
-		name          string
-		minSdkVersion string
-		shouldLink    string
-		shouldNotLink []string
-	}{
-		{
-			name:          "should link to test latest",
-			minSdkVersion: "current",
-			shouldLink:    "30",
-			shouldNotLink: []string{"29"},
-		},
-		{
-			name:          "should link to llndk#29",
-			minSdkVersion: "29",
-			shouldLink:    "29",
-			shouldNotLink: []string{"30"},
-		},
-	}
-	for _, tc := range testcases {
-		t.Run(tc.name, func(t *testing.T) {
-			ctx, _ := testApex(t, `
-			apex {
-				name: "myapex",
-				key: "myapex.key",
-				use_vendor: true,
-				native_shared_libs: ["mylib"],
-				min_sdk_version: "`+tc.minSdkVersion+`",
-			}
+func TestApexDependencyToLLNDK(t *testing.T) {
+	ctx, _ := testApex(t, `
+		apex {
+			name: "myapex",
+			key: "myapex.key",
+			use_vendor: true,
+			native_shared_libs: ["mylib"],
+		}
 
-			apex_key {
-				name: "myapex.key",
-				public_key: "testkey.avbpubkey",
-				private_key: "testkey.pem",
-			}
+		apex_key {
+			name: "myapex.key",
+			public_key: "testkey.avbpubkey",
+			private_key: "testkey.pem",
+		}
 
-			cc_library {
-				name: "mylib",
-				srcs: ["mylib.cpp"],
-				vendor_available: true,
-				shared_libs: ["libbar"],
-				system_shared_libs: [],
-				stl: "none",
-				apex_available: [ "myapex" ],
-			}
+		cc_library {
+			name: "mylib",
+			srcs: ["mylib.cpp"],
+			vendor_available: true,
+			shared_libs: ["libbar"],
+			system_shared_libs: [],
+			stl: "none",
+			apex_available: [ "myapex" ],
+		}
 
-			cc_library {
-				name: "libbar",
-				srcs: ["mylib.cpp"],
-				system_shared_libs: [],
-				stl: "none",
-				stubs: { versions: ["29","30"] },
-			}
+		cc_library {
+			name: "libbar",
+			srcs: ["mylib.cpp"],
+			system_shared_libs: [],
+			stl: "none",
+		}
 
-			llndk_library {
-				name: "libbar",
-				symbol_file: "",
-			}
-			`, func(fs map[string][]byte, config android.Config) {
-				setUseVendorWhitelistForTest(config, []string{"myapex"})
-			}, withUnbundledBuild)
+		llndk_library {
+			name: "libbar",
+			symbol_file: "",
+		}
+	`, func(fs map[string][]byte, config android.Config) {
+		setUseVendorWhitelistForTest(config, []string{"myapex"})
+	})
 
-			// Ensure that LLNDK dep is not included
-			ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{
-				"lib64/mylib.so",
-			})
+	apexRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexRule")
+	copyCmds := apexRule.Args["copy_commands"]
 
-			// Ensure that LLNDK dep is required
-			apexManifestRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexManifestRule")
-			ensureListEmpty(t, names(apexManifestRule.Args["provideNativeLibs"]))
-			ensureListContains(t, names(apexManifestRule.Args["requireNativeLibs"]), "libbar.so")
+	// Ensure that LLNDK dep is not included
+	ensureNotContains(t, copyCmds, "image.apex/lib64/libbar.so")
 
-			mylibLdFlags := ctx.ModuleForTests("mylib", "android_vendor.VER_arm64_armv8-a_shared_myapex").Rule("ld").Args["libFlags"]
-			ensureContains(t, mylibLdFlags, "libbar.llndk/android_vendor.VER_arm64_armv8-a_shared_"+tc.shouldLink+"/libbar.so")
-			for _, ver := range tc.shouldNotLink {
-				ensureNotContains(t, mylibLdFlags, "libbar.llndk/android_vendor.VER_arm64_armv8-a_shared_"+ver+"/libbar.so")
-			}
+	apexManifestRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexManifestRule")
+	ensureListEmpty(t, names(apexManifestRule.Args["provideNativeLibs"]))
 
-			mylibCFlags := ctx.ModuleForTests("mylib", "android_vendor.VER_arm64_armv8-a_static_myapex").Rule("cc").Args["cFlags"]
-			ensureContains(t, mylibCFlags, "__LIBBAR_API__="+tc.shouldLink)
-		})
-	}
+	// Ensure that LLNDK dep is required
+	ensureListContains(t, names(apexManifestRule.Args["requireNativeLibs"]), "libbar.so")
+
 }
 
 func TestApexWithSystemLibsStubs(t *testing.T) {
@@ -1270,6 +1239,10 @@
 	// note that platform variant is not.
 	cm = ctx.ModuleForTests("libc++", "android_arm64_armv8-a_shared").Module().(*cc.Module)
 	ensureListNotContains(t, cm.Properties.AndroidMkStaticLibs, "libgcc_stripped")
+
+	libFlags := ctx.ModuleForTests("libx", "android_arm64_armv8-a_shared_myapex").Rule("ld").Args["libFlags"]
+	ensureContains(t, libFlags, "android_arm64_armv8-a_shared_myapex/libc++.so")
+	ensureContains(t, libFlags, "android_arm64_armv8-a_shared_29/libc.so") // min_sdk_version applied
 }
 
 func TestInvalidMinSdkVersion(t *testing.T) {
diff --git a/cc/cc.go b/cc/cc.go
index 2009d91..61ae10a 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -622,10 +622,6 @@
 			c.Properties.PreventInstall = true
 			return
 		}
-		if _, ok := c.linker.(*llndkStubDecorator); ok {
-			c.Properties.HideFromMake = true
-			return
-		}
 	}
 	panic(fmt.Errorf("SetBuildStubs called on non-library module: %q", c.BaseModuleName()))
 }
@@ -645,10 +641,6 @@
 			library.MutatedProperties.StubsVersion = version
 			return
 		}
-		if llndk, ok := c.linker.(*llndkStubDecorator); ok {
-			llndk.libraryDecorator.MutatedProperties.StubsVersion = version
-			return
-		}
 	}
 	panic(fmt.Errorf("SetStubsVersions called on non-library module: %q", c.BaseModuleName()))
 }
@@ -658,9 +650,6 @@
 		if library, ok := c.linker.(*libraryDecorator); ok {
 			return library.MutatedProperties.StubsVersion
 		}
-		if llndk, ok := c.linker.(*llndkStubDecorator); ok {
-			return llndk.libraryDecorator.MutatedProperties.StubsVersion
-		}
 	}
 	panic(fmt.Errorf("StubsVersion called on non-library module: %q", c.BaseModuleName()))
 }
@@ -1862,7 +1851,7 @@
 	addSharedLibDependencies := func(depTag DependencyTag, name string, version string) {
 		var variations []blueprint.Variation
 		variations = append(variations, blueprint.Variation{Mutator: "link", Variation: "shared"})
-		versionVariantAvail := !c.InRecovery() && !c.InRamdisk()
+		versionVariantAvail := !ctx.useVndk() && !c.InRecovery() && !c.InRamdisk()
 		if version != "" && versionVariantAvail {
 			// Version is explicitly specified. i.e. libFoo#30
 			variations = append(variations, blueprint.Variation{Mutator: "version", Variation: version})
@@ -2197,17 +2186,13 @@
 		if depTag == android.ProtoPluginDepTag {
 			return
 		}
-		if depTag == llndkImplDep {
-			return
-		}
 
 		if dep.Target().Os != ctx.Os() {
 			ctx.ModuleErrorf("OS mismatch between %q and %q", ctx.ModuleName(), depName)
 			return
 		}
 		if dep.Target().Arch.ArchType != ctx.Arch().ArchType {
-			ctx.ModuleErrorf("Arch mismatch between %q(%v) and %q(%v)",
-				ctx.ModuleName(), ctx.Arch().ArchType, depName, dep.Target().Arch.ArchType)
+			ctx.ModuleErrorf("Arch mismatch between %q and %q", ctx.ModuleName(), depName)
 			return
 		}
 
@@ -2302,27 +2287,6 @@
 					return // stop processing this dep
 				}
 			}
-			if c.UseVndk() {
-				if m, ok := ccDep.(*Module); ok && m.IsStubs() { // LLNDK
-					// by default, use current version of LLNDK
-					versionToUse := ""
-					versions := stubsVersionsFor(ctx.Config())[depName]
-					if c.ApexName() != "" && len(versions) > 0 {
-						// if this is for use_vendor apex && dep has stubsVersions
-						// apply the same rule of apex sdk enforcement to choose right version
-						var err error
-						useLatest := c.ShouldSupportAndroid10() && !ctx.Config().UnbundledBuild()
-						versionToUse, err = c.ChooseSdkVersion(versions, useLatest)
-						if err != nil {
-							ctx.OtherModuleErrorf(dep, err.Error())
-							return
-						}
-					}
-					if versionToUse != ccDep.StubsVersion() {
-						return
-					}
-				}
-			}
 
 			depPaths.IncludeDirs = append(depPaths.IncludeDirs, ccDep.IncludeDirs()...)
 
diff --git a/cc/cc_test.go b/cc/cc_test.go
index 67eb248..9a9678f 100644
--- a/cc/cc_test.go
+++ b/cc/cc_test.go
@@ -2398,34 +2398,6 @@
 	}
 }
 
-func TestLlndkLibrary(t *testing.T) {
-	ctx := testCc(t, `
-	cc_library {
-		name: "libllndk",
-		stubs: { versions: ["1", "2"] },
-	}
-	llndk_library {
-		name: "libllndk",
-	}
-	`)
-	actual := ctx.ModuleVariantsForTests("libllndk.llndk")
-	expected := []string{
-		"android_vendor.VER_arm64_armv8-a_shared",
-		"android_vendor.VER_arm64_armv8-a_shared_1",
-		"android_vendor.VER_arm64_armv8-a_shared_2",
-		"android_vendor.VER_arm_armv7-a-neon_shared",
-		"android_vendor.VER_arm_armv7-a-neon_shared_1",
-		"android_vendor.VER_arm_armv7-a-neon_shared_2",
-	}
-	checkEquals(t, "variants for llndk stubs", expected, actual)
-
-	params := ctx.ModuleForTests("libllndk.llndk", "android_vendor.VER_arm_armv7-a-neon_shared").Description("generate stub")
-	checkEquals(t, "use VNDK version for default stubs", "current", params.Args["apiLevel"])
-
-	params = ctx.ModuleForTests("libllndk.llndk", "android_vendor.VER_arm_armv7-a-neon_shared_1").Description("generate stub")
-	checkEquals(t, "override apiLevel for versioned stubs", "1", params.Args["apiLevel"])
-}
-
 func TestLlndkHeaders(t *testing.T) {
 	ctx := testCc(t, `
 	llndk_headers {
diff --git a/cc/library.go b/cc/library.go
index 7d3bdc2..335b18e 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -1486,19 +1486,6 @@
 	}
 }
 
-func createVersionVariations(mctx android.BottomUpMutatorContext, versions []string) {
-	// "" is for the non-stubs variant
-	versions = append([]string{""}, versions...)
-
-	modules := mctx.CreateVariations(versions...)
-	for i, m := range modules {
-		if versions[i] != "" {
-			m.(LinkableInterface).SetBuildStubs()
-			m.(LinkableInterface).SetStubsVersions(versions[i])
-		}
-	}
-}
-
 // Version mutator splits a module into the mandatory non-stubs variant
 // (which is unnamed) and zero or more stubs variants.
 func VersionMutator(mctx android.BottomUpMutatorContext) {
@@ -1510,30 +1497,24 @@
 				return
 			}
 
+			// save the list of versions for later use
 			stubsVersionsLock.Lock()
 			defer stubsVersionsLock.Unlock()
-			// save the list of versions for later use
 			stubsVersionsFor(mctx.Config())[mctx.ModuleName()] = versions
 
-			createVersionVariations(mctx, versions)
-			return
+			// "" is for the non-stubs variant
+			versions = append([]string{""}, versions...)
+
+			modules := mctx.CreateVariations(versions...)
+			for i, m := range modules {
+				if versions[i] != "" {
+					m.(LinkableInterface).SetBuildStubs()
+					m.(LinkableInterface).SetStubsVersions(versions[i])
+				}
+			}
+		} else {
+			mctx.CreateVariations("")
 		}
-
-		if c, ok := library.(*Module); ok && c.IsStubs() {
-			stubsVersionsLock.Lock()
-			defer stubsVersionsLock.Unlock()
-			// For LLNDK llndk_library, we borrow vstubs.ersions from its implementation library.
-			// Since llndk_library has dependency to its implementation library,
-			// we can safely access stubsVersionsFor() with its baseModuleName.
-			versions := stubsVersionsFor(mctx.Config())[c.BaseModuleName()]
-			// save the list of versions for later use
-			stubsVersionsFor(mctx.Config())[mctx.ModuleName()] = versions
-
-			createVersionVariations(mctx, versions)
-			return
-		}
-
-		mctx.CreateVariations("")
 		return
 	}
 	if genrule, ok := mctx.Module().(*genrule.Module); ok {
diff --git a/cc/llndk_library.go b/cc/llndk_library.go
index 09050aa..3dee692 100644
--- a/cc/llndk_library.go
+++ b/cc/llndk_library.go
@@ -19,14 +19,8 @@
 	"strings"
 
 	"android/soong/android"
-
-	"github.com/google/blueprint"
 )
 
-var llndkImplDep = struct {
-	blueprint.DependencyTag
-}{}
-
 var (
 	llndkLibrarySuffix = ".llndk"
 	llndkHeadersSuffix = ".llndk"
@@ -87,9 +81,6 @@
 		// For non-enforcing devices, vndkVer is empty. Use "current" in that case, too.
 		vndkVer = "current"
 	}
-	if stub.stubsVersion() != "" {
-		vndkVer = stub.stubsVersion()
-	}
 	objs, versionScript := compileStubLibrary(ctx, flags, String(stub.Properties.Symbol_file), vndkVer, "--llndk")
 	stub.versionScriptPath = versionScript
 	return objs
@@ -163,10 +154,6 @@
 		stub.libraryDecorator.flagExporter.Properties.Export_include_dirs = []string{}
 	}
 
-	if stub.stubsVersion() != "" {
-		stub.reexportFlags("-D" + versioningMacroName(ctx.baseModuleName()) + "=" + stub.stubsVersion())
-	}
-
 	return stub.libraryDecorator.link(ctx, flags, deps, objs)
 }
 
diff --git a/cc/vndk.go b/cc/vndk.go
index 4888dcf..e02e7b5 100644
--- a/cc/vndk.go
+++ b/cc/vndk.go
@@ -297,9 +297,6 @@
 	if !Bool(lib.Properties.Vendor_available) {
 		vndkPrivateLibraries(mctx.Config())[name] = filename
 	}
-	if mctx.OtherModuleExists(name) {
-		mctx.AddFarVariationDependencies(m.Target().Variations(), llndkImplDep, name)
-	}
 }
 
 func processVndkLibrary(mctx android.BottomUpMutatorContext, m *Module) {