diff options
author | Anton Hansson <hansson@google.com> | 2019-03-18 15:53:16 +0000 |
---|---|---|
committer | Anton Hansson <hansson@google.com> | 2019-03-21 11:25:46 +0000 |
commit | 53c88448fd2497023cd6403a7aa72a3f763f3e3a (patch) | |
tree | 1300b4096f4c20ba8ac4f67a9dd60554882ff739 /java/android_resources.go | |
parent | 21c81326ff4ee6420e73077ce0f05e3cf5565e29 (diff) | |
download | android_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.go | 64 |
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 }) |