Files
build_soong/device_config/java_device_config_definitions_library.go
Joe Onorato 175073c472 Make aconfig flags generate a library instead of a srcjar.
Also add unit tests for the rest of device_config

Bug: 283475679
Test: m nothing (soong unit tests)
Change-Id: Iee18a1f2f2cbb23e8c8d84c54e903b32be29a693
2023-06-09 06:16:06 -07:00

72 lines
2.5 KiB
Go

// 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 device_config
import (
"android/soong/android"
"android/soong/java"
"fmt"
"github.com/google/blueprint"
)
type definitionsTagType struct {
blueprint.BaseDependencyTag
}
var definitionsTag = definitionsTagType{}
type JavaDeviceConfigDefinitionsLibraryProperties struct {
// name of the device_config_definitions module to generate a library for
Device_config_definitions string
}
type JavaDeviceConfigDefinitionsLibraryCallbacks struct {
properties JavaDeviceConfigDefinitionsLibraryProperties
}
func JavaDefinitionsLibraryFactory() android.Module {
callbacks := &JavaDeviceConfigDefinitionsLibraryCallbacks{}
return java.GeneratedJavaLibraryModuleFactory("java_device_config_definitions_library", callbacks, &callbacks.properties)
}
func (callbacks *JavaDeviceConfigDefinitionsLibraryCallbacks) DepsMutator(module *java.GeneratedJavaLibraryModule, ctx android.BottomUpMutatorContext) {
definitions := callbacks.properties.Device_config_definitions
if len(definitions) == 0 {
// TODO: Add test for this case
ctx.PropertyErrorf("device_config_definitions", "device_config_definitions property required")
} else {
ctx.AddDependency(ctx.Module(), definitionsTag, definitions)
}
}
func (callbacks *JavaDeviceConfigDefinitionsLibraryCallbacks) GenerateSourceJarBuildActions(ctx android.ModuleContext) android.Path {
// Get the values that came from the global RELEASE_DEVICE_CONFIG_VALUE_SETS flag
definitionsModules := ctx.GetDirectDepsWithTag(definitionsTag)
if len(definitionsModules) != 1 {
panic(fmt.Errorf("Exactly one device_config_definitions property required"))
}
definitions := ctx.OtherModuleProvider(definitionsModules[0], definitionsProviderKey).(definitionsProviderData)
srcJarPath := android.PathForModuleGen(ctx, ctx.ModuleName()+".srcjar")
ctx.Build(pctx, android.BuildParams{
Rule: srcJarRule,
Input: definitions.intermediatePath,
Output: srcJarPath,
Description: "device_config.srcjar",
})
return srcJarPath
}