[Cmake-commits] [cmake-commits] king committed cmDocumentVariables.cxx 1.26 1.27 cmLocalGenerator.cxx 1.293 1.294
cmake-commits at cmake.org
cmake-commits at cmake.org
Wed Feb 25 11:44:48 EST 2009
Update of /cvsroot/CMake/CMake/Source
In directory public:/mounts/ram/cvs-serv1788/Source
Modified Files:
cmDocumentVariables.cxx cmLocalGenerator.cxx
Log Message:
ENH: Re-enable system include dir suppression
This creates variable CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES to
specify implicit include directories on a per-language basis. This
replaces the previous platform-wide variable. It is necessary to
avoid explicit specification of -I/usr/include on some compilers
(such as HP aCC) because:
1.) It may break ordering among system include directories defined
internally by the compiler, thus getting wrong system headers.
2.) It tells the compiler to treat the system include directory
as a user include directory, enabling warnings in the headers.
See issue #8598.
Index: cmDocumentVariables.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmDocumentVariables.cxx,v
retrieving revision 1.26
retrieving revision 1.27
diff -C 2 -d -r1.26 -r1.27
*** cmDocumentVariables.cxx 20 Feb 2009 19:03:41 -0000 1.26
--- cmDocumentVariables.cxx 25 Feb 2009 16:44:46 -0000 1.27
***************
*** 1098,1101 ****
--- 1098,1110 ----
"part of a project for a given language but are not compiled. ",false,
"Variables for Languages");
+
+ cm->DefineProperty
+ ("CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES", cmProperty::VARIABLE,
+ "Directories implicitly searched by the compiler for header files.",
+ "CMake does not explicitly specify these directories on compiler "
+ "command lines for language <LANG>. "
+ "This prevents system include directories from being treated as user "
+ "include directories on some compilers.", false,
+ "Variables for Languages");
cm->DefineProperty
Index: cmLocalGenerator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLocalGenerator.cxx,v
retrieving revision 1.293
retrieving revision 1.294
diff -C 2 -d -r1.293 -r1.294
*** cmLocalGenerator.cxx 24 Feb 2009 20:37:08 -0000 1.293
--- cmLocalGenerator.cxx 25 Feb 2009 16:44:46 -0000 1.294
***************
*** 1187,1190 ****
--- 1187,1207 ----
return this->LanguageToIncludeFlags[lang].c_str();
}
+
+ // Load implicit include directories for this language.
+ std::set<cmStdString> impDirs;
+ std::string impDirVar = "CMAKE_";
+ impDirVar += lang;
+ impDirVar += "_IMPLICIT_INCLUDE_DIRECTORIES";
+ if(const char* value = this->Makefile->GetDefinition(impDirVar.c_str()))
+ {
+ std::vector<std::string> impDirVec;
+ cmSystemTools::ExpandListArgument(value, impDirVec);
+ for(std::vector<std::string>::const_iterator i = impDirVec.begin();
+ i != impDirVec.end(); ++i)
+ {
+ impDirs.insert(*i);
+ }
+ }
+
cmOStringStream includeFlags;
std::vector<std::string> includes;
***************
*** 1234,1237 ****
--- 1251,1259 ----
for(i = includes.begin(); i != includes.end(); ++i)
{
+ // Skip implicit include directories.
+ if(impDirs.find(*i) != impDirs.end())
+ {
+ continue;
+ }
#ifdef __APPLE__
if(cmSystemTools::IsPathToFramework(i->c_str()))
More information about the Cmake-commits
mailing list