Merge "Soong: Add relativeFilePathFlag category in CMakeList generator"
This commit is contained in:
@@ -204,10 +204,11 @@ func translateToCMake(c compilerParameters, f *os.File, cflags bool, cppflags bo
|
||||
writeAllIncludeDirectories(c.systemHeaderSearchPath, f, true)
|
||||
writeAllIncludeDirectories(c.headerSearchPath, f, false)
|
||||
if cflags {
|
||||
writeAllRelativeFilePathFlags(c.relativeFilePathFlags, f, "CMAKE_C_FLAGS")
|
||||
writeAllFlags(c.flags, f, "CMAKE_C_FLAGS")
|
||||
}
|
||||
|
||||
if cppflags {
|
||||
writeAllRelativeFilePathFlags(c.relativeFilePathFlags, f, "CMAKE_CXX_FLAGS")
|
||||
writeAllFlags(c.flags, f, "CMAKE_CXX_FLAGS")
|
||||
}
|
||||
if c.sysroot != "" {
|
||||
@@ -249,6 +250,17 @@ func writeAllIncludeDirectories(includes []string, f *os.File, isSystem bool) {
|
||||
f.WriteString("list (APPEND SOURCE_FILES ${TMP_HEADERS})\n\n")
|
||||
}
|
||||
|
||||
type relativeFilePathFlagType struct {
|
||||
flag string
|
||||
relativeFilePath string
|
||||
}
|
||||
|
||||
func writeAllRelativeFilePathFlags(relativeFilePathFlags []relativeFilePathFlagType, f *os.File, tag string) {
|
||||
for _, flag := range relativeFilePathFlags {
|
||||
f.WriteString(fmt.Sprintf("set(%s \"${%s} %s=%s\")\n", tag, tag, flag.flag, buildCMakePath(flag.relativeFilePath)))
|
||||
}
|
||||
}
|
||||
|
||||
func writeAllFlags(flags []string, f *os.File, tag string) {
|
||||
for _, flag := range flags {
|
||||
f.WriteString(fmt.Sprintf("set(%s \"${%s} %s\")\n", tag, tag, flag))
|
||||
@@ -263,6 +275,7 @@ const (
|
||||
systemHeaderSearchPath
|
||||
flag
|
||||
systemRoot
|
||||
relativeFilePathFlag
|
||||
)
|
||||
|
||||
type compilerParameters struct {
|
||||
@@ -270,6 +283,8 @@ type compilerParameters struct {
|
||||
systemHeaderSearchPath []string
|
||||
flags []string
|
||||
sysroot string
|
||||
// Must be in a=b/c/d format and can be split into "a" and "b/c/d"
|
||||
relativeFilePathFlags []relativeFilePathFlagType
|
||||
}
|
||||
|
||||
func makeCompilerParameters() compilerParameters {
|
||||
@@ -294,6 +309,9 @@ func categorizeParameter(parameter string) parameterType {
|
||||
if strings.HasPrefix(parameter, "--sysroot") {
|
||||
return systemRoot
|
||||
}
|
||||
if strings.HasPrefix(parameter, "-fsanitize-blacklist") {
|
||||
return relativeFilePathFlag
|
||||
}
|
||||
return flag
|
||||
}
|
||||
|
||||
@@ -347,6 +365,16 @@ func parseCompilerParameters(params []string, ctx android.SingletonContext, f *o
|
||||
f.WriteString("# Found a system root path marker with no path")
|
||||
}
|
||||
i = i + 1
|
||||
case relativeFilePathFlag:
|
||||
flagComponents := strings.Split(param, "=")
|
||||
if len(flagComponents) == 2 {
|
||||
flagStruct := relativeFilePathFlagType{flag: flagComponents[0], relativeFilePath: flagComponents[1]}
|
||||
compilerParameters.relativeFilePathFlags = append(compilerParameters.relativeFilePathFlags, flagStruct)
|
||||
} else {
|
||||
if outputDebugInfo {
|
||||
f.WriteString(fmt.Sprintf("# Relative File Path Flag [%s] is not formatted as a=b/c/d \n", param))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return compilerParameters
|
||||
|
Reference in New Issue
Block a user