diff options
Diffstat (limited to 'android')
| -rw-r--r-- | android/androidmk.go | 4 | ||||
| -rw-r--r-- | android/apex.go | 20 | ||||
| -rw-r--r-- | android/bazel.go | 80 | ||||
| -rw-r--r-- | android/bazel_paths.go | 17 | ||||
| -rw-r--r-- | android/config.go | 4 | ||||
| -rw-r--r-- | android/module.go | 58 | ||||
| -rw-r--r-- | android/mutator.go | 7 | ||||
| -rw-r--r-- | android/proto.go | 61 | ||||
| -rw-r--r-- | android/variable.go | 2 |
9 files changed, 168 insertions, 85 deletions
diff --git a/android/androidmk.go b/android/androidmk.go index 0adc2a6eb..1f03aa812 100644 --- a/android/androidmk.go +++ b/android/androidmk.go @@ -887,6 +887,10 @@ func translateAndroidMkEntriesModule(ctx SingletonContext, w io.Writer, mod blue return nil } +func ShouldSkipAndroidMkProcessing(module Module) bool { + return shouldSkipAndroidMkProcessing(module.base()) +} + func shouldSkipAndroidMkProcessing(module *ModuleBase) bool { if !module.commonProperties.NamespaceExportedToMake { // TODO(jeffrygaston) do we want to validate that there are no modules being diff --git a/android/apex.go b/android/apex.go index 461faf760..cf1bcfef4 100644 --- a/android/apex.go +++ b/android/apex.go @@ -908,16 +908,18 @@ var minSdkVersionAllowlist = func(apiMap map[string]int) map[string]ApiLevel { // // Return true if the `to` module should be visited, false otherwise. type PayloadDepsCallback func(ctx ModuleContext, from blueprint.Module, to ApexModule, externalDep bool) bool +type WalkPayloadDepsFunc func(ctx ModuleContext, do PayloadDepsCallback) -// UpdatableModule represents updatable APEX/APK -type UpdatableModule interface { +// ModuleWithMinSdkVersionCheck represents a module that implements min_sdk_version checks +type ModuleWithMinSdkVersionCheck interface { Module - WalkPayloadDeps(ctx ModuleContext, do PayloadDepsCallback) + MinSdkVersion(ctx EarlyModuleContext) SdkSpec + CheckMinSdkVersion(ctx ModuleContext) } // CheckMinSdkVersion checks if every dependency of an updatable module sets min_sdk_version // accordingly -func CheckMinSdkVersion(m UpdatableModule, ctx ModuleContext, minSdkVersion ApiLevel) { +func CheckMinSdkVersion(ctx ModuleContext, minSdkVersion ApiLevel, walk WalkPayloadDepsFunc) { // do not enforce min_sdk_version for host if ctx.Host() { return @@ -933,7 +935,7 @@ func CheckMinSdkVersion(m UpdatableModule, ctx ModuleContext, minSdkVersion ApiL return } - m.WalkPayloadDeps(ctx, func(ctx ModuleContext, from blueprint.Module, to ApexModule, externalDep bool) bool { + walk(ctx, func(ctx ModuleContext, from blueprint.Module, to ApexModule, externalDep bool) bool { if externalDep { // external deps are outside the payload boundary, which is "stable" // interface. We don't have to check min_sdk_version for external @@ -943,6 +945,14 @@ func CheckMinSdkVersion(m UpdatableModule, ctx ModuleContext, minSdkVersion ApiL if am, ok := from.(DepIsInSameApex); ok && !am.DepIsInSameApex(ctx, to) { return false } + if m, ok := to.(ModuleWithMinSdkVersionCheck); ok { + // This dependency performs its own min_sdk_version check, just make sure it sets min_sdk_version + // to trigger the check. + if !m.MinSdkVersion(ctx).Specified() { + ctx.OtherModuleErrorf(m, "must set min_sdk_version") + } + return false + } if err := to.ShouldSupportSdkVersion(ctx, minSdkVersion); err != nil { toName := ctx.OtherModuleName(to) if ver, ok := minSdkVersionAllowlist[toName]; !ok || ver.GreaterThan(minSdkVersion) { diff --git a/android/bazel.go b/android/bazel.go index 40c971f17..169f6ba29 100644 --- a/android/bazel.go +++ b/android/bazel.go @@ -226,13 +226,50 @@ var ( // Configure modules in these directories to enable bp2build_available: true or false by default. bp2buildDefaultConfig = Bp2BuildConfig{ - "art/libdexfile": Bp2BuildDefaultTrueRecursively, - "bionic": Bp2BuildDefaultTrueRecursively, + "art/libdexfile": Bp2BuildDefaultTrueRecursively, + "bionic": Bp2BuildDefaultTrueRecursively, + "bootable/recovery/tools/recovery_l10n": Bp2BuildDefaultTrue, "build/bazel/examples/soong_config_variables": Bp2BuildDefaultTrueRecursively, "build/bazel/examples/apex/minimal": Bp2BuildDefaultTrueRecursively, "build/soong": Bp2BuildDefaultTrue, "build/soong/cc/libbuildversion": Bp2BuildDefaultTrue, // Skip tests subdir + "build/soong/cc/ndkstubgen": Bp2BuildDefaultTrue, + "build/soong/cc/symbolfile": Bp2BuildDefaultTrue, "cts/common/device-side/nativetesthelper/jni": Bp2BuildDefaultTrueRecursively, + "development/apps/DevelopmentSettings": Bp2BuildDefaultTrue, + "development/apps/Fallback": Bp2BuildDefaultTrue, + "development/apps/WidgetPreview": Bp2BuildDefaultTrue, + "development/samples/BasicGLSurfaceView": Bp2BuildDefaultTrue, + "development/samples/BluetoothChat": Bp2BuildDefaultTrue, + "development/samples/BrokenKeyDerivation": Bp2BuildDefaultTrue, + "development/samples/Compass": Bp2BuildDefaultTrue, + "development/samples/ContactManager": Bp2BuildDefaultTrue, + "development/samples/FixedGridLayout": Bp2BuildDefaultTrue, + "development/samples/HelloEffects": Bp2BuildDefaultTrue, + "development/samples/Home": Bp2BuildDefaultTrue, + "development/samples/HoneycombGallery": Bp2BuildDefaultTrue, + "development/samples/JetBoy": Bp2BuildDefaultTrue, + "development/samples/KeyChainDemo": Bp2BuildDefaultTrue, + "development/samples/LceDemo": Bp2BuildDefaultTrue, + "development/samples/LunarLander": Bp2BuildDefaultTrue, + "development/samples/MultiResolution": Bp2BuildDefaultTrue, + "development/samples/MultiWindow": Bp2BuildDefaultTrue, + "development/samples/NotePad": Bp2BuildDefaultTrue, + "development/samples/Obb": Bp2BuildDefaultTrue, + "development/samples/RSSReader": Bp2BuildDefaultTrue, + "development/samples/ReceiveShareDemo": Bp2BuildDefaultTrue, + "development/samples/SearchableDictionary": Bp2BuildDefaultTrue, + "development/samples/SipDemo": Bp2BuildDefaultTrue, + "development/samples/SkeletonApp": Bp2BuildDefaultTrue, + "development/samples/Snake": Bp2BuildDefaultTrue, + "development/samples/SpellChecker/": Bp2BuildDefaultTrueRecursively, + "development/samples/ThemedNavBarKeyboard": Bp2BuildDefaultTrue, + "development/samples/ToyVpn": Bp2BuildDefaultTrue, + "development/samples/TtsEngine": Bp2BuildDefaultTrue, + "development/samples/USB/AdbTest": Bp2BuildDefaultTrue, + "development/samples/USB/MissileLauncher": Bp2BuildDefaultTrue, + "development/samples/VoiceRecognitionService": Bp2BuildDefaultTrue, + "development/samples/VoicemailProviderDemo": Bp2BuildDefaultTrue, "development/sdk": Bp2BuildDefaultTrueRecursively, "external/arm-optimized-routines": Bp2BuildDefaultTrueRecursively, "external/boringssl": Bp2BuildDefaultTrueRecursively, @@ -259,9 +296,19 @@ var ( "external/selinux/libselinux": Bp2BuildDefaultTrueRecursively, "external/zlib": Bp2BuildDefaultTrueRecursively, "external/zstd": Bp2BuildDefaultTrueRecursively, + "frameworks/base/media/tests/MediaDump": Bp2BuildDefaultTrue, + "frameworks/base/startop/apps/test": Bp2BuildDefaultTrue, "frameworks/native/libs/adbd_auth": Bp2BuildDefaultTrueRecursively, + "frameworks/native/opengl/tests/gl2_cameraeye": Bp2BuildDefaultTrue, + "frameworks/native/opengl/tests/gl2_java": Bp2BuildDefaultTrue, + "frameworks/native/opengl/tests/testLatency": Bp2BuildDefaultTrue, + "frameworks/native/opengl/tests/testPauseResume": Bp2BuildDefaultTrue, + "frameworks/native/opengl/tests/testViewport": Bp2BuildDefaultTrue, "frameworks/proto_logging/stats/stats_log_api_gen": Bp2BuildDefaultTrueRecursively, "libnativehelper": Bp2BuildDefaultTrueRecursively, + "packages/apps/DevCamera": Bp2BuildDefaultTrue, + "packages/apps/HTMLViewer": Bp2BuildDefaultTrue, + "packages/apps/Protips": Bp2BuildDefaultTrue, "packages/modules/adb": Bp2BuildDefaultTrue, "packages/modules/adb/crypto": Bp2BuildDefaultTrueRecursively, "packages/modules/adb/libs": Bp2BuildDefaultTrueRecursively, @@ -269,6 +316,9 @@ var ( "packages/modules/adb/pairing_connection": Bp2BuildDefaultTrueRecursively, "packages/modules/adb/proto": Bp2BuildDefaultTrueRecursively, "packages/modules/adb/tls": Bp2BuildDefaultTrueRecursively, + "packages/providers/MediaProvider/tools/dialogs": Bp2BuildDefaultTrue, + "packages/screensavers/Basic": Bp2BuildDefaultTrue, + "packages/services/Car/tests/SampleRearViewCamera": Bp2BuildDefaultTrue, "prebuilts/clang/host/linux-x86": Bp2BuildDefaultTrueRecursively, "system/apex": Bp2BuildDefaultFalse, // TODO(b/207466993): flaky failures "system/core/debuggerd": Bp2BuildDefaultTrue, @@ -336,9 +386,8 @@ var ( "host_bionic_linker_asm", // depends on extract_linker, a go binary. "host_bionic_linker_script", // depends on extract_linker, a go binary. - "pbtombstone", // depends on libprotobuf-cpp-lite, libtombstone_proto - "crash_dump", // depends on unconverted module libprotobuf-cpp-lite - "libprotobuf-cpp-full", "libprotobuf-cpp-lite", // Unsupported product&vendor suffix. b/204811222 and b/204810610. + "pbtombstone", // depends on libprotobuf-cpp-lite, libtombstone_proto + "crash_dump", // depends on unconverted module libprotobuf-cpp-lite "libunwindstack_local", "libunwindstack_utils", // depends on unconverted module libunwindstack "libunwindstack", // depends on libdexfile_support, of unsupported module type art_cc_library_static @@ -373,19 +422,10 @@ var ( // APEX support "com.android.runtime", // http://b/194746715, apex, depends on 'libc_malloc_debug' - "libadb_crypto", // Depends on libadb_protos - "libadb_crypto_static", // Depends on libadb_protos_static - "libadb_pairing_connection", // Depends on libadb_protos - "libadb_pairing_connection_static", // Depends on libadb_protos_static - "libadb_pairing_server", // Depends on libadb_protos - "libadb_pairing_server_static", // Depends on libadb_protos_static - "libadbd", // Depends on libadbd_core - "libadbd_core", // Depends on libadb_protos - "libadbd_services", // Depends on libadb_protos + "libadbd_core", // http://b/208481704: requijres use_version_lib + "libadbd_services", // http://b/208481704: requires use_version_lib - "libadb_protos_static", // b/200601772: Requires cc_library proto support - "libadb_protos", // b/200601772: Requires cc_library proto support - "libapp_processes_protos_lite", // b/200601772: Requires cc_library proto support + "libadbd", // depends on unconverted modules: libadbd_core, libadbd_services "libgtest_ndk_c++", // b/201816222: Requires sdk_version support. "libgtest_main_ndk_c++", // b/201816222: Requires sdk_version support. @@ -401,6 +441,7 @@ var ( "mdnsd", // http://b/202876379 has arch-variant static_executable "acvp_modulewrapper", // disabled for android x86/x86_64 + "CarHTMLViewer", // depends on unconverted modules android.car-stubs, car-ui-lib } // Per-module denylist of cc_library modules to only generate the static @@ -418,6 +459,11 @@ var ( "cap_names.h", // TODO(b/204913827) runfiles need to be handled in mixed builds "libcap", // TODO(b/204913827) runfiles need to be handled in mixed builds "libprotobuf-cpp-full", "libprotobuf-cpp-lite", // Unsupported product&vendor suffix. b/204811222 and b/204810610. + + // Depends on libprotobuf-cpp-* + "libadb_pairing_connection", + "libadb_pairing_connection_static", + "libadb_pairing_server", "libadb_pairing_server_static", } // Used for quicker lookups diff --git a/android/bazel_paths.go b/android/bazel_paths.go index 729c73c8f..62e6156a4 100644 --- a/android/bazel_paths.go +++ b/android/bazel_paths.go @@ -279,6 +279,16 @@ func transformSubpackagePaths(ctx BazelConversionPathContext, paths bazel.LabelL return newPaths } +// Converts root-relative Paths to a list of bazel.Label relative to the module in ctx. +func RootToModuleRelativePaths(ctx BazelConversionPathContext, paths Paths) []bazel.Label { + var newPaths []bazel.Label + for _, path := range PathsWithModuleSrcSubDir(ctx, paths, "") { + s := path.Rel() + newPaths = append(newPaths, bazel.Label{Label: s}) + } + return newPaths +} + // expandSrcsForBazel returns bazel.LabelList with paths rooted from the module's local source // directory and Bazel target labels, excluding those included in the excludes argument (which // should already be expanded to resolve references to Soong-modules). Valid elements of paths @@ -328,12 +338,7 @@ func expandSrcsForBazel(ctx BazelConversionPathContext, paths, expandedExcludes // e.g. turn "math/*.c" in // external/arm-optimized-routines to external/arm-optimized-routines/math/*.c rootRelativeGlobPath := pathForModuleSrc(ctx, p).String() - globbedPaths := GlobFiles(ctx, rootRelativeGlobPath, rootRelativeExpandedExcludes) - globbedPaths = PathsWithModuleSrcSubDir(ctx, globbedPaths, "") - for _, path := range globbedPaths { - s := path.Rel() - expandedPaths = append(expandedPaths, bazel.Label{Label: s}) - } + expandedPaths = RootToModuleRelativePaths(ctx, GlobFiles(ctx, rootRelativeGlobPath, rootRelativeExpandedExcludes)) } else { if !InList(p, expandedExcludes) { expandedPaths = append(expandedPaths, bazel.Label{Label: p}) diff --git a/android/config.go b/android/config.go index ddad1f532..8e01e186b 100644 --- a/android/config.go +++ b/android/config.go @@ -1194,10 +1194,6 @@ func (c *deviceConfig) DeviceKernelHeaderDirs() []string { return c.config.productVariables.DeviceKernelHeaders } -func (c *deviceConfig) SamplingPGO() bool { - return Bool(c.config.productVariables.SamplingPGO) -} - // JavaCoverageEnabledForPath returns whether Java code coverage is enabled for // path. Coverage is enabled by default when the product variable // JavaCoveragePaths is empty. If JavaCoveragePaths is not empty, coverage is diff --git a/android/module.go b/android/module.go index b500f01c6..c2cb6179a 100644 --- a/android/module.go +++ b/android/module.go @@ -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 diff --git a/android/mutator.go b/android/mutator.go index 0a9351745..bf1cf806e 100644 --- a/android/mutator.go +++ b/android/mutator.go @@ -221,6 +221,13 @@ var bp2buildMutators = map[string]RegisterMutatorFunc{} // See http://b/192523357 var bp2buildLock sync.Mutex +// A minimal context for Bp2build conversion +type Bp2buildMutatorContext interface { + BazelConversionPathContext + + CreateBazelTargetModule(bazel.BazelTargetModuleProperties, CommonAttributes, interface{}) +} + // RegisterBp2BuildMutator registers specially crafted mutators for // converting Blueprint/Android modules into special modules that can // be code-generated into Bazel BUILD targets. diff --git a/android/proto.go b/android/proto.go index 0be7893c8..64d4d057c 100644 --- a/android/proto.go +++ b/android/proto.go @@ -15,12 +15,17 @@ package android import ( + "android/soong/bazel" "strings" "github.com/google/blueprint" "github.com/google/blueprint/proptools" ) +const ( + canonicalPathFromRootDefault = true +) + // TODO(ccross): protos are often used to communicate between multiple modules. If the only // way to convert a proto to source is to reference it as a source file, and external modules cannot // reference source files in other modules, then every module that owns a proto file will need to @@ -90,7 +95,7 @@ func GetProtoFlags(ctx ModuleContext, p *ProtoProperties) ProtoFlags { Flags: flags, Deps: deps, OutTypeFlag: protoOutFlag, - CanonicalPathFromRoot: proptools.BoolDefault(p.Proto.Canonical_path_from_root, true), + CanonicalPathFromRoot: proptools.BoolDefault(p.Proto.Canonical_path_from_root, canonicalPathFromRootDefault), Dir: PathForModuleGen(ctx, "proto"), SubDir: PathForModuleGen(ctx, "proto", ctx.ModuleDir()), } @@ -146,3 +151,57 @@ func ProtoRule(rule *RuleBuilder, protoFile Path, flags ProtoFlags, deps Paths, rule.Command(). BuiltTool("dep_fixer").Flag(depFile.String()) } + +// Bp2buildProtoInfo contains information necessary to pass on to language specific conversion. +type Bp2buildProtoInfo struct { + Type *string + Name string +} + +type protoAttrs struct { + Srcs bazel.LabelListAttribute + Strip_import_prefix *string +} + +// Bp2buildProtoProperties converts proto properties, creating a proto_library and returning the +// information necessary for language-specific handling. +func Bp2buildProtoProperties(ctx Bp2buildMutatorContext, module Module, srcs bazel.LabelListAttribute) (Bp2buildProtoInfo, bool) { + var info Bp2buildProtoInfo + if srcs.IsEmpty() { + return info, false + } + m := module.base() + + info.Name = m.Name() + "_proto" + attrs := protoAttrs{ + Srcs: srcs, + } + + for axis, configToProps := range m.GetArchVariantProperties(ctx, &ProtoProperties{}) { + for _, rawProps := range configToProps { + var props *ProtoProperties + var ok bool + if props, ok = rawProps.(*ProtoProperties); !ok { + ctx.ModuleErrorf("Could not cast ProtoProperties to expected type") + } + if axis == bazel.NoConfigAxis { + info.Type = props.Proto.Type + + if proptools.BoolDefault(props.Proto.Canonical_path_from_root, canonicalPathFromRootDefault) { + // an empty string indicates to strips the package path + path := "" + attrs.Strip_import_prefix = &path + } + } else if props.Proto.Type != info.Type && props.Proto.Type != nil { + ctx.ModuleErrorf("Cannot handle arch-variant types for protos at this time.") + } + } + } + + ctx.CreateBazelTargetModule( + bazel.BazelTargetModuleProperties{Rule_class: "proto_library"}, + CommonAttributes{Name: info.Name}, + &attrs) + + return info, true +} diff --git a/android/variable.go b/android/variable.go index a29c6f86a..158d26453 100644 --- a/android/variable.go +++ b/android/variable.go @@ -299,8 +299,6 @@ type productVariables struct { ClangTidy *bool `json:",omitempty"` TidyChecks *string `json:",omitempty"` - SamplingPGO *bool `json:",omitempty"` - JavaCoveragePaths []string `json:",omitempty"` JavaCoverageExcludePaths []string `json:",omitempty"` |