[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