diff --git a/cc/fuzz.go b/cc/fuzz.go index 7f0a5021b..227fe8bcf 100644 --- a/cc/fuzz.go +++ b/cc/fuzz.go @@ -29,6 +29,7 @@ import ( func init() { android.RegisterModuleType("cc_fuzz", LibFuzzFactory) android.RegisterParallelSingletonType("cc_fuzz_packaging", fuzzPackagingFactory) + android.RegisterParallelSingletonType("cc_fuzz_presubmit_packaging", fuzzPackagingFactoryPresubmit) } type FuzzProperties struct { @@ -356,9 +357,10 @@ func NewFuzzer(hod android.HostOrDeviceSupported) *Module { // their architecture & target/host specific zip file. type ccRustFuzzPackager struct { fuzz.FuzzPackager - fuzzPackagingArchModules string - fuzzTargetSharedDepsInstallPairs string - allFuzzTargetsName string + fuzzPackagingArchModules string + fuzzTargetSharedDepsInstallPairs string + allFuzzTargetsName string + onlyIncludePresubmits bool } func fuzzPackagingFactory() android.Singleton { @@ -367,6 +369,18 @@ func fuzzPackagingFactory() android.Singleton { fuzzPackagingArchModules: "SOONG_FUZZ_PACKAGING_ARCH_MODULES", fuzzTargetSharedDepsInstallPairs: "FUZZ_TARGET_SHARED_DEPS_INSTALL_PAIRS", allFuzzTargetsName: "ALL_FUZZ_TARGETS", + onlyIncludePresubmits: false, + } + return fuzzPackager +} + +func fuzzPackagingFactoryPresubmit() android.Singleton { + + fuzzPackager := &ccRustFuzzPackager{ + fuzzPackagingArchModules: "SOONG_PRESUBMIT_FUZZ_PACKAGING_ARCH_MODULES", + fuzzTargetSharedDepsInstallPairs: "PRESUBMIT_FUZZ_TARGET_SHARED_DEPS_INSTALL_PAIRS", + allFuzzTargetsName: "ALL_PRESUBMIT_FUZZ_TARGETS", + onlyIncludePresubmits: true, } return fuzzPackager } @@ -390,7 +404,6 @@ func (s *ccRustFuzzPackager) GenerateBuildActions(ctx android.SingletonContext) if !ok || ccModule.PreventInstall() { return } - // Discard non-fuzz targets. if ok := fuzz.IsValid(ccModule.FuzzModuleStruct()); !ok { return @@ -407,6 +420,9 @@ func (s *ccRustFuzzPackager) GenerateBuildActions(ctx android.SingletonContext) } else if ccModule.Host() { hostOrTargetString = "host" } + if s.onlyIncludePresubmits == true { + hostOrTargetString = "presubmit-" + hostOrTargetString + } fpm := fuzz.FuzzPackagedModule{} if ok { @@ -431,6 +447,14 @@ func (s *ccRustFuzzPackager) GenerateBuildActions(ctx android.SingletonContext) // The executable. files = append(files, fuzz.FileToZip{SourceFilePath: android.OutputFileForModule(ctx, ccModule, "unstripped")}) + if s.onlyIncludePresubmits == true { + if fpm.FuzzProperties.Fuzz_config == nil { + return + } + if !BoolDefault(fpm.FuzzProperties.Fuzz_config.Use_for_presubmit, false){ + return + } + } archDirs[archOs], ok = s.BuildZipFile(ctx, module, fpm, files, builder, archDir, archString, hostOrTargetString, archOs, archDirs) if !ok { return