Loading android/module.go +14 −1 Original line number Diff line number Diff line Loading @@ -2253,7 +2253,20 @@ func (e configurationEvalutor) EvaluateConfiguration(condition proptools.Configu variable := condition.Arg(1) if n, ok := ctx.Config().productVariables.VendorVars[namespace]; ok { if v, ok := n[variable]; ok { ty := "" if namespaces, ok := ctx.Config().productVariables.VendorVarTypes[namespace]; ok { ty = namespaces[variable] } switch ty { case "": // strings are the default, we don't bother writing them to the soong variables json file return proptools.ConfigurableValueString(v) case "bool": return proptools.ConfigurableValueBool(v == "true") default: panic("unhandled soong config variable type: " + ty) } } } return proptools.ConfigurableValueUndefined() Loading android/selects_test.go +33 −6 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ func TestSelects(t *testing.T) { provider selectsTestProvider providers map[string]selectsTestProvider vendorVars map[string]map[string]string vendorVarTypes map[string]map[string]string expectedError string }{ { Loading Loading @@ -583,6 +584,31 @@ func TestSelects(t *testing.T) { my_string: proptools.StringPtr("t"), }, }, { name: "Select on boolean soong config variable", bp: ` my_module_type { name: "foo", my_string: select(soong_config_variable("my_namespace", "my_variable"), { true: "t", false: "f", }), } `, vendorVars: map[string]map[string]string{ "my_namespace": { "my_variable": "true", }, }, vendorVarTypes: map[string]map[string]string{ "my_namespace": { "my_variable": "bool", }, }, provider: selectsTestProvider{ my_string: proptools.StringPtr("t"), }, }, { name: "Select on boolean false", bp: ` Loading Loading @@ -813,6 +839,7 @@ func TestSelects(t *testing.T) { }), FixtureModifyProductVariables(func(variables FixtureProductVariables) { variables.VendorVars = tc.vendorVars variables.VendorVarTypes = tc.vendorVarTypes }), ) if tc.expectedError != "" { Loading android/variable.go +2 −1 Original line number Diff line number Diff line Loading @@ -400,6 +400,7 @@ type ProductVariables struct { PlatformSepolicyCompatVersions []string `json:",omitempty"` VendorVars map[string]map[string]string `json:",omitempty"` VendorVarTypes map[string]map[string]string `json:",omitempty"` Ndk_abis *bool `json:",omitempty"` Loading Loading
android/module.go +14 −1 Original line number Diff line number Diff line Loading @@ -2253,7 +2253,20 @@ func (e configurationEvalutor) EvaluateConfiguration(condition proptools.Configu variable := condition.Arg(1) if n, ok := ctx.Config().productVariables.VendorVars[namespace]; ok { if v, ok := n[variable]; ok { ty := "" if namespaces, ok := ctx.Config().productVariables.VendorVarTypes[namespace]; ok { ty = namespaces[variable] } switch ty { case "": // strings are the default, we don't bother writing them to the soong variables json file return proptools.ConfigurableValueString(v) case "bool": return proptools.ConfigurableValueBool(v == "true") default: panic("unhandled soong config variable type: " + ty) } } } return proptools.ConfigurableValueUndefined() Loading
android/selects_test.go +33 −6 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ func TestSelects(t *testing.T) { provider selectsTestProvider providers map[string]selectsTestProvider vendorVars map[string]map[string]string vendorVarTypes map[string]map[string]string expectedError string }{ { Loading Loading @@ -583,6 +584,31 @@ func TestSelects(t *testing.T) { my_string: proptools.StringPtr("t"), }, }, { name: "Select on boolean soong config variable", bp: ` my_module_type { name: "foo", my_string: select(soong_config_variable("my_namespace", "my_variable"), { true: "t", false: "f", }), } `, vendorVars: map[string]map[string]string{ "my_namespace": { "my_variable": "true", }, }, vendorVarTypes: map[string]map[string]string{ "my_namespace": { "my_variable": "bool", }, }, provider: selectsTestProvider{ my_string: proptools.StringPtr("t"), }, }, { name: "Select on boolean false", bp: ` Loading Loading @@ -813,6 +839,7 @@ func TestSelects(t *testing.T) { }), FixtureModifyProductVariables(func(variables FixtureProductVariables) { variables.VendorVars = tc.vendorVars variables.VendorVarTypes = tc.vendorVarTypes }), ) if tc.expectedError != "" { Loading
android/variable.go +2 −1 Original line number Diff line number Diff line Loading @@ -400,6 +400,7 @@ type ProductVariables struct { PlatformSepolicyCompatVersions []string `json:",omitempty"` VendorVars map[string]map[string]string `json:",omitempty"` VendorVarTypes map[string]map[string]string `json:",omitempty"` Ndk_abis *bool `json:",omitempty"` Loading