Sfoglia il codice sorgente

ENH: Use CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES from platform files to block link directories.

Brad King 18 anni fa
parent
commit
92c0f41251
2 ha cambiato i file con 17 aggiunte e 3 eliminazioni
  1. 6 0
      Modules/Platform/UnixPaths.cmake
  2. 11 3
      Source/cmLocalGenerator.cxx

+ 6 - 0
Modules/Platform/UnixPaths.cmake

@@ -31,3 +31,9 @@ SET(CMAKE_SYSTEM_LIBRARY_PATH ${CMAKE_SYSTEM_LIBRARY_PATH}
 SET(CMAKE_SYSTEM_PROGRAM_PATH ${CMAKE_SYSTEM_PROGRAM_PATH}
   /bin /usr/bin /usr/local/bin /usr/pkg/bin /sbin
   )
+
+SET(CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES
+  ${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}
+  /lib /usr/lib /usr/lib32 /usr/lib64
+  )
+

+ 11 - 3
Source/cmLocalGenerator.cxx

@@ -1512,9 +1512,17 @@ void cmLocalGenerator::OutputLinkLibraries(std::ostream& fout,
 
   // Some search paths should never be emitted
   emitted.insert("");
-  emitted.insert("/usr/lib");
-  emitted.insert("/usr/lib32");
-  emitted.insert("/usr/lib64");
+  if(const char* implicitLinks =
+     (this->Makefile->GetDefinition
+      ("CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES")))
+    {
+    std::vector<std::string> implicitLinkVec;
+    cmSystemTools::ExpandListArgument(implicitLinks, implicitLinkVec);
+    for(unsigned int k = 0; k < implicitLinkVec.size(); ++k)
+      {
+      emitted.insert(implicitLinkVec[k]);
+      }
+    }
   std::string libPathFlag = 
     this->Makefile->GetRequiredDefinition("CMAKE_LIBRARY_PATH_FLAG");
   std::string libLinkFlag =