Add "test-only" flag for cc modules
As part of aosp/3022586 where we added the idea of "test-only" modules and top_level_test_targets, this CL implements that for cc_ modules. We let users set "test-only" on cc_library, but not on other modules where the module kind is implicitly test-only, like cc_test. Here the implementation, not the user decides it is test-only. % gqui from "flatten(~/aosp-main-with-phones/out/soong/ownership/all_teams.pb, teams)" proto team.proto:AllTeams 'select teams.kind, count(*) where teams.top_level_target = true group by teams.kind' aosp_shiba[6:15:47]/0 +--------------+----------+ | teams.kind | count(*) | +--------------+----------+ | art_cc_test | 56 | | cc_benchmark | 68 | | cc_fuzz | 515 | | cc_test | 3518 | | cc_test_host | 6 | +--------------+----------+ % gqui from "flatten(~/aosp-main-with-phones/out/soong/ownership/all_teams.pb, teams)" proto team.proto:AllTeams 'select teams.kind, count(*) where teams.test_only = true group by teams.kind' aosp_shiba[6:16:26]/0 +--------------------------+----------+ | teams.kind | count(*) | +--------------------------+----------+ | art_cc_test | 56 | | art_cc_test_library | 13 | | cc_benchmark | 68 | | cc_fuzz | 515 | | cc_test | 3518 | | cc_test_host | 6 | | cc_test_library | 484 | +--------------------------+----------+ Bug: b/327280661 Test: m nothing --no-skip-soong-tests Test: go test ./cc Test: m all_teams Change-Id: I344436c424a9dfbdcf27e10f42f5cebc3d2b1261
This commit is contained in:
17
cc/cc.go
17
cc/cc.go
@@ -845,6 +845,7 @@ type Module struct {
|
||||
|
||||
VendorProperties VendorProperties
|
||||
Properties BaseProperties
|
||||
sourceProperties android.SourceProperties
|
||||
|
||||
// initialize before calling Init
|
||||
hod android.HostOrDeviceSupported
|
||||
@@ -1262,6 +1263,10 @@ func (c *Module) Init() android.Module {
|
||||
for _, feature := range c.features {
|
||||
c.AddProperties(feature.props()...)
|
||||
}
|
||||
// Allow test-only on libraries that are not cc_test_library
|
||||
if c.library != nil && !c.testLibrary() {
|
||||
c.AddProperties(&c.sourceProperties)
|
||||
}
|
||||
|
||||
android.InitAndroidArchModule(c, c.hod, c.multilib)
|
||||
android.InitApexModule(c)
|
||||
@@ -2135,6 +2140,18 @@ func (c *Module) GenerateAndroidBuildActions(actx android.ModuleContext) {
|
||||
if c.testModule {
|
||||
android.SetProvider(ctx, testing.TestModuleProviderKey, testing.TestModuleProviderData{})
|
||||
}
|
||||
|
||||
// If Test_only is set on a module in bp file, respect the setting, otherwise
|
||||
// see if is a known test module type.
|
||||
testOnly := c.testModule || c.testLibrary()
|
||||
if c.sourceProperties.Test_only != nil {
|
||||
testOnly = Bool(c.sourceProperties.Test_only)
|
||||
}
|
||||
android.SetProvider(ctx, android.TestOnlyProviderKey, android.TestModuleInformation{
|
||||
TestOnly: testOnly,
|
||||
TopLevelTarget: c.testModule,
|
||||
})
|
||||
|
||||
android.SetProvider(ctx, blueprint.SrcsFileProviderKey, blueprint.SrcsFileProviderData{SrcPaths: deps.GeneratedSources.Strings()})
|
||||
|
||||
android.CollectDependencyAconfigFiles(ctx, &c.mergedAconfigFiles)
|
||||
|
Reference in New Issue
Block a user