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.systemHeaderSearchPath, f, true)
|
||||||
writeAllIncludeDirectories(c.headerSearchPath, f, false)
|
writeAllIncludeDirectories(c.headerSearchPath, f, false)
|
||||||
if cflags {
|
if cflags {
|
||||||
|
writeAllRelativeFilePathFlags(c.relativeFilePathFlags, f, "CMAKE_C_FLAGS")
|
||||||
writeAllFlags(c.flags, f, "CMAKE_C_FLAGS")
|
writeAllFlags(c.flags, f, "CMAKE_C_FLAGS")
|
||||||
}
|
}
|
||||||
|
|
||||||
if cppflags {
|
if cppflags {
|
||||||
|
writeAllRelativeFilePathFlags(c.relativeFilePathFlags, f, "CMAKE_CXX_FLAGS")
|
||||||
writeAllFlags(c.flags, f, "CMAKE_CXX_FLAGS")
|
writeAllFlags(c.flags, f, "CMAKE_CXX_FLAGS")
|
||||||
}
|
}
|
||||||
if c.sysroot != "" {
|
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")
|
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) {
|
func writeAllFlags(flags []string, f *os.File, tag string) {
|
||||||
for _, flag := range flags {
|
for _, flag := range flags {
|
||||||
f.WriteString(fmt.Sprintf("set(%s \"${%s} %s\")\n", tag, tag, flag))
|
f.WriteString(fmt.Sprintf("set(%s \"${%s} %s\")\n", tag, tag, flag))
|
||||||
@@ -263,6 +275,7 @@ const (
|
|||||||
systemHeaderSearchPath
|
systemHeaderSearchPath
|
||||||
flag
|
flag
|
||||||
systemRoot
|
systemRoot
|
||||||
|
relativeFilePathFlag
|
||||||
)
|
)
|
||||||
|
|
||||||
type compilerParameters struct {
|
type compilerParameters struct {
|
||||||
@@ -270,6 +283,8 @@ type compilerParameters struct {
|
|||||||
systemHeaderSearchPath []string
|
systemHeaderSearchPath []string
|
||||||
flags []string
|
flags []string
|
||||||
sysroot 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 {
|
func makeCompilerParameters() compilerParameters {
|
||||||
@@ -294,6 +309,9 @@ func categorizeParameter(parameter string) parameterType {
|
|||||||
if strings.HasPrefix(parameter, "--sysroot") {
|
if strings.HasPrefix(parameter, "--sysroot") {
|
||||||
return systemRoot
|
return systemRoot
|
||||||
}
|
}
|
||||||
|
if strings.HasPrefix(parameter, "-fsanitize-blacklist") {
|
||||||
|
return relativeFilePathFlag
|
||||||
|
}
|
||||||
return flag
|
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")
|
f.WriteString("# Found a system root path marker with no path")
|
||||||
}
|
}
|
||||||
i = i + 1
|
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
|
return compilerParameters
|
||||||
|
Reference in New Issue
Block a user