Add hiddenapi_flags module type
The build generates a file out/soong/hiddenapi/hiddenapi-flags.csv which is used by the hiddenapi-blacklist tests in cts/tests/signature. The generation is done at the ninja level and so is not accessible from the soong layer that runs on top. This change adds the hiddenapi-flags module type which makes the file accessible from other soong modules. Bug: 122332514 Test: atest -p cts/tests/signature Change-Id: If38c8a8ffca110f2ae01f97f19a2740ca3fde1b7 Exempt-From-Owner-Approval: Colin has already reviewed and only had minor nits and this is blocking other changes.
This commit is contained in:
parent
393590d8a8
commit
1b033f5c4c
|
@ -15,11 +15,14 @@
|
|||
package java
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"android/soong/android"
|
||||
)
|
||||
|
||||
func init() {
|
||||
android.RegisterSingletonType("hiddenapi", hiddenAPISingletonFactory)
|
||||
android.RegisterModuleType("hiddenapi_flags", hiddenAPIFlagsFactory)
|
||||
}
|
||||
|
||||
type hiddenAPISingletonPathsStruct struct {
|
||||
|
@ -307,3 +310,48 @@ func commitChangeForRestat(rule *android.RuleBuilder, tempPath, outputPath andro
|
|||
Text("fi").
|
||||
Text(")")
|
||||
}
|
||||
|
||||
type hiddenAPIFlagsProperties struct {
|
||||
// name of the file into which the flags will be copied.
|
||||
Filename *string
|
||||
}
|
||||
|
||||
type hiddenAPIFlags struct {
|
||||
android.ModuleBase
|
||||
|
||||
properties hiddenAPIFlagsProperties
|
||||
|
||||
outputFilePath android.OutputPath
|
||||
}
|
||||
|
||||
func (h *hiddenAPIFlags) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
filename := String(h.properties.Filename)
|
||||
|
||||
inputPath := hiddenAPISingletonPaths(ctx).flags
|
||||
h.outputFilePath = android.PathForModuleOut(ctx, filename).OutputPath
|
||||
|
||||
// This ensures that outputFilePath has the correct name for others to
|
||||
// use, as the source file may have a different name.
|
||||
ctx.Build(pctx, android.BuildParams{
|
||||
Rule: android.Cp,
|
||||
Output: h.outputFilePath,
|
||||
Input: inputPath,
|
||||
})
|
||||
}
|
||||
|
||||
func (h *hiddenAPIFlags) OutputFiles(tag string) (android.Paths, error) {
|
||||
switch tag {
|
||||
case "":
|
||||
return android.Paths{h.outputFilePath}, nil
|
||||
default:
|
||||
return nil, fmt.Errorf("unsupported module reference tag %q", tag)
|
||||
}
|
||||
}
|
||||
|
||||
// hiddenapi-flags provides access to the hiddenapi-flags.csv file generated during the build.
|
||||
func hiddenAPIFlagsFactory() android.Module {
|
||||
module := &hiddenAPIFlags{}
|
||||
module.AddProperties(&module.properties)
|
||||
android.InitAndroidArchModule(module, android.HostAndDeviceSupported, android.MultilibCommon)
|
||||
return module
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue