diff --git a/cc/androidmk.go b/cc/androidmk.go
index 95250a6..5495e20 100644
--- a/cc/androidmk.go
+++ b/cc/androidmk.go
@@ -106,7 +106,7 @@
 	ret.Custom = func(w io.Writer, name, prefix string) error {
 		out := ret.OutputFile.Path()
 
-		fmt.Fprintln(w, "\n$("+prefix+"OUT_INTERMEDIATE_LIBRARIES)/"+name+objectExtension+":", out.String(), "| $(ACP)")
+		fmt.Fprintln(w, "\n$("+prefix+"OUT_INTERMEDIATE_LIBRARIES)/"+name+objectExtension+":", out.String())
 		fmt.Fprintln(w, "\t$(copy-file-to-target)")
 
 		return nil
diff --git a/cc/cc.go b/cc/cc.go
index 15b8cb7..a043d31 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -820,22 +820,6 @@
 	deps.SharedLibs = lastUniqueElements(deps.SharedLibs)
 	deps.LateSharedLibs = lastUniqueElements(deps.LateSharedLibs)
 
-	if ctx.sdk() {
-		version := "." + ctx.sdkVersion()
-
-		rewriteNdkLibs := func(list []string) []string {
-			for i, entry := range list {
-				if inList(entry, ndkPrebuiltSharedLibraries) {
-					list[i] = "ndk_" + entry + version
-				}
-			}
-			return list
-		}
-
-		deps.SharedLibs = rewriteNdkLibs(deps.SharedLibs)
-		deps.LateSharedLibs = rewriteNdkLibs(deps.LateSharedLibs)
-	}
-
 	for _, lib := range deps.ReexportSharedLibHeaders {
 		if !inList(lib, deps.SharedLibs) {
 			ctx.PropertyErrorf("export_shared_lib_headers", "Shared library not in shared_libs: '%s'", lib)
@@ -868,7 +852,23 @@
 
 	deps := c.deps(ctx)
 
-	c.Properties.AndroidMkSharedLibs = deps.SharedLibs
+	c.Properties.AndroidMkSharedLibs = append([]string(nil), deps.SharedLibs...)
+
+	if ctx.sdk() {
+		version := "." + ctx.sdkVersion()
+
+		rewriteNdkLibs := func(list []string) []string {
+			for i, entry := range list {
+				if inList(entry, ndkPrebuiltSharedLibraries) {
+					list[i] = "ndk_" + entry + version
+				}
+			}
+			return list
+		}
+
+		deps.SharedLibs = rewriteNdkLibs(deps.SharedLibs)
+		deps.LateSharedLibs = rewriteNdkLibs(deps.LateSharedLibs)
+	}
 
 	actx.AddVariationDependencies([]blueprint.Variation{{"link", "static"}}, wholeStaticDepTag,
 		deps.WholeStaticLibs...)
@@ -2457,6 +2457,7 @@
 func ndkPrebuiltObjectFactory() (blueprint.Module, []interface{}) {
 	module := newBaseModule(android.DeviceSupported, android.MultilibBoth)
 	module.linker = &ndkPrebuiltObjectLinker{}
+	module.Properties.HideFromMake = true
 	return module.Init()
 }
 
@@ -2491,6 +2492,7 @@
 	linker := &ndkPrebuiltLibraryLinker{}
 	linker.dynamicProperties.BuildShared = true
 	module.linker = linker
+	module.Properties.HideFromMake = true
 	return module.Init()
 }
 
@@ -2520,6 +2522,7 @@
 	linker := &ndkPrebuiltStlLinker{}
 	linker.dynamicProperties.BuildShared = true
 	module.linker = linker
+	module.Properties.HideFromMake = true
 	return module.Init()
 }
 
@@ -2528,6 +2531,7 @@
 	linker := &ndkPrebuiltStlLinker{}
 	linker.dynamicProperties.BuildStatic = true
 	module.linker = linker
+	module.Properties.HideFromMake = true
 	return module.Init()
 }
 
