[Cmake-commits] [cmake-commits] king committed cmFindPackageCommand.cxx 1.40 1.41 cmFindPackageCommand.h 1.21 1.22

cmake-commits at cmake.org cmake-commits at cmake.org
Tue Aug 12 19:01:06 EDT 2008


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

Modified Files:
	cmFindPackageCommand.cxx cmFindPackageCommand.h 
Log Message:
ENH: Teach find_package about lib64 paths

When find_package is about to look in <prefix>/lib, search first in
<prefix>/lib64 in cases that find_library would use lib64 paths.


Index: cmFindPackageCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFindPackageCommand.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -C 2 -d -r1.21 -r1.22
*** cmFindPackageCommand.h	9 Jun 2008 19:08:59 -0000	1.21
--- cmFindPackageCommand.h	12 Aug 2008 23:01:04 -0000	1.22
***************
*** 125,128 ****
--- 125,129 ----
    bool NoBuilds;
    bool DebugMode;
+   bool UseLib64Paths;
    std::vector<std::string> Names;
    std::vector<std::string> Configs;

Index: cmFindPackageCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFindPackageCommand.cxx,v
retrieving revision 1.40
retrieving revision 1.41
diff -C 2 -d -r1.40 -r1.41
*** cmFindPackageCommand.cxx	9 Jun 2008 19:22:09 -0000	1.40
--- cmFindPackageCommand.cxx	12 Aug 2008 23:01:04 -0000	1.41
***************
*** 64,67 ****
--- 64,68 ----
    this->NoModule = false;
    this->DebugMode = false;
+   this->UseLib64Paths = false;
    this->VersionMajor = 0;
    this->VersionMinor = 0;
***************
*** 299,302 ****
--- 300,315 ----
    this->DebugMode = this->Makefile->IsOn("CMAKE_FIND_DEBUG_MODE");
  
+   // Lookup whether lib64 paths should be used.
+   if(const char* sizeof_dptr =
+      this->Makefile->GetDefinition("CMAKE_SIZEOF_VOID_P"))
+     {
+     if(atoi(sizeof_dptr) == 8 &&
+        this->Makefile->GetCMakeInstance()
+        ->GetPropertyAsBool("FIND_LIBRARY_USE_LIB64_PATHS"))
+       {
+       this->UseLib64Paths = true;
+       }
+     }
+ 
    // Find the current root path mode.
    this->SelectDefaultRootPathMode();
***************
*** 1458,1471 ****
  {
  public:
!   cmFileListGeneratorEnumerate(const char* p1, const char* p2):
!     cmFileListGeneratorBase()
!     {
!     this->Vector.push_back(p1);
!     this->Vector.push_back(p2);
!     }
    cmFileListGeneratorEnumerate(cmFileListGeneratorEnumerate const& r):
      cmFileListGeneratorBase(), Vector(r.Vector) {}
  private:
!   std::vector<std::string> Vector;
    virtual bool Search(std::string const& parent, cmFileList& lister)
      {
--- 1471,1480 ----
  {
  public:
!   cmFileListGeneratorEnumerate(std::vector<std::string> const& v):
!     cmFileListGeneratorBase(), Vector(v) {}
    cmFileListGeneratorEnumerate(cmFileListGeneratorEnumerate const& r):
      cmFileListGeneratorBase(), Vector(r.Vector) {}
  private:
!   std::vector<std::string> const& Vector;
    virtual bool Search(std::string const& parent, cmFileList& lister)
      {
***************
*** 1717,1720 ****
--- 1726,1738 ----
    }
  
+   // Construct list of common install locations (lib and share).
+   std::vector<std::string> common;
+   if(this->UseLib64Paths)
+     {
+     common.push_back("lib64");
+     }
+   common.push_back("lib");
+   common.push_back("share");
+ 
    //  PREFIX/(share|lib)/(Foo|foo|FOO).*/
    {
***************
*** 1722,1726 ****
    lister
      / cmFileListGeneratorFixed(prefix)
!     / cmFileListGeneratorEnumerate("lib", "share")
      / cmFileListGeneratorProject(this->Names);
    if(lister.Search())
--- 1740,1744 ----
    lister
      / cmFileListGeneratorFixed(prefix)
!     / cmFileListGeneratorEnumerate(common)
      / cmFileListGeneratorProject(this->Names);
    if(lister.Search())
***************
*** 1735,1739 ****
    lister
      / cmFileListGeneratorFixed(prefix)
!     / cmFileListGeneratorEnumerate("lib", "share")
      / cmFileListGeneratorProject(this->Names)
      / cmFileListGeneratorCaseInsensitive("cmake");
--- 1753,1757 ----
    lister
      / cmFileListGeneratorFixed(prefix)
!     / cmFileListGeneratorEnumerate(common)
      / cmFileListGeneratorProject(this->Names)
      / cmFileListGeneratorCaseInsensitive("cmake");



More information about the Cmake-commits mailing list