summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2011-11-30 13:40:58 (GMT)
committerBrad King <brad.king@kitware.com>2011-11-30 18:18:07 (GMT)
commit985dee4f548451745b6065fd4c23aad9e2ce117b (patch)
tree590a279b753664ad29a18aa08e2becc64e478ec7
parent17388037fdf435295dac220a482a16b05c621a19 (diff)
downloadCMake-985dee4f548451745b6065fd4c23aad9e2ce117b.zip
CMake-985dee4f548451745b6065fd4c23aad9e2ce117b.tar.gz
CMake-985dee4f548451745b6065fd4c23aad9e2ce117b.tar.bz2
FindZLIB: Search under ZLIB_ROOT if it is set
Perform multiple separate searches in order. If ZLIB_ROOT is set search it exclusively so it takes precedence over CMAKE_PREFIX_PATH. This allows a user to provide -DZLIB_ROOT=/path/to/zlib/prefix on the CMake command line to tell it exactly where to find zlib. Otherwise fall back to a normal search. Inspired-by: Andreas Schneider <asn@cryptomilk.org>
-rw-r--r--Modules/FindZLIB.cmake35
1 files changed, 25 insertions, 10 deletions
diff --git a/Modules/FindZLIB.cmake b/Modules/FindZLIB.cmake
index 77f9fda..166e291 100644
--- a/Modules/FindZLIB.cmake
+++ b/Modules/FindZLIB.cmake
@@ -17,9 +17,12 @@
# ZLIB_MAJOR_VERSION - The major version of zlib
# ZLIB_MINOR_VERSION - The minor version of zlib
# ZLIB_PATCH_VERSION - The patch version of zlib
+#
+# An includer may set ZLIB_ROOT to a zlib installation root to tell
+# this module where to look.
#=============================================================================
-# Copyright 2001-2009 Kitware, Inc.
+# Copyright 2001-2011 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
@@ -31,17 +34,29 @@
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
-FIND_PATH(ZLIB_INCLUDE_DIR zlib.h
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Zlib;InstallPath]/include"
-)
+SET(_ZLIB_SEARCHES)
+
+# Search ZLIB_ROOT first if it is set.
+IF(ZLIB_ROOT)
+ SET(_ZLIB_SEARCH_ROOT PATHS ${ZLIB_ROOT} NO_DEFAULT_PATH)
+ LIST(APPEND _ZLIB_SEARCHES _ZLIB_SEARCH_ROOT)
+ENDIF()
+
+# Normal search.
+SET(_ZLIB_SEARCH_NORMAL
+ PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Zlib;InstallPath]"
+ "$ENV{PROGRAMFILES}/zlib"
+ )
+LIST(APPEND _ZLIB_SEARCHES _ZLIB_SEARCH_NORMAL)
SET(ZLIB_NAMES z zlib zdll zlib1 zlibd zlibd1)
-FIND_LIBRARY(ZLIB_LIBRARY
- NAMES
- ${ZLIB_NAMES}
- PATHS
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Zlib;InstallPath]/lib"
-)
+
+# Try each search configuration.
+FOREACH(search ${_ZLIB_SEARCHES})
+ FIND_PATH(ZLIB_INCLUDE_DIR NAMES zlib.h ${${search}} PATH_SUFFIXES include)
+ FIND_LIBRARY(ZLIB_LIBRARY NAMES ${ZLIB_NAMES} ${${search}} PATH_SUFFIXES lib)
+ENDFOREACH()
+
MARK_AS_ADVANCED(ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
IF(ZLIB_INCLUDE_DIR AND EXISTS "${ZLIB_INCLUDE_DIR}/zlib.h")