Merge "Move platform compat config to their own directory."
diff --git a/android/variable.go b/android/variable.go
index 0931db8..3f2b9e9 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -115,6 +115,10 @@
Static_libs []string
Srcs []string
}
+
+ Flatten_apex struct {
+ Enabled *bool
+ }
} `android:"arch_variant"`
}
diff --git a/apex/apex.go b/apex/apex.go
index 832188d..70e685a 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -435,6 +435,7 @@
bundleModuleFile android.WritablePath
outputFiles map[apexPackaging]android.WritablePath
+ flattenedOutput android.OutputPath
installDir android.OutputPath
prebuiltFileToDelete string
@@ -639,6 +640,13 @@
} else {
return nil, nil
}
+ case ".flattened":
+ if a.flattened {
+ flattenedApexPath := a.flattenedOutput
+ return android.Paths{flattenedApexPath}, nil
+ } else {
+ return nil, nil
+ }
default:
return nil, fmt.Errorf("unsupported module reference tag %q", tag)
}
@@ -784,6 +792,15 @@
return
}
+// Context "decorator", overriding the InstallBypassMake method to always reply `true`.
+type flattenedApexContext struct {
+ android.ModuleContext
+}
+
+func (c *flattenedApexContext) InstallBypassMake() bool {
+ return true
+}
+
func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) {
filesInfo := []apexFile{}
@@ -1051,6 +1068,14 @@
},
})
+ // Temporarily wrap the original `ctx` into a `flattenedApexContext` to have it
+ // reply true to `InstallBypassMake()` (thus making the call
+ // `android.PathForModuleInstall` below use `android.pathForInstallInMakeDir`
+ // instead of `android.PathForOutput`) to return the correct path to the flattened
+ // APEX (as its contents is installed by Make, not Soong).
+ factx := flattenedApexContext{ctx}
+ a.flattenedOutput = android.PathForModuleInstall(&factx, "apex", factx.ModuleName())
+
if a.apexTypes.zip() {
a.buildUnflattenedApex(ctx, zipApex)
}
@@ -1451,6 +1476,8 @@
fmt.Fprintln(w, "LOCAL_REQUIRED_MODULES :=", strings.Join(moduleNames, " "))
}
fmt.Fprintln(w, "include $(BUILD_PHONY_PACKAGE)")
+ fmt.Fprintln(w, "$(LOCAL_INSTALLED_MODULE): .KATI_IMPLICIT_OUTPUTS :=", a.flattenedOutput.String())
+
} else {
// zip-apex is the less common type so have the name refer to the image-apex
// only and use {name}.zip if you want the zip-apex