[Cmake-commits] [cmake-commits] king committed cmLocalGenerator.cxx 1.287 1.288 cmLocalGenerator.h 1.107 1.108

cmake-commits at cmake.org cmake-commits at cmake.org
Tue Dec 16 09:15:20 EST 2008


Update of /cvsroot/CMake/CMake/Source
In directory public:/mounts/ram/cvs-serv24189/Source

Modified Files:
	cmLocalGenerator.cxx cmLocalGenerator.h 
Log Message:
ENH: Warn if build dir is too long for filesystem

When an object file directory is too deep to place an object file
without exceeding CMAKE_OBJECT_PATH_MAX, this issues a warning.
Previously we silently ignored the problem.  See issue #7860.


Index: cmLocalGenerator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLocalGenerator.cxx,v
retrieving revision 1.287
retrieving revision 1.288
diff -C 2 -d -r1.287 -r1.288
*** cmLocalGenerator.cxx	16 Dec 2008 14:14:40 -0000	1.287
--- cmLocalGenerator.cxx	16 Dec 2008 14:15:18 -0000	1.288
***************
*** 137,140 ****
--- 137,141 ----
        }
      }
+   this->ObjectMaxPathViolations.clear();
    }
  
***************
*** 2537,2542 ****
  
  #if defined(CM_LG_ENCODE_OBJECT_NAMES)
!     cmLocalGeneratorCheckObjectName(ssin, dir_max.size(),
!                                     this->ObjectPathMax);
  #else
      (void)dir_max;
--- 2538,2561 ----
  
  #if defined(CM_LG_ENCODE_OBJECT_NAMES)
!     if(!cmLocalGeneratorCheckObjectName(ssin, dir_max.size(),
!                                         this->ObjectPathMax))
!       {
!       // Warn if this is the first time the path has been seen.
!       if(this->ObjectMaxPathViolations.insert(dir_max).second)
!         {
!         cmOStringStream m;
!         m << "The object file directory\n"
!           << "  " << dir_max << "\n"
!           << "has " << dir_max.size() << " characters.  "
!           << "The maximum full path to an object file is "
!           << this->ObjectPathMax << " characters "
!           << "(see CMAKE_OBJECT_PATH_MAX).  "
!           << "Object file\n"
!           << "  " << ssin << "\n"
!           << "cannot be safely placed under this directory.  "
!           << "The build may not work correctly.";
!         this->Makefile->IssueMessage(cmake::WARNING, m.str());
!         }
!       }
  #else
      (void)dir_max;

Index: cmLocalGenerator.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLocalGenerator.h,v
retrieving revision 1.107
retrieving revision 1.108
diff -C 2 -d -r1.107 -r1.108
*** cmLocalGenerator.h	16 Dec 2008 14:14:40 -0000	1.107
--- cmLocalGenerator.h	16 Dec 2008 14:15:18 -0000	1.108
***************
*** 371,374 ****
--- 371,375 ----
    std::map<cmStdString, cmStdString> UniqueObjectNamesMap;
    std::string::size_type ObjectPathMax;
+   std::set<cmStdString> ObjectMaxPathViolations;
    bool WindowsShell;
    bool WindowsVSIDE;



More information about the Cmake-commits mailing list