Loading aconfig/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ bootstrap_go_package { "aconfig_values.go", "aconfig_value_set.go", "all_aconfig_declarations.go", "exported_java_aconfig_library.go", "init.go", "testing.go", ], Loading aconfig/exported_java_aconfig_library.go 0 → 100644 +56 −0 Original line number Diff line number Diff line // Copyright 2023 Google Inc. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package aconfig import ( "android/soong/android" ) func ExportedJavaDeclarationsLibraryFactory() android.Singleton { return &exportedJavaDeclarationsLibrarySingleton{} } type exportedJavaDeclarationsLibrarySingleton struct { intermediatePath android.OutputPath } func (this *exportedJavaDeclarationsLibrarySingleton) GenerateBuildActions(ctx android.SingletonContext) { // Find all of the aconfig_declarations modules var cacheFiles android.Paths ctx.VisitAllModules(func(module android.Module) { if !ctx.ModuleHasProvider(module, DeclarationsProviderKey) { return } decl := ctx.ModuleProvider(module, DeclarationsProviderKey).(DeclarationsProviderData) cacheFiles = append(cacheFiles, decl.IntermediateCacheOutputPath) }) // Generate build action for aconfig this.intermediatePath = android.PathForIntermediates(ctx, "exported_java_aconfig_library.jar") ctx.Build(pctx, android.BuildParams{ Rule: exportedJavaRule, Inputs: cacheFiles, Output: this.intermediatePath, Description: "exported_java_aconfig_library", Args: map[string]string{ "cache_files": android.JoinPathsWithPrefix(cacheFiles, " "), }, }) ctx.Phony("exported_java_aconfig_library", this.intermediatePath) } func (this *exportedJavaDeclarationsLibrarySingleton) MakeVars(ctx android.MakeVarsContext) { ctx.DistForGoalWithFilename("sdk", this.intermediatePath, "android-flags.jar") } aconfig/init.go +15 −0 Original line number Diff line number Diff line Loading @@ -67,6 +67,20 @@ var ( Command: `${aconfig} dump --dedup --format protobuf --out $out $flags`, CommandDeps: []string{"${aconfig}"}, }, "flags") // For exported_java_aconfig_library: Generate a JAR from all // java_aconfig_libraries to be consumed by apps built outside the // platform exportedJavaRule = pctx.AndroidStaticRule("exported_java_aconfig_library", blueprint.RuleParams{ Command: `rm -rf ${out}.tmp` + `&& for cache in ${cache_files}; do ${aconfig} create-java-lib --cache $$cache --out ${out}.tmp; done` + `&& $soong_zip -write_if_changed -jar -o ${out} -C ${out}.tmp -D ${out}.tmp` + `&& rm -rf ${out}.tmp`, CommandDeps: []string{ "$aconfig", "$soong_zip", }, }, "cache_files") ) func init() { Loading @@ -80,4 +94,5 @@ func RegisterBuildComponents(ctx android.RegistrationContext) { ctx.RegisterModuleType("aconfig_values", ValuesFactory) ctx.RegisterModuleType("aconfig_value_set", ValueSetFactory) ctx.RegisterParallelSingletonType("all_aconfig_declarations", AllAconfigDeclarationsFactory) ctx.RegisterParallelSingletonType("exported_java_aconfig_library", ExportedJavaDeclarationsLibraryFactory) } Loading
aconfig/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ bootstrap_go_package { "aconfig_values.go", "aconfig_value_set.go", "all_aconfig_declarations.go", "exported_java_aconfig_library.go", "init.go", "testing.go", ], Loading
aconfig/exported_java_aconfig_library.go 0 → 100644 +56 −0 Original line number Diff line number Diff line // Copyright 2023 Google Inc. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package aconfig import ( "android/soong/android" ) func ExportedJavaDeclarationsLibraryFactory() android.Singleton { return &exportedJavaDeclarationsLibrarySingleton{} } type exportedJavaDeclarationsLibrarySingleton struct { intermediatePath android.OutputPath } func (this *exportedJavaDeclarationsLibrarySingleton) GenerateBuildActions(ctx android.SingletonContext) { // Find all of the aconfig_declarations modules var cacheFiles android.Paths ctx.VisitAllModules(func(module android.Module) { if !ctx.ModuleHasProvider(module, DeclarationsProviderKey) { return } decl := ctx.ModuleProvider(module, DeclarationsProviderKey).(DeclarationsProviderData) cacheFiles = append(cacheFiles, decl.IntermediateCacheOutputPath) }) // Generate build action for aconfig this.intermediatePath = android.PathForIntermediates(ctx, "exported_java_aconfig_library.jar") ctx.Build(pctx, android.BuildParams{ Rule: exportedJavaRule, Inputs: cacheFiles, Output: this.intermediatePath, Description: "exported_java_aconfig_library", Args: map[string]string{ "cache_files": android.JoinPathsWithPrefix(cacheFiles, " "), }, }) ctx.Phony("exported_java_aconfig_library", this.intermediatePath) } func (this *exportedJavaDeclarationsLibrarySingleton) MakeVars(ctx android.MakeVarsContext) { ctx.DistForGoalWithFilename("sdk", this.intermediatePath, "android-flags.jar") }
aconfig/init.go +15 −0 Original line number Diff line number Diff line Loading @@ -67,6 +67,20 @@ var ( Command: `${aconfig} dump --dedup --format protobuf --out $out $flags`, CommandDeps: []string{"${aconfig}"}, }, "flags") // For exported_java_aconfig_library: Generate a JAR from all // java_aconfig_libraries to be consumed by apps built outside the // platform exportedJavaRule = pctx.AndroidStaticRule("exported_java_aconfig_library", blueprint.RuleParams{ Command: `rm -rf ${out}.tmp` + `&& for cache in ${cache_files}; do ${aconfig} create-java-lib --cache $$cache --out ${out}.tmp; done` + `&& $soong_zip -write_if_changed -jar -o ${out} -C ${out}.tmp -D ${out}.tmp` + `&& rm -rf ${out}.tmp`, CommandDeps: []string{ "$aconfig", "$soong_zip", }, }, "cache_files") ) func init() { Loading @@ -80,4 +94,5 @@ func RegisterBuildComponents(ctx android.RegistrationContext) { ctx.RegisterModuleType("aconfig_values", ValuesFactory) ctx.RegisterModuleType("aconfig_value_set", ValueSetFactory) ctx.RegisterParallelSingletonType("all_aconfig_declarations", AllAconfigDeclarationsFactory) ctx.RegisterParallelSingletonType("exported_java_aconfig_library", ExportedJavaDeclarationsLibraryFactory) }