Loading android/prebuilt.go +35 −3 Original line number Diff line number Diff line Loading @@ -61,6 +61,16 @@ type PrebuiltProperties struct { // a matching name. Prefer *bool `android:"arch_variant"` // When specified this names a Soong config variable that controls the prefer property. // // If the value of the named Soong config variable is true then prefer is set to false and vice // versa. If the Soong config variable is not set then it defaults to false, so prefer defaults // to true. // // If specified then the prefer property is ignored in favor of the value of the Soong config // variable. Use_source_config_var *ConfigVarProperties SourceExists bool `blueprint:"mutated"` UsePrebuilt bool `blueprint:"mutated"` Loading @@ -68,6 +78,22 @@ type PrebuiltProperties struct { PrebuiltRenamedToSource bool `blueprint:"mutated"` } // Properties that can be used to select a Soong config variable. type ConfigVarProperties struct { // Allow instances of this struct to be used as a property value in a BpPropertySet. BpPrintableBase // The name of the configuration namespace. // // As passed to add_soong_config_namespace in Make. Config_namespace *string // The name of the configuration variable. // // As passed to add_soong_config_var_value in Make. Var_name *string } type Prebuilt struct { properties PrebuiltProperties Loading Loading @@ -364,12 +390,18 @@ func (p *Prebuilt) usePrebuilt(ctx TopDownMutatorContext, source Module, prebuil return false } // TODO: use p.Properties.Name and ctx.ModuleDir to override preference if Bool(p.properties.Prefer) { // If source is not available or is disabled then always use the prebuilt. if source == nil || !source.Enabled() { return true } return source == nil || !source.Enabled() // If the use_source_config_var property is set then it overrides the prefer property setting. if configVar := p.properties.Use_source_config_var; configVar != nil { return !ctx.Config().VendorConfig(proptools.String(configVar.Config_namespace)).Bool(proptools.String(configVar.Var_name)) } // TODO: use p.Properties.Name and ctx.ModuleDir to override preference return Bool(p.properties.Prefer) } func (p *Prebuilt) SourceExists() bool { Loading android/prebuilt_test.go +82 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ var prebuiltsTests = []struct { replaceBp bool // modules is added to default bp boilerplate if false. modules string prebuilt []OsType preparer FixturePreparer }{ { name: "no prebuilt", Loading Loading @@ -291,6 +292,86 @@ var prebuiltsTests = []struct { }`, prebuilt: []OsType{Android, BuildOs}, }, { name: "prebuilt use_source_config_var={acme, use_source} - no var specified", modules: ` source { name: "bar", } prebuilt { name: "bar", use_source_config_var: {config_namespace: "acme", var_name: "use_source"}, srcs: ["prebuilt_file"], }`, // When use_source_env is specified then it will use the prebuilt by default if the environment // variable is not set. prebuilt: []OsType{Android, BuildOs}, }, { name: "prebuilt use_source_config_var={acme, use_source} - acme_use_source=false", modules: ` source { name: "bar", } prebuilt { name: "bar", use_source_config_var: {config_namespace: "acme", var_name: "use_source"}, srcs: ["prebuilt_file"], }`, preparer: FixtureModifyProductVariables(func(variables FixtureProductVariables) { variables.VendorVars = map[string]map[string]string{ "acme": { "use_source": "false", }, } }), // Setting the environment variable named in use_source_env to false will cause the prebuilt to // be used. prebuilt: []OsType{Android, BuildOs}, }, { name: "prebuilt use_source_config_var={acme, use_source} - acme_use_source=true", modules: ` source { name: "bar", } prebuilt { name: "bar", use_source_config_var: {config_namespace: "acme", var_name: "use_source"}, srcs: ["prebuilt_file"], }`, preparer: FixtureModifyProductVariables(func(variables FixtureProductVariables) { variables.VendorVars = map[string]map[string]string{ "acme": { "use_source": "true", }, } }), // Setting the environment variable named in use_source_env to true will cause the source to be // used. prebuilt: nil, }, { name: "prebuilt use_source_config_var={acme, use_source} - acme_use_source=true, no source", modules: ` prebuilt { name: "bar", use_source_config_var: {config_namespace: "acme", var_name: "use_source"}, srcs: ["prebuilt_file"], }`, preparer: FixtureModifyProductVariables(func(variables FixtureProductVariables) { variables.VendorVars = map[string]map[string]string{ "acme": { "use_source": "true", }, } }), // Although the environment variable says to use source there is no source available. prebuilt: []OsType{Android, BuildOs}, }, } func TestPrebuilts(t *testing.T) { Loading Loading @@ -329,6 +410,7 @@ func TestPrebuilts(t *testing.T) { }), fs.AddToFixture(), FixtureRegisterWithContext(registerTestPrebuiltModules), OptionalFixturePreparer(test.preparer), ).RunTestWithBp(t, bp) for _, variant := range result.ModuleVariantsForTests("foo") { Loading Loading
android/prebuilt.go +35 −3 Original line number Diff line number Diff line Loading @@ -61,6 +61,16 @@ type PrebuiltProperties struct { // a matching name. Prefer *bool `android:"arch_variant"` // When specified this names a Soong config variable that controls the prefer property. // // If the value of the named Soong config variable is true then prefer is set to false and vice // versa. If the Soong config variable is not set then it defaults to false, so prefer defaults // to true. // // If specified then the prefer property is ignored in favor of the value of the Soong config // variable. Use_source_config_var *ConfigVarProperties SourceExists bool `blueprint:"mutated"` UsePrebuilt bool `blueprint:"mutated"` Loading @@ -68,6 +78,22 @@ type PrebuiltProperties struct { PrebuiltRenamedToSource bool `blueprint:"mutated"` } // Properties that can be used to select a Soong config variable. type ConfigVarProperties struct { // Allow instances of this struct to be used as a property value in a BpPropertySet. BpPrintableBase // The name of the configuration namespace. // // As passed to add_soong_config_namespace in Make. Config_namespace *string // The name of the configuration variable. // // As passed to add_soong_config_var_value in Make. Var_name *string } type Prebuilt struct { properties PrebuiltProperties Loading Loading @@ -364,12 +390,18 @@ func (p *Prebuilt) usePrebuilt(ctx TopDownMutatorContext, source Module, prebuil return false } // TODO: use p.Properties.Name and ctx.ModuleDir to override preference if Bool(p.properties.Prefer) { // If source is not available or is disabled then always use the prebuilt. if source == nil || !source.Enabled() { return true } return source == nil || !source.Enabled() // If the use_source_config_var property is set then it overrides the prefer property setting. if configVar := p.properties.Use_source_config_var; configVar != nil { return !ctx.Config().VendorConfig(proptools.String(configVar.Config_namespace)).Bool(proptools.String(configVar.Var_name)) } // TODO: use p.Properties.Name and ctx.ModuleDir to override preference return Bool(p.properties.Prefer) } func (p *Prebuilt) SourceExists() bool { Loading
android/prebuilt_test.go +82 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ var prebuiltsTests = []struct { replaceBp bool // modules is added to default bp boilerplate if false. modules string prebuilt []OsType preparer FixturePreparer }{ { name: "no prebuilt", Loading Loading @@ -291,6 +292,86 @@ var prebuiltsTests = []struct { }`, prebuilt: []OsType{Android, BuildOs}, }, { name: "prebuilt use_source_config_var={acme, use_source} - no var specified", modules: ` source { name: "bar", } prebuilt { name: "bar", use_source_config_var: {config_namespace: "acme", var_name: "use_source"}, srcs: ["prebuilt_file"], }`, // When use_source_env is specified then it will use the prebuilt by default if the environment // variable is not set. prebuilt: []OsType{Android, BuildOs}, }, { name: "prebuilt use_source_config_var={acme, use_source} - acme_use_source=false", modules: ` source { name: "bar", } prebuilt { name: "bar", use_source_config_var: {config_namespace: "acme", var_name: "use_source"}, srcs: ["prebuilt_file"], }`, preparer: FixtureModifyProductVariables(func(variables FixtureProductVariables) { variables.VendorVars = map[string]map[string]string{ "acme": { "use_source": "false", }, } }), // Setting the environment variable named in use_source_env to false will cause the prebuilt to // be used. prebuilt: []OsType{Android, BuildOs}, }, { name: "prebuilt use_source_config_var={acme, use_source} - acme_use_source=true", modules: ` source { name: "bar", } prebuilt { name: "bar", use_source_config_var: {config_namespace: "acme", var_name: "use_source"}, srcs: ["prebuilt_file"], }`, preparer: FixtureModifyProductVariables(func(variables FixtureProductVariables) { variables.VendorVars = map[string]map[string]string{ "acme": { "use_source": "true", }, } }), // Setting the environment variable named in use_source_env to true will cause the source to be // used. prebuilt: nil, }, { name: "prebuilt use_source_config_var={acme, use_source} - acme_use_source=true, no source", modules: ` prebuilt { name: "bar", use_source_config_var: {config_namespace: "acme", var_name: "use_source"}, srcs: ["prebuilt_file"], }`, preparer: FixtureModifyProductVariables(func(variables FixtureProductVariables) { variables.VendorVars = map[string]map[string]string{ "acme": { "use_source": "true", }, } }), // Although the environment variable says to use source there is no source available. prebuilt: []OsType{Android, BuildOs}, }, } func TestPrebuilts(t *testing.T) { Loading Loading @@ -329,6 +410,7 @@ func TestPrebuilts(t *testing.T) { }), fs.AddToFixture(), FixtureRegisterWithContext(registerTestPrebuiltModules), OptionalFixturePreparer(test.preparer), ).RunTestWithBp(t, bp) for _, variant := range result.ModuleVariantsForTests("foo") { Loading