Don't look for zlib stuff if we didn't find zlib.

If we didn't find zlib, don't look for its version number in zlib.h, and
don't look for inflate() or inflatePrime() in the library.

Trim off some trailing blank lines while we're at it.

Change-Id: I834a9a76928a00cf5e182bd4224ebc91d36d69a4
Reviewed-on: https://code.wireshark.org/review/32973
Reviewed-by: Guy Harris <guy@alum.mit.edu>
This commit is contained in:
Guy Harris 2019-04-24 18:33:26 -07:00
parent f75d841ad2
commit c66994215b
1 changed files with 49 additions and 48 deletions

View File

@ -68,57 +68,59 @@ if (NOT ZLIB_INCLUDE_DIR OR NOT ZLIB_LIBRARY)
endif()
MARK_AS_ADVANCED(ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
IF(ZLIB_INCLUDE_DIR AND EXISTS "${ZLIB_INCLUDE_DIR}/zlib.h")
FILE(STRINGS "${ZLIB_INCLUDE_DIR}/zlib.h" ZLIB_H REGEX "^#define ZLIB_VERSION \"[^\"]*\"$")
if(ZLIB_FOUND)
IF(ZLIB_INCLUDE_DIR AND EXISTS "${ZLIB_INCLUDE_DIR}/zlib.h")
FILE(STRINGS "${ZLIB_INCLUDE_DIR}/zlib.h" ZLIB_H REGEX "^#define ZLIB_VERSION \"[^\"]*\"$")
STRING(REGEX REPLACE "^.*ZLIB_VERSION \"([0-9]+).*$" "\\1" ZLIB_VERSION_MAJOR "${ZLIB_H}")
STRING(REGEX REPLACE "^.*ZLIB_VERSION \"[0-9]+\\.([0-9]+).*$" "\\1" ZLIB_VERSION_MINOR "${ZLIB_H}")
STRING(REGEX REPLACE "^.*ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" ZLIB_VERSION_PATCH "${ZLIB_H}")
SET(ZLIB_VERSION_STRING "${ZLIB_VERSION_MAJOR}.${ZLIB_VERSION_MINOR}.${ZLIB_VERSION_PATCH}")
STRING(REGEX REPLACE "^.*ZLIB_VERSION \"([0-9]+).*$" "\\1" ZLIB_VERSION_MAJOR "${ZLIB_H}")
STRING(REGEX REPLACE "^.*ZLIB_VERSION \"[0-9]+\\.([0-9]+).*$" "\\1" ZLIB_VERSION_MINOR "${ZLIB_H}")
STRING(REGEX REPLACE "^.*ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" ZLIB_VERSION_PATCH "${ZLIB_H}")
SET(ZLIB_VERSION_STRING "${ZLIB_VERSION_MAJOR}.${ZLIB_VERSION_MINOR}.${ZLIB_VERSION_PATCH}")
# only append a TWEAK version if it exists:
SET(ZLIB_VERSION_TWEAK "")
IF( "${ZLIB_H}" MATCHES "^.*ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.[0-9]+\\.([0-9]+).*$")
SET(ZLIB_VERSION_TWEAK "${CMAKE_MATCH_1}")
SET(ZLIB_VERSION_STRING "${ZLIB_VERSION_STRING}.${ZLIB_VERSION_TWEAK}")
ENDIF( "${ZLIB_H}" MATCHES "^.*ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.[0-9]+\\.([0-9]+).*$")
# only append a TWEAK version if it exists:
SET(ZLIB_VERSION_TWEAK "")
IF( "${ZLIB_H}" MATCHES "^.*ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.[0-9]+\\.([0-9]+).*$")
SET(ZLIB_VERSION_TWEAK "${CMAKE_MATCH_1}")
SET(ZLIB_VERSION_STRING "${ZLIB_VERSION_STRING}.${ZLIB_VERSION_TWEAK}")
ENDIF( "${ZLIB_H}" MATCHES "^.*ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.[0-9]+\\.([0-9]+).*$")
SET(ZLIB_MAJOR_VERSION "${ZLIB_VERSION_MAJOR}")
SET(ZLIB_MINOR_VERSION "${ZLIB_VERSION_MINOR}")
SET(ZLIB_PATCH_VERSION "${ZLIB_VERSION_PATCH}")
ENDIF()
#
# inflatePrime was added in zlib 1.2.2.4 in 2005. We're guaranteed
# to have it on Windows.
#
IF(WIN32)
SET(HAVE_INFLATEPRIME ON)
ELSE()
INCLUDE(CMakePushCheckState)
INCLUDE(CheckFunctionExists)
CMAKE_PUSH_CHECK_STATE()
set(CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIR})
set(CMAKE_REQUIRED_LIBRARIES ${ZLIB_LIBRARY})
#
# Check for inflate() in zlib, to make sure the zlib library is
# usable.
#
# For example, on at least some versions of Fedora, if you have a
# 64-bit machine, have both the 32-bit and 64-bit versions of the
# run-time zlib package installed, and have only the *32-bit*
# version of the zlib development package installed, it'll find the
# header, and think it can use zlib, and will use it in subsequent
# tests, but it'll try and link 64-bit test programs with the 32-bit
# library, causing those tests to falsely fail. Hilarity ensues.
#
CHECK_FUNCTION_EXISTS("inflate" HAVE_INFLATE)
IF(NOT HAVE_INFLATE)
MESSAGE(FATAL_ERROR "zlib.h found but linking with -lz failed to find inflate(); do you have the right developer package installed (32-bit vs. 64-bit)?")
SET(ZLIB_MAJOR_VERSION "${ZLIB_VERSION_MAJOR}")
SET(ZLIB_MINOR_VERSION "${ZLIB_VERSION_MINOR}")
SET(ZLIB_PATCH_VERSION "${ZLIB_VERSION_PATCH}")
ENDIF()
#
# inflatePrime was added in zlib 1.2.2.4 in 2005. We're guaranteed
# to have it on Windows.
#
IF(WIN32)
SET(HAVE_INFLATEPRIME ON)
ELSE()
INCLUDE(CMakePushCheckState)
INCLUDE(CheckFunctionExists)
CMAKE_PUSH_CHECK_STATE()
set(CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIR})
set(CMAKE_REQUIRED_LIBRARIES ${ZLIB_LIBRARY})
#
# Check for inflate() in zlib, to make sure the zlib library is
# usable.
#
# For example, on at least some versions of Fedora, if you have a
# 64-bit machine, have both the 32-bit and 64-bit versions of the
# run-time zlib package installed, and have only the *32-bit*
# version of the zlib development package installed, it'll find the
# header, and think it can use zlib, and will use it in subsequent
# tests, but it'll try and link 64-bit test programs with the 32-bit
# library, causing those tests to falsely fail. Hilarity ensues.
#
CHECK_FUNCTION_EXISTS("inflate" HAVE_INFLATE)
IF(NOT HAVE_INFLATE)
MESSAGE(FATAL_ERROR "zlib.h found but linking with -lz failed to find inflate(); do you have the right developer package installed (32-bit vs. 64-bit)?")
ENDIF()
CHECK_FUNCTION_EXISTS("inflatePrime" HAVE_INFLATEPRIME)
# reset
CMAKE_POP_CHECK_STATE()
ENDIF()
CHECK_FUNCTION_EXISTS("inflatePrime" HAVE_INFLATEPRIME)
# reset
CMAKE_POP_CHECK_STATE()
ENDIF()
# handle the QUIETLY and REQUIRED arguments and set ZLIB_FOUND to TRUE if
@ -138,4 +140,3 @@ ELSE()
SET(ZLIB_DLL )
SET(ZLIB_PDB )
ENDIF()