aboutsummaryrefslogtreecommitdiffstats
path: root/java/android_resources.go
diff options
context:
space:
mode:
authorAnton Hansson <hansson@google.com>2019-03-18 15:53:16 +0000
committerAnton Hansson <hansson@google.com>2019-03-21 11:25:46 +0000
commit53c88448fd2497023cd6403a7aa72a3f763f3e3a (patch)
tree1300b4096f4c20ba8ac4f67a9dd60554882ff739 /java/android_resources.go
parent21c81326ff4ee6420e73077ce0f05e3cf5565e29 (diff)
downloadandroid_build_soong-53c88448fd2497023cd6403a7aa72a3f763f3e3a.tar.gz
android_build_soong-53c88448fd2497023cd6403a7aa72a3f763f3e3a.tar.bz2
android_build_soong-53c88448fd2497023cd6403a7aa72a3f763f3e3a.zip
Separate device and product overlays
This change adds book-keeping of whether an overlay came from DEVICE_PACKAGE_OVERLAYS or PRODUCT_PACKAGE_OVERLAYS. This is later used when writing the output to soong_app_prebuilt.mk, to use either LOCAL_SOONG_[DEVICE|PRODUCT]_RRO_PACKAGES depending on the original source. This change is intended to be a noop on its own, but allows a follow-up make change to customize the location of the auto-generated RRO packages. Bug: 127758779 Test: verify noop on presubmit targets Change-Id: Ib24fe1d05be132c360dd6966f7c83968c9939f77
Diffstat (limited to 'java/android_resources.go')
-rw-r--r--java/android_resources.go64
1 files changed, 41 insertions, 23 deletions
diff --git a/java/android_resources.go b/java/android_resources.go
index 44cb709e..c2bc746a 100644
--- a/java/android_resources.go
+++ b/java/android_resources.go
@@ -41,9 +41,22 @@ func androidResourceGlob(ctx android.ModuleContext, dir android.Path) android.Pa
return ctx.GlobFiles(filepath.Join(dir.String(), "**/*"), androidResourceIgnoreFilenames)
}
+type overlayType int
+
+const (
+ device overlayType = iota + 1
+ product
+)
+
+type rroDir struct {
+ path android.Path
+ overlayType overlayType
+}
+
type overlayGlobResult struct {
- dir string
- paths android.DirectorySortedPaths
+ dir string
+ paths android.DirectorySortedPaths
+ overlayType overlayType
}
var overlayDataKey = android.NewOnceKey("overlayDataKey")
@@ -54,7 +67,7 @@ type globbedResourceDir struct {
}
func overlayResourceGlob(ctx android.ModuleContext, dir android.Path) (res []globbedResourceDir,
- rroDirs android.Paths) {
+ rroDirs []rroDir) {
overlayData := ctx.Config().Get(overlayDataKey).([]overlayGlobResult)
@@ -70,7 +83,7 @@ func overlayResourceGlob(ctx android.ModuleContext, dir android.Path) (res []glo
// exclusion list, ignore the overlay. The list of ignored overlays will be
// passed to Make to be turned into an RRO package.
if rroEnabled && !ctx.Config().EnforceRROExcludedOverlay(overlayModuleDir.String()) {
- rroDirs = append(rroDirs, overlayModuleDir)
+ rroDirs = append(rroDirs, rroDir{overlayModuleDir, data.overlayType})
} else {
res = append(res, globbedResourceDir{
dir: overlayModuleDir,
@@ -91,29 +104,34 @@ type overlaySingleton struct{}
func (overlaySingleton) GenerateBuildActions(ctx android.SingletonContext) {
var overlayData []overlayGlobResult
- overlayDirs := ctx.Config().ResourceOverlays()
- for i := range overlayDirs {
- // Iterate backwards through the list of overlay directories so that the later, lower-priority
- // directories in the list show up earlier in the command line to aapt2.
- overlay := overlayDirs[len(overlayDirs)-1-i]
- var result overlayGlobResult
- result.dir = overlay
-
- files, err := ctx.GlobWithDeps(filepath.Join(overlay, "**/*"), androidResourceIgnoreFilenames)
- if err != nil {
- ctx.Errorf("failed to glob resource dir %q: %s", overlay, err.Error())
- continue
- }
- var paths android.Paths
- for _, f := range files {
- if !strings.HasSuffix(f, "/") {
- paths = append(paths, android.PathForSource(ctx, f))
+
+ appendOverlayData := func(overlayDirs []string, t overlayType) {
+ for i := range overlayDirs {
+ // Iterate backwards through the list of overlay directories so that the later, lower-priority
+ // directories in the list show up earlier in the command line to aapt2.
+ overlay := overlayDirs[len(overlayDirs)-1-i]
+ var result overlayGlobResult
+ result.dir = overlay
+ result.overlayType = t
+
+ files, err := ctx.GlobWithDeps(filepath.Join(overlay, "**/*"), androidResourceIgnoreFilenames)
+ if err != nil {
+ ctx.Errorf("failed to glob resource dir %q: %s", overlay, err.Error())
+ continue
+ }
+ var paths android.Paths
+ for _, f := range files {
+ if !strings.HasSuffix(f, "/") {
+ paths = append(paths, android.PathForSource(ctx, f))
+ }
}
+ result.paths = android.PathsToDirectorySortedPaths(paths)
+ overlayData = append(overlayData, result)
}
- result.paths = android.PathsToDirectorySortedPaths(paths)
- overlayData = append(overlayData, result)
}
+ appendOverlayData(ctx.Config().DeviceResourceOverlays(), device)
+ appendOverlayData(ctx.Config().ProductResourceOverlays(), product)
ctx.Config().Once(overlayDataKey, func() interface{} {
return overlayData
})