mirror of
https://github.com/MariaDB/server.git
synced 2025-01-28 17:54:16 +01:00
55cb2c2916
`FindZLIB` module uses variable `ZLIB_ROOT`[1] to look for libraries. By setting the variable, `FindZLIB` is able to search the libraries that installed in a non-system path (/workspace/mylib for example). And when using `z` in `LINK_LIBRARIES()` CMake tries to lookup the library in system path by default. It doesn't work if the library isn't installed in the path, and use ${ZLIB_LIBRARY} which set by FindZLIB solve the issue. All new code of the whole pull request, including one or several files that are either new files or modified ones, are contributed under the BSD-new license. I am contributing on behalf of my employer Amazon Web Services. [1]: https://cmake.org/cmake/help/latest/module/FindZLIB.html#hints
66 lines
2.4 KiB
CMake
66 lines
2.4 KiB
CMake
# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; version 2 of the License.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA
|
|
|
|
MACRO (MYSQL_USE_BUNDLED_ZLIB)
|
|
SET(ZLIB_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/zlib ${CMAKE_BINARY_DIR}/zlib)
|
|
SET(BUILD_BUNDLED_ZLIB 1)
|
|
SET(ZLIB_LIBRARY zlib CACHE INTERNAL "Bundled zlib library")
|
|
SET(ZLIB_FOUND TRUE)
|
|
SET(WITH_ZLIB "bundled" CACHE STRING "Use bundled zlib")
|
|
ADD_SUBDIRECTORY(zlib)
|
|
ENDMACRO()
|
|
|
|
# MYSQL_CHECK_ZLIB_WITH_COMPRESS
|
|
#
|
|
# Provides the following configure options:
|
|
# WITH_ZLIB_BUNDLED
|
|
# If this is set,we use bundled zlib
|
|
# If this is not set,search for system zlib.
|
|
# if system zlib is not found, use bundled copy
|
|
# ZLIB_LIBRARIES, ZLIB_INCLUDE_DIR and ZLIB_SOURCES
|
|
# are set after this macro has run
|
|
|
|
MACRO (MYSQL_CHECK_ZLIB_WITH_COMPRESS)
|
|
|
|
IF(WITH_ZLIB STREQUAL "bundled")
|
|
MYSQL_USE_BUNDLED_ZLIB()
|
|
ELSE()
|
|
FIND_PACKAGE(PkgConfig QUIET)
|
|
IF(PKG_CONFIG_FOUND AND (COMMAND PKG_GET_VARIABLE) AND (NOT WIN32))
|
|
PKG_GET_VARIABLE(ZLIB_ROOT zlib prefix)
|
|
ENDIF()
|
|
FIND_PACKAGE(ZLIB)
|
|
IF(ZLIB_FOUND)
|
|
INCLUDE(CheckFunctionExists)
|
|
SET(CMAKE_REQUIRED_LIBRARIES ${ZLIB_LIBRARIES})
|
|
CHECK_FUNCTION_EXISTS(crc32 HAVE_CRC32)
|
|
CHECK_FUNCTION_EXISTS(compressBound HAVE_COMPRESSBOUND)
|
|
CHECK_FUNCTION_EXISTS(deflateBound HAVE_DEFLATEBOUND)
|
|
SET(CMAKE_REQUIRED_LIBRARIES)
|
|
IF(HAVE_CRC32 AND HAVE_COMPRESSBOUND AND HAVE_DEFLATEBOUND)
|
|
SET(WITH_ZLIB "system" CACHE STRING
|
|
"Which zlib to use (possible values are 'bundled' or 'system')")
|
|
SET(ZLIB_SOURCES "")
|
|
ELSE()
|
|
SET(ZLIB_FOUND FALSE CACHE INTERNAL "Zlib found but not usable")
|
|
MESSAGE(STATUS "system zlib found but not usable")
|
|
ENDIF()
|
|
ENDIF()
|
|
IF(NOT ZLIB_FOUND)
|
|
MYSQL_USE_BUNDLED_ZLIB()
|
|
ENDIF()
|
|
ENDIF()
|
|
SET(HAVE_COMPRESS 1)
|
|
ENDMACRO()
|