Add (obj|tidy)-*_os, and (obj|tidy)-*_subset targets
* The obj-* targets only call clang or clang++ to compile C/C++ files, like the tidy-* targets only call clang-tidy. * Add (obj|tidy)-dir_os and module_os-(obj|tidy) phony targets to include only targets of the specified OS. * Add (obj|tidy)-dir_os_subset and module_os_subset-(obj|tidy) phony targets to include only a subset of that OS target group. * Most clang-tidy runs produce the same warnings for all variants of an OS. The *_subset targets reduce runs over multiple variants. * The obj-*subset targets are useful for a quick test to compile at least one variant of every C/C++ file for each OS. * The (obj|tidy)-soong phony target is changed to include only (obj|tidy)-top_level_directory targets instead of ALL module-(obj|tidy) targets in all subdirectories. * For aosp_arm64-eng make tidy-* targets; count NINJA commands: tidy-soong 381K tidy-soong_subset 106K tidy-soong_android 294K tidy-soong_android_subset 73K tidy-soong_linux_glibc 84K tidy-soong_windows 12K tidy-bionic 12K tidy-bionic_subset 2.4K tidy-bionic_android 11.5K tidy-bionic_android_subset 2.1K tidy-bionic_linux_glibc 1K tidy-device_android 7K tidy-device_android_subset 5K tidy-hardware_android 3K tidy-hardware_android_subset 9K libfec_rs-tidy 33 libfec_rs_subset-tidy 9 libfec_rs_android-tidy 18 libfec_rs_android_subset-tidy 3 * For aosp_arm64-eng make obj-* targets; count NINJA commands: obj-soong 399K obj-soong_subset 112K obj-soong_android 305K obj-soong_android_subset 75K obj-soong_linux_glibc 90K obj-soong_linux_glibc_subset 38K obj-soong_windows 12K obj-bionic 15K obj-bionic_subset 3K obj-bionic_android 14K obj-bionic_android_subset 2.3K obj-bionic_linux_glibc 1.3K obj-system-core 6K obj-system-core_subset 3K obj-frameworks-base 16K obj-frameworks-base_subset 6K libfec_rs-obj 33 libfec_rs_subset-obj 9 libfec_rs_android-obj 18 libfec_rs_android_subset-obj 3 Test: NINJA_ARGS="-n" WITH_TIDY=1 make some_obj_tidy_target; compare output commands from various phony targets Bug: 199169329 Bug: 202769240 Change-Id: I186c45dc07c5884888c1063dfc09cf212ffb0ebf
This commit is contained in:
@@ -419,7 +419,6 @@ type ModuleContext interface {
|
||||
PackageFile(installPath InstallPath, name string, srcPath Path) PackagingSpec
|
||||
|
||||
CheckbuildFile(srcPath Path)
|
||||
TidyFile(srcPath WritablePath)
|
||||
|
||||
InstallInData() bool
|
||||
InstallInTestcases() bool
|
||||
@@ -1200,7 +1199,6 @@ type ModuleBase struct {
|
||||
installFiles InstallPaths
|
||||
installFilesDepSet *installPathsDepSet
|
||||
checkbuildFiles Paths
|
||||
tidyFiles WritablePaths
|
||||
packagingSpecs []PackagingSpec
|
||||
packagingSpecsDepSet *packagingSpecsDepSet
|
||||
noticeFiles Paths
|
||||
@@ -1216,7 +1214,6 @@ type ModuleBase struct {
|
||||
// Only set on the final variant of each module
|
||||
installTarget WritablePath
|
||||
checkbuildTarget WritablePath
|
||||
tidyTarget WritablePath
|
||||
blueprintDir string
|
||||
|
||||
hooks hooks
|
||||
@@ -1779,17 +1776,15 @@ func (m *ModuleBase) VintfFragments() Paths {
|
||||
func (m *ModuleBase) generateModuleTarget(ctx ModuleContext) {
|
||||
var allInstalledFiles InstallPaths
|
||||
var allCheckbuildFiles Paths
|
||||
var allTidyFiles WritablePaths
|
||||
ctx.VisitAllModuleVariants(func(module Module) {
|
||||
a := module.base()
|
||||
allInstalledFiles = append(allInstalledFiles, a.installFiles...)
|
||||
// A module's -{checkbuild,tidy} phony targets should
|
||||
// A module's -checkbuild phony targets should
|
||||
// not be created if the module is not exported to make.
|
||||
// Those could depend on the build target and fail to compile
|
||||
// for the current build target.
|
||||
if !ctx.Config().KatiEnabled() || !shouldSkipAndroidMkProcessing(a) {
|
||||
allCheckbuildFiles = append(allCheckbuildFiles, a.checkbuildFiles...)
|
||||
allTidyFiles = append(allTidyFiles, a.tidyFiles...)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -1814,13 +1809,6 @@ func (m *ModuleBase) generateModuleTarget(ctx ModuleContext) {
|
||||
deps = append(deps, m.checkbuildTarget)
|
||||
}
|
||||
|
||||
if len(allTidyFiles) > 0 {
|
||||
name := namespacePrefix + ctx.ModuleName() + "-tidy"
|
||||
ctx.Phony(name, allTidyFiles.Paths()...)
|
||||
m.tidyTarget = PathForPhony(ctx, name)
|
||||
deps = append(deps, m.tidyTarget)
|
||||
}
|
||||
|
||||
if len(deps) > 0 {
|
||||
suffix := ""
|
||||
if ctx.Config().KatiEnabled() {
|
||||
@@ -2029,7 +2017,6 @@ func (m *ModuleBase) GenerateBuildActions(blueprintCtx blueprint.ModuleContext)
|
||||
|
||||
m.installFiles = append(m.installFiles, ctx.installFiles...)
|
||||
m.checkbuildFiles = append(m.checkbuildFiles, ctx.checkbuildFiles...)
|
||||
m.tidyFiles = append(m.tidyFiles, ctx.tidyFiles...)
|
||||
m.packagingSpecs = append(m.packagingSpecs, ctx.packagingSpecs...)
|
||||
m.katiInstalls = append(m.katiInstalls, ctx.katiInstalls...)
|
||||
m.katiSymlinks = append(m.katiSymlinks, ctx.katiSymlinks...)
|
||||
@@ -2227,7 +2214,6 @@ type moduleContext struct {
|
||||
packagingSpecs []PackagingSpec
|
||||
installFiles InstallPaths
|
||||
checkbuildFiles Paths
|
||||
tidyFiles WritablePaths
|
||||
module Module
|
||||
phonies map[string]Paths
|
||||
|
||||
@@ -3065,10 +3051,6 @@ func (m *moduleContext) CheckbuildFile(srcPath Path) {
|
||||
m.checkbuildFiles = append(m.checkbuildFiles, srcPath)
|
||||
}
|
||||
|
||||
func (m *moduleContext) TidyFile(srcPath WritablePath) {
|
||||
m.tidyFiles = append(m.tidyFiles, srcPath)
|
||||
}
|
||||
|
||||
func (m *moduleContext) blueprintModuleContext() blueprint.ModuleContext {
|
||||
return m.bp
|
||||
}
|
||||
@@ -3327,9 +3309,10 @@ func parentDir(dir string) string {
|
||||
|
||||
type buildTargetSingleton struct{}
|
||||
|
||||
func addAncestors(ctx SingletonContext, dirMap map[string]Paths, mmName func(string) string) []string {
|
||||
func AddAncestors(ctx SingletonContext, dirMap map[string]Paths, mmName func(string) string) ([]string, []string) {
|
||||
// Ensure ancestor directories are in dirMap
|
||||
// Make directories build their direct subdirectories
|
||||
// Returns a slice of all directories and a slice of top-level directories.
|
||||
dirs := SortedStringKeys(dirMap)
|
||||
for _, dir := range dirs {
|
||||
dir := parentDir(dir)
|
||||
@@ -3342,34 +3325,31 @@ func addAncestors(ctx SingletonContext, dirMap map[string]Paths, mmName func(str
|
||||
}
|
||||
}
|
||||
dirs = SortedStringKeys(dirMap)
|
||||
var topDirs []string
|
||||
for _, dir := range dirs {
|
||||
p := parentDir(dir)
|
||||
if p != "." && p != "/" {
|
||||
dirMap[p] = append(dirMap[p], PathForPhony(ctx, mmName(dir)))
|
||||
} else if dir != "." && dir != "/" && dir != "" {
|
||||
topDirs = append(topDirs, dir)
|
||||
}
|
||||
}
|
||||
return SortedStringKeys(dirMap)
|
||||
return SortedStringKeys(dirMap), topDirs
|
||||
}
|
||||
|
||||
func (c *buildTargetSingleton) GenerateBuildActions(ctx SingletonContext) {
|
||||
var checkbuildDeps Paths
|
||||
var tidyDeps Paths
|
||||
|
||||
mmTarget := func(dir string) string {
|
||||
return "MODULES-IN-" + strings.Replace(filepath.Clean(dir), "/", "-", -1)
|
||||
}
|
||||
mmTidyTarget := func(dir string) string {
|
||||
return "tidy-" + strings.Replace(filepath.Clean(dir), "/", "-", -1)
|
||||
}
|
||||
|
||||
modulesInDir := make(map[string]Paths)
|
||||
tidyModulesInDir := make(map[string]Paths)
|
||||
|
||||
ctx.VisitAllModules(func(module Module) {
|
||||
blueprintDir := module.base().blueprintDir
|
||||
installTarget := module.base().installTarget
|
||||
checkbuildTarget := module.base().checkbuildTarget
|
||||
tidyTarget := module.base().tidyTarget
|
||||
|
||||
if checkbuildTarget != nil {
|
||||
checkbuildDeps = append(checkbuildDeps, checkbuildTarget)
|
||||
@@ -3379,16 +3359,6 @@ func (c *buildTargetSingleton) GenerateBuildActions(ctx SingletonContext) {
|
||||
if installTarget != nil {
|
||||
modulesInDir[blueprintDir] = append(modulesInDir[blueprintDir], installTarget)
|
||||
}
|
||||
|
||||
if tidyTarget != nil {
|
||||
tidyDeps = append(tidyDeps, tidyTarget)
|
||||
// tidyTarget is in modulesInDir so it will be built with "mm".
|
||||
modulesInDir[blueprintDir] = append(modulesInDir[blueprintDir], tidyTarget)
|
||||
// tidyModulesInDir contains tidyTarget but not checkbuildTarget
|
||||
// or installTarget, so tidy targets in a directory can be built
|
||||
// without other checkbuild or install targets.
|
||||
tidyModulesInDir[blueprintDir] = append(tidyModulesInDir[blueprintDir], tidyTarget)
|
||||
}
|
||||
})
|
||||
|
||||
suffix := ""
|
||||
@@ -3399,24 +3369,12 @@ func (c *buildTargetSingleton) GenerateBuildActions(ctx SingletonContext) {
|
||||
// Create a top-level checkbuild target that depends on all modules
|
||||
ctx.Phony("checkbuild"+suffix, checkbuildDeps...)
|
||||
|
||||
// Create a top-level tidy target that depends on all modules
|
||||
ctx.Phony("tidy"+suffix, tidyDeps...)
|
||||
|
||||
dirs := addAncestors(ctx, tidyModulesInDir, mmTidyTarget)
|
||||
|
||||
// Kati does not generate tidy-* phony targets yet.
|
||||
// Create a tidy-<directory> target that depends on all subdirectories
|
||||
// and modules in the directory.
|
||||
for _, dir := range dirs {
|
||||
ctx.Phony(mmTidyTarget(dir), tidyModulesInDir[dir]...)
|
||||
}
|
||||
|
||||
// Make will generate the MODULES-IN-* targets
|
||||
if ctx.Config().KatiEnabled() {
|
||||
return
|
||||
}
|
||||
|
||||
dirs = addAncestors(ctx, modulesInDir, mmTarget)
|
||||
dirs, _ := AddAncestors(ctx, modulesInDir, mmTarget)
|
||||
|
||||
// Create a MODULES-IN-<directory> target that depends on all modules in a directory, and
|
||||
// depends on the MODULES-IN-* targets of all of its subdirectories that contain Android.bp
|
||||
|
Reference in New Issue
Block a user