summaryrefslogtreecommitdiffstats
path: root/Source/cmMakefileTargetGenerator.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2015-07-13 14:35:04 (GMT)
committerBrad King <brad.king@kitware.com>2015-07-13 14:49:46 (GMT)
commitc736de7b284ecc93bac48106e88417e0e6c92ad6 (patch)
tree4b543faa599c34bdc7db464cd26b53c9cb8737bb /Source/cmMakefileTargetGenerator.cxx
parent6f94b03c976088d177891ff69a9fad88de42e420 (diff)
downloadCMake-c736de7b284ecc93bac48106e88417e0e6c92ad6.zip
CMake-c736de7b284ecc93bac48106e88417e0e6c92ad6.tar.gz
CMake-c736de7b284ecc93bac48106e88417e0e6c92ad6.tar.bz2
Factor an <INCLUDES> placeholder out of <FLAGS> in rule variables
Teach the Makefile and Ninja generators to substitute for an <INCLUDES> placeholder instead of putting -I in <FLAGS>. Update our values for CMAKE_<LANG>_COMPILE_OBJECT, CMAKE_<LANG>_CREATE_ASSEMBLY_SOURCE, and CMAKE_<LANG>_CREATE_PREPROCESSED_SOURCE to place <INCLUDES> just before <FLAGS>.
Diffstat (limited to 'Source/cmMakefileTargetGenerator.cxx')
-rw-r--r--Source/cmMakefileTargetGenerator.cxx9
1 files changed, 9 insertions, 0 deletions
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx
index ef4bbbe..9cac5bd 100644
--- a/Source/cmMakefileTargetGenerator.cxx
+++ b/Source/cmMakefileTargetGenerator.cxx
@@ -295,11 +295,14 @@ void cmMakefileTargetGenerator::WriteTargetLanguageFlags()
{
std::string flags = this->GetFlags(*l);
std::string defines = this->GetDefines(*l);
+ std::string includes = this->GetIncludes(*l);
// Escape comment characters so they do not terminate assignment.
cmSystemTools::ReplaceString(flags, "#", "\\#");
cmSystemTools::ReplaceString(defines, "#", "\\#");
+ cmSystemTools::ReplaceString(includes, "#", "\\#");
*this->FlagFileStream << *l << "_FLAGS = " << flags << "\n\n";
*this->FlagFileStream << *l << "_DEFINES = " << defines << "\n\n";
+ *this->FlagFileStream << *l << "_INCLUDES = " << includes << "\n\n";
}
}
@@ -611,6 +614,9 @@ cmMakefileTargetGenerator
vars.Defines = definesString.c_str();
+ std::string const includesString = "$(" + lang + "_INCLUDES)";
+ vars.Includes = includesString.c_str();
+
// At the moment, it is assumed that C, C++, and Fortran have both
// assembly and preprocessor capabilities. The same is true for the
// ability to export compile commands
@@ -643,6 +649,9 @@ cmMakefileTargetGenerator
std::string langDefines = std::string("$(") + lang + "_DEFINES)";
compileCommand.replace(compileCommand.find(langDefines),
langDefines.size(), this->GetDefines(lang));
+ std::string langIncludes = std::string("$(") + lang + "_INCLUDES)";
+ compileCommand.replace(compileCommand.find(langIncludes),
+ langIncludes.size(), this->GetIncludes(lang));
this->GlobalGenerator->AddCXXCompileCommand(
source.GetFullPath(), workingDirectory, compileCommand);
}