Merge "CMakelists generator: Maintain include order"
This commit is contained in:
commit
e7ee3c7bc2
1 changed files with 24 additions and 22 deletions
|
@ -189,16 +189,26 @@ func buildCMakePath(p string) string {
|
||||||
return fmt.Sprintf("${ANDROID_ROOT}/%s", p)
|
return fmt.Sprintf("${ANDROID_ROOT}/%s", p)
|
||||||
}
|
}
|
||||||
|
|
||||||
func writeAllIncludeDirectories(includes map[string]bool, f *os.File) {
|
func writeAllIncludeDirectories(includes []string, f *os.File) {
|
||||||
for include := range includes {
|
if len(includes) == 0 {
|
||||||
f.WriteString(fmt.Sprintf("include_directories(\"%s\")\n", buildCMakePath(include)))
|
return
|
||||||
}
|
}
|
||||||
|
f.WriteString("include_directories(\n")
|
||||||
|
for _, include := range includes {
|
||||||
|
f.WriteString(fmt.Sprintf(" \"%s\"\n", buildCMakePath(include)))
|
||||||
|
}
|
||||||
|
f.WriteString(")\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
func writeAllSystemDirectories(includes map[string]bool, f *os.File) {
|
func writeAllSystemDirectories(includes []string, f *os.File) {
|
||||||
for include := range includes {
|
if len(includes) == 0 {
|
||||||
f.WriteString(fmt.Sprintf("include_directories(SYSTEM \"%s\")\n", buildCMakePath(include)))
|
return
|
||||||
}
|
}
|
||||||
|
f.WriteString("include_directories(SYSTEM \n")
|
||||||
|
for _, include := range includes {
|
||||||
|
f.WriteString(fmt.Sprintf(" \"%s\"\n", buildCMakePath(include)))
|
||||||
|
}
|
||||||
|
f.WriteString(")\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
func writeAllFlags(flags []string, f *os.File, tag string) {
|
func writeAllFlags(flags []string, f *os.File, tag string) {
|
||||||
|
@ -218,17 +228,14 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
type compilerParameters struct {
|
type compilerParameters struct {
|
||||||
headerSearchPath map[string]bool
|
headerSearchPath []string
|
||||||
systemHeaderSearchPath map[string]bool
|
systemHeaderSearchPath []string
|
||||||
flags []string
|
flags []string
|
||||||
sysroot string
|
sysroot string
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeCompilerParameters() compilerParameters {
|
func makeCompilerParameters() compilerParameters {
|
||||||
return compilerParameters{
|
return compilerParameters{
|
||||||
headerSearchPath: make(map[string]bool),
|
|
||||||
systemHeaderSearchPath: make(map[string]bool),
|
|
||||||
flags: make([]string, 0),
|
|
||||||
sysroot: "",
|
sysroot: "",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -267,7 +274,8 @@ func parseCompilerParameters(params []string, ctx blueprint.SingletonContext, f
|
||||||
|
|
||||||
switch categorizeParameter(param) {
|
switch categorizeParameter(param) {
|
||||||
case headerSearchPath:
|
case headerSearchPath:
|
||||||
compilerParameters.headerSearchPath[strings.TrimPrefix(param, "-I")] = true
|
compilerParameters.headerSearchPath =
|
||||||
|
append(compilerParameters.headerSearchPath, strings.TrimPrefix(param, "-I"))
|
||||||
case variable:
|
case variable:
|
||||||
if evaluated, error := evalVariable(ctx, param); error == nil {
|
if evaluated, error := evalVariable(ctx, param); error == nil {
|
||||||
if outputDebugInfo {
|
if outputDebugInfo {
|
||||||
|
@ -284,7 +292,8 @@ func parseCompilerParameters(params []string, ctx blueprint.SingletonContext, f
|
||||||
}
|
}
|
||||||
case systemHeaderSearchPath:
|
case systemHeaderSearchPath:
|
||||||
if i < len(params)-1 {
|
if i < len(params)-1 {
|
||||||
compilerParameters.systemHeaderSearchPath[params[i+1]] = true
|
compilerParameters.systemHeaderSearchPath =
|
||||||
|
append(compilerParameters.systemHeaderSearchPath, params[i+1])
|
||||||
} else if outputDebugInfo {
|
} else if outputDebugInfo {
|
||||||
f.WriteString("# Found a header search path marker with no path")
|
f.WriteString("# Found a header search path marker with no path")
|
||||||
}
|
}
|
||||||
|
@ -343,8 +352,8 @@ func doubleEscape(s string) string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func concatenateParams(c1 *compilerParameters, c2 compilerParameters) {
|
func concatenateParams(c1 *compilerParameters, c2 compilerParameters) {
|
||||||
concatenateMaps(c1.headerSearchPath, c2.headerSearchPath)
|
c1.headerSearchPath = append(c1.headerSearchPath, c2.headerSearchPath...)
|
||||||
concatenateMaps(c1.systemHeaderSearchPath, c2.systemHeaderSearchPath)
|
c1.systemHeaderSearchPath = append(c1.systemHeaderSearchPath, c2.systemHeaderSearchPath...)
|
||||||
if c2.sysroot != "" {
|
if c2.sysroot != "" {
|
||||||
c1.sysroot = c2.sysroot
|
c1.sysroot = c2.sysroot
|
||||||
}
|
}
|
||||||
|
@ -359,13 +368,6 @@ func evalVariable(ctx blueprint.SingletonContext, str string) (string, error) {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Concatenate two maps into one. Results are stored in first operand.
|
|
||||||
func concatenateMaps(map1 map[string]bool, map2 map[string]bool) {
|
|
||||||
for key, value := range map2 {
|
|
||||||
map1[key] = value
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func getCMakeListsForModule(module *Module, ctx blueprint.SingletonContext) string {
|
func getCMakeListsForModule(module *Module, ctx blueprint.SingletonContext) string {
|
||||||
return filepath.Join(getAndroidSrcRootDirectory(ctx),
|
return filepath.Join(getAndroidSrcRootDirectory(ctx),
|
||||||
cLionOutputProjectsDirectory,
|
cLionOutputProjectsDirectory,
|
||||||
|
|
Loading…
Reference in a new issue