Fix Soong CMakeLists.txt generator
Problem: Soong does not guarantee that the list of parameters will be in individual strings. This means the CMakeLists generator can receive as input: params = {"-isystem", "path/to/system"} or it could receive: params = {"-isystem path/to/system"} Solution: Normalize the list of parameters into a flattened list of parameters where each parameters is in an individual string. Fixes: 143378093 Test: None Change-Id: I9bd1a2006a1cf0ba383f467748b6fd4eadef6866
This commit is contained in:
parent
af60d490ff
commit
33ca8080e5
1 changed files with 23 additions and 0 deletions
|
@ -306,6 +306,20 @@ func categorizeParameter(parameter string) parameterType {
|
|||
return flag
|
||||
}
|
||||
|
||||
// Flattens a list of strings potentially containing space characters into a list of string containing no
|
||||
// spaces.
|
||||
func normalizeParameters(params []string) []string {
|
||||
var flatParams []string
|
||||
for _, s := range params {
|
||||
s = strings.Trim(s, " ")
|
||||
if len(s) == 0 {
|
||||
continue
|
||||
}
|
||||
flatParams = append(flatParams, strings.Split(s, " ")...)
|
||||
}
|
||||
return flatParams
|
||||
}
|
||||
|
||||
func parseCompilerParameters(params []string, ctx android.SingletonContext, f *os.File) compilerParameters {
|
||||
var compilerParameters = makeCompilerParameters()
|
||||
|
||||
|
@ -313,6 +327,15 @@ func parseCompilerParameters(params []string, ctx android.SingletonContext, f *o
|
|||
f.WriteString(fmt.Sprintf("# Raw param [%d] = '%s'\n", i, str))
|
||||
}
|
||||
|
||||
// Soong does not guarantee that each flag will be in an individual string. e.g: The
|
||||
// input received could be:
|
||||
// params = {"-isystem", "path/to/system"}
|
||||
// or it could be
|
||||
// params = {"-isystem path/to/system"}
|
||||
// To normalize the input, we split all strings with the "space" character and consolidate
|
||||
// all tokens into a flattened parameters list
|
||||
params = normalizeParameters(params)
|
||||
|
||||
for i := 0; i < len(params); i++ {
|
||||
param := params[i]
|
||||
if param == "" {
|
||||
|
|
Loading…
Reference in a new issue