diff options
Diffstat (limited to 'cmake/modules/FindZLIB.cmake')
-rw-r--r-- | cmake/modules/FindZLIB.cmake | 91 |
1 files changed, 46 insertions, 45 deletions
diff --git a/cmake/modules/FindZLIB.cmake b/cmake/modules/FindZLIB.cmake index ceeea6d0d2..28b4b4bbe9 100644 --- a/cmake/modules/FindZLIB.cmake +++ b/cmake/modules/FindZLIB.cmake @@ -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() + 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. + # inflatePrime was added in zlib 1.2.2.4 in 2005. We're guaranteed + # to have it on Windows. # - 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)?") + 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() - |