diff options
author | Brad King <brad.king@kitware.com> | 2011-11-30 13:40:58 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2011-11-30 18:18:07 (GMT) |
commit | 985dee4f548451745b6065fd4c23aad9e2ce117b (patch) | |
tree | 590a279b753664ad29a18aa08e2becc64e478ec7 | |
parent | 17388037fdf435295dac220a482a16b05c621a19 (diff) | |
download | CMake-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.cmake | 35 |
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") |