summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2007-06-27 16:07:34 (GMT)
committerBrad King <brad.king@kitware.com>2007-06-27 16:07:34 (GMT)
commiteab81489f10049fc1e97f65779adbca160fccf16 (patch)
treeeb40ef1065176de3b83865b9d0f0d3d8b4701a1c
parent6352bd5cd34be913415303f078cd02b32b1b4e41 (diff)
downloadCMake-eab81489f10049fc1e97f65779adbca160fccf16.zip
CMake-eab81489f10049fc1e97f65779adbca160fccf16.tar.gz
CMake-eab81489f10049fc1e97f65779adbca160fccf16.tar.bz2
ENH: Added global property FIND_LIBRARY_USE_LIB64_PATHS to allow lib64 paths to be searched optionally. Turn off the feature on debian systems. This addresses debian report 419007.
-rw-r--r--Modules/Platform/Linux.cmake6
-rw-r--r--Modules/Platform/UnixPaths.cmake2
-rw-r--r--Source/cmFindLibraryCommand.cxx10
-rw-r--r--Source/cmake.cxx7
4 files changed, 23 insertions, 2 deletions
diff --git a/Modules/Platform/Linux.cmake b/Modules/Platform/Linux.cmake
index 5378a9c..4de71d0 100644
--- a/Modules/Platform/Linux.cmake
+++ b/Modules/Platform/Linux.cmake
@@ -48,3 +48,9 @@ ELSE(DEFINED CMAKE_INSTALL_SO_NO_EXE)
ENDIF(DEFINED CMAKE_INSTALL_SO_NO_EXE)
INCLUDE(Platform/UnixPaths)
+
+# Debian has lib64 paths only for compatibility so they should not be
+# searched.
+IF(EXISTS "/etc/debian_version")
+ SET_PROPERTIES(GLOBAL PROPERTIES FIND_LIBRARY_USE_LIB64_PATHS FALSE)
+ENDIF(EXISTS "/etc/debian_version")
diff --git a/Modules/Platform/UnixPaths.cmake b/Modules/Platform/UnixPaths.cmake
index cc1a9cd..c081407 100644
--- a/Modules/Platform/UnixPaths.cmake
+++ b/Modules/Platform/UnixPaths.cmake
@@ -37,3 +37,5 @@ SET(CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES
/lib /usr/lib /usr/lib32 /usr/lib64
)
+# Enable use of lib64 search path variants by default.
+SET_PROPERTIES(GLOBAL PROPERTIES FIND_LIBRARY_USE_LIB64_PATHS TRUE)
diff --git a/Source/cmFindLibraryCommand.cxx b/Source/cmFindLibraryCommand.cxx
index c57e8d8..5fcf089 100644
--- a/Source/cmFindLibraryCommand.cxx
+++ b/Source/cmFindLibraryCommand.cxx
@@ -67,8 +67,14 @@ bool cmFindLibraryCommand::InitialPass(std::vector<std::string> const& argsIn)
}
return true;
}
- // add special 64 bit paths if this is a 64 bit compile.
- this->AddLib64Paths();
+
+ if(this->Makefile->GetCMakeInstance()
+ ->GetPropertyAsBool("FIND_LIBRARY_USE_LIB64_PATHS"))
+ {
+ // add special 64 bit paths if this is a 64 bit compile.
+ this->AddLib64Paths();
+ }
+
std::string library;
for(std::vector<std::string>::iterator i = this->Names.begin();
i != this->Names.end() ; ++i)
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index b6efa10..7bec758 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -2940,6 +2940,13 @@ void cmake::DefineProperties(cmake *cm)
"platform supports shared libraries. Basically all current general "
"general purpose OS do so, the exception are usually embedded systems "
"with no or special OSs.");
+ cm->DefineProperty
+ ("FIND_LIBRARY_USE_LIB64_PATHS", cmProperty::GLOBAL,
+ "Whether FIND_LIBRARY should automatically search lib64 directories.",
+ "FIND_LIBRARY_USE_LIB64_PATHS is a boolean specifying whether the "
+ "FIND_LIBRARY command should automatically search the lib64 variant of "
+ "directories called lib in the search path when building 64-bit "
+ "binaries.");
}