Loading android/defs.go +6 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ import ( "testing" "github.com/google/blueprint" _ "github.com/google/blueprint/bootstrap" "github.com/google/blueprint/bootstrap" "github.com/google/blueprint/proptools" ) Loading Loading @@ -200,3 +200,8 @@ func ContentFromFileRuleForTests(t *testing.T, params TestingBuildParams) string return content } // GlobToListFileRule creates a rule that writes a list of files matching a pattern to a file. func GlobToListFileRule(ctx ModuleContext, pattern string, excludes []string, file WritablePath) { bootstrap.GlobFile(ctx.blueprintModuleContext(), pattern, excludes, file.String()) } android/module.go +6 −0 Original line number Diff line number Diff line Loading @@ -331,6 +331,8 @@ type BaseContext interface { type ModuleContext interface { BaseModuleContext blueprintModuleContext() blueprint.ModuleContext // Deprecated: use ModuleContext.Build instead. ModuleBuild(pctx PackageContext, params ModuleBuildParams) Loading Loading @@ -2596,6 +2598,10 @@ func (m *moduleContext) CheckbuildFile(srcPath Path) { m.checkbuildFiles = append(m.checkbuildFiles, srcPath) } func (m *moduleContext) blueprintModuleContext() blueprint.ModuleContext { return m.bp } // SrcIsModule decodes module references in the format ":name" into the module name, or empty string if the input // was not a module reference. func SrcIsModule(s string) (module string) { Loading java/aar.go +15 −5 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package java import ( "fmt" "path/filepath" "strconv" "strings" "android/soong/android" Loading Loading @@ -192,22 +193,31 @@ func (a *aapt) aapt2Flags(ctx android.ModuleContext, sdkContext sdkContext, rroDirs = append(rroDirs, resRRODirs...) } var assetFiles android.Paths for _, dir := range assetDirs { assetFiles = append(assetFiles, androidResourceGlob(ctx, dir)...) var assetDeps android.Paths for i, dir := range assetDirs { // Add a dependency on every file in the asset directory. This ensures the aapt2 // rule will be rerun if one of the files in the asset directory is modified. assetDeps = append(assetDeps, androidResourceGlob(ctx, dir)...) // Add a dependency on a file that contains a list of all the files in the asset directory. // This ensures the aapt2 rule will be run if a file is removed from the asset directory, // or a file is added whose timestamp is older than the output of aapt2. assetFileListFile := android.PathForModuleOut(ctx, "asset_dir_globs", strconv.Itoa(i)+".glob") androidResourceGlobList(ctx, dir, assetFileListFile) assetDeps = append(assetDeps, assetFileListFile) } assetDirStrings := assetDirs.Strings() if a.noticeFile.Valid() { assetDirStrings = append(assetDirStrings, filepath.Dir(a.noticeFile.Path().String())) assetFiles = append(assetFiles, a.noticeFile.Path()) assetDeps = append(assetDeps, a.noticeFile.Path()) } linkFlags = append(linkFlags, "--manifest "+manifestPath.String()) linkDeps = append(linkDeps, manifestPath) linkFlags = append(linkFlags, android.JoinWithPrefix(assetDirStrings, "-A ")) linkDeps = append(linkDeps, assetFiles...) linkDeps = append(linkDeps, assetDeps...) // SDK version flags minSdkVersion, err := sdkContext.minSdkVersion().effectiveVersionString(ctx) Loading java/android_resources.go +11 −0 Original line number Diff line number Diff line Loading @@ -38,10 +38,21 @@ var androidResourceIgnoreFilenames = []string{ "*~", } // androidResourceGlob returns the list of files in the given directory, using the standard // exclusion patterns for Android resources. func androidResourceGlob(ctx android.ModuleContext, dir android.Path) android.Paths { return ctx.GlobFiles(filepath.Join(dir.String(), "**/*"), androidResourceIgnoreFilenames) } // androidResourceGlobList creates a rule to write the list of files in the given directory, using // the standard exclusion patterns for Android resources, to the given output file. func androidResourceGlobList(ctx android.ModuleContext, dir android.Path, fileListFile android.WritablePath) { android.GlobToListFileRule(ctx, filepath.Join(dir.String(), "**/*"), androidResourceIgnoreFilenames, fileListFile) } type overlayType int const ( Loading Loading
android/defs.go +6 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ import ( "testing" "github.com/google/blueprint" _ "github.com/google/blueprint/bootstrap" "github.com/google/blueprint/bootstrap" "github.com/google/blueprint/proptools" ) Loading Loading @@ -200,3 +200,8 @@ func ContentFromFileRuleForTests(t *testing.T, params TestingBuildParams) string return content } // GlobToListFileRule creates a rule that writes a list of files matching a pattern to a file. func GlobToListFileRule(ctx ModuleContext, pattern string, excludes []string, file WritablePath) { bootstrap.GlobFile(ctx.blueprintModuleContext(), pattern, excludes, file.String()) }
android/module.go +6 −0 Original line number Diff line number Diff line Loading @@ -331,6 +331,8 @@ type BaseContext interface { type ModuleContext interface { BaseModuleContext blueprintModuleContext() blueprint.ModuleContext // Deprecated: use ModuleContext.Build instead. ModuleBuild(pctx PackageContext, params ModuleBuildParams) Loading Loading @@ -2596,6 +2598,10 @@ func (m *moduleContext) CheckbuildFile(srcPath Path) { m.checkbuildFiles = append(m.checkbuildFiles, srcPath) } func (m *moduleContext) blueprintModuleContext() blueprint.ModuleContext { return m.bp } // SrcIsModule decodes module references in the format ":name" into the module name, or empty string if the input // was not a module reference. func SrcIsModule(s string) (module string) { Loading
java/aar.go +15 −5 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package java import ( "fmt" "path/filepath" "strconv" "strings" "android/soong/android" Loading Loading @@ -192,22 +193,31 @@ func (a *aapt) aapt2Flags(ctx android.ModuleContext, sdkContext sdkContext, rroDirs = append(rroDirs, resRRODirs...) } var assetFiles android.Paths for _, dir := range assetDirs { assetFiles = append(assetFiles, androidResourceGlob(ctx, dir)...) var assetDeps android.Paths for i, dir := range assetDirs { // Add a dependency on every file in the asset directory. This ensures the aapt2 // rule will be rerun if one of the files in the asset directory is modified. assetDeps = append(assetDeps, androidResourceGlob(ctx, dir)...) // Add a dependency on a file that contains a list of all the files in the asset directory. // This ensures the aapt2 rule will be run if a file is removed from the asset directory, // or a file is added whose timestamp is older than the output of aapt2. assetFileListFile := android.PathForModuleOut(ctx, "asset_dir_globs", strconv.Itoa(i)+".glob") androidResourceGlobList(ctx, dir, assetFileListFile) assetDeps = append(assetDeps, assetFileListFile) } assetDirStrings := assetDirs.Strings() if a.noticeFile.Valid() { assetDirStrings = append(assetDirStrings, filepath.Dir(a.noticeFile.Path().String())) assetFiles = append(assetFiles, a.noticeFile.Path()) assetDeps = append(assetDeps, a.noticeFile.Path()) } linkFlags = append(linkFlags, "--manifest "+manifestPath.String()) linkDeps = append(linkDeps, manifestPath) linkFlags = append(linkFlags, android.JoinWithPrefix(assetDirStrings, "-A ")) linkDeps = append(linkDeps, assetFiles...) linkDeps = append(linkDeps, assetDeps...) // SDK version flags minSdkVersion, err := sdkContext.minSdkVersion().effectiveVersionString(ctx) Loading
java/android_resources.go +11 −0 Original line number Diff line number Diff line Loading @@ -38,10 +38,21 @@ var androidResourceIgnoreFilenames = []string{ "*~", } // androidResourceGlob returns the list of files in the given directory, using the standard // exclusion patterns for Android resources. func androidResourceGlob(ctx android.ModuleContext, dir android.Path) android.Paths { return ctx.GlobFiles(filepath.Join(dir.String(), "**/*"), androidResourceIgnoreFilenames) } // androidResourceGlobList creates a rule to write the list of files in the given directory, using // the standard exclusion patterns for Android resources, to the given output file. func androidResourceGlobList(ctx android.ModuleContext, dir android.Path, fileListFile android.WritablePath) { android.GlobToListFileRule(ctx, filepath.Join(dir.String(), "**/*"), androidResourceIgnoreFilenames, fileListFile) } type overlayType int const ( Loading