Skip to content

Latest commit

 

History

History
239 lines (195 loc) · 7.19 KB

FindZLIB.cmake

File metadata and controls

239 lines (195 loc) · 7.19 KB
 
Sep 27, 2016
Sep 27, 2016
1
2
3
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
Oct 22, 2018
Oct 22, 2018
4
5
6
7
8
9
#[=======================================================================[.rst:
FindZLIB
--------
Find the native ZLIB includes and library.
Jan 31, 2025
Jan 31, 2025
10
Imported Targets
Oct 22, 2018
Oct 22, 2018
11
12
^^^^^^^^^^^^^^^^
Dec 2, 2020
Dec 2, 2020
13
14
.. versionadded:: 3.1
Oct 22, 2018
Oct 22, 2018
15
16
17
18
19
20
21
22
This module defines :prop_tgt:`IMPORTED` target ``ZLIB::ZLIB``, if
ZLIB has been found.
Result Variables
^^^^^^^^^^^^^^^^
This module defines the following variables:
Nov 7, 2022
Nov 7, 2022
23
24
25
26
27
28
29
30
31
32
33
``ZLIB_INCLUDE_DIRS``
where to find zlib.h, etc.
``ZLIB_LIBRARIES``
List of libraries when using zlib.
``ZLIB_FOUND``
True if zlib found.
``ZLIB_VERSION``
.. versionadded:: 3.26
the version of Zlib found.
See also legacy variable ``ZLIB_VERSION_STRING``.
Oct 22, 2018
Oct 22, 2018
34
Nov 7, 2022
Nov 7, 2022
35
36
.. versionadded:: 3.4
Debug and Release variants are found separately.
Oct 22, 2018
Oct 22, 2018
37
Nov 7, 2022
Nov 7, 2022
38
39
Legacy Variables
^^^^^^^^^^^^^^^^
Oct 22, 2018
Oct 22, 2018
40
Nov 7, 2022
Nov 7, 2022
41
The following variables are provided for backward compatibility:
Oct 22, 2018
Oct 22, 2018
42
Nov 7, 2022
Nov 7, 2022
43
44
45
46
47
48
49
``ZLIB_VERSION_MAJOR``
The major version of zlib.
.. versionchanged:: 3.26
Superseded by ``ZLIB_VERSION``.
``ZLIB_VERSION_MINOR``
The minor version of zlib.
Dec 2, 2020
Dec 2, 2020
50
Nov 7, 2022
Nov 7, 2022
51
52
53
54
.. versionchanged:: 3.26
Superseded by ``ZLIB_VERSION``.
``ZLIB_VERSION_PATCH``
The patch version of zlib.
Oct 22, 2018
Oct 22, 2018
55
Nov 7, 2022
Nov 7, 2022
56
57
58
59
.. versionchanged:: 3.26
Superseded by ``ZLIB_VERSION``.
``ZLIB_VERSION_TWEAK``
The tweak version of zlib.
Oct 22, 2018
Oct 22, 2018
60
Nov 7, 2022
Nov 7, 2022
61
62
63
64
.. versionchanged:: 3.26
Superseded by ``ZLIB_VERSION``.
``ZLIB_VERSION_STRING``
The version of zlib found (x.y.z)
Oct 22, 2018
Oct 22, 2018
65
Nov 7, 2022
Nov 7, 2022
66
67
68
69
70
71
72
73
.. versionchanged:: 3.26
Superseded by ``ZLIB_VERSION``.
``ZLIB_MAJOR_VERSION``
The major version of zlib. Superseded by ``ZLIB_VERSION_MAJOR``.
``ZLIB_MINOR_VERSION``
The minor version of zlib. Superseded by ``ZLIB_VERSION_MINOR``.
``ZLIB_PATCH_VERSION``
The patch version of zlib. Superseded by ``ZLIB_VERSION_PATCH``.
Oct 22, 2018
Oct 22, 2018
74
75
76
77
78
79
Hints
^^^^^
A user may set ``ZLIB_ROOT`` to a zlib installation root to tell this
module where to look.
Mar 12, 2022
Mar 12, 2022
80
81
82
83
84
.. versionadded:: 3.24
Set ``ZLIB_USE_STATIC_LIBS`` to ``ON`` to look for static libraries.
Default is ``OFF``.
Oct 22, 2018
Oct 22, 2018
85
#]=======================================================================]
Sep 2, 2002
Sep 2, 2002
86
Mar 29, 2024
Mar 29, 2024
87
88
89
cmake_policy(PUSH)
cmake_policy(SET CMP0159 NEW) # file(STRINGS) with REGEX updates CMAKE_MATCH_<n>
Oct 12, 2022
Oct 12, 2022
90
91
92
93
94
95
96
97
if(ZLIB_FIND_COMPONENTS AND NOT ZLIB_FIND_QUIETLY)
message(AUTHOR_WARNING
"ZLIB does not provide any COMPONENTS. Calling\n"
" find_package(ZLIB COMPONENTS ...)\n"
"will always fail."
)
endif()
Aug 13, 2012
Aug 13, 2012
98
set(_ZLIB_SEARCHES)
Nov 30, 2011
Nov 30, 2011
99
100
# Search ZLIB_ROOT first if it is set.
Aug 13, 2012
Aug 13, 2012
101
102
103
104
if(ZLIB_ROOT)
set(_ZLIB_SEARCH_ROOT PATHS ${ZLIB_ROOT} NO_DEFAULT_PATH)
list(APPEND _ZLIB_SEARCHES _ZLIB_SEARCH_ROOT)
endif()
Nov 30, 2011
Nov 30, 2011
105
106
# Normal search.
Aug 24, 2018
Aug 24, 2018
107
set(_ZLIB_x86 "(x86)")
Aug 13, 2012
Aug 13, 2012
108
set(_ZLIB_SEARCH_NORMAL
Aug 24, 2018
Aug 24, 2018
109
110
111
112
PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Zlib;InstallPath]"
"$ENV{ProgramFiles}/zlib"
"$ENV{ProgramFiles${_ZLIB_x86}}/zlib")
unset(_ZLIB_x86)
Aug 13, 2012
Aug 13, 2012
113
list(APPEND _ZLIB_SEARCHES _ZLIB_SEARCH_NORMAL)
Sep 2, 2002
Sep 2, 2002
114
May 13, 2022
May 13, 2022
115
116
117
118
119
120
121
if(ZLIB_USE_STATIC_LIBS)
set(ZLIB_NAMES zlibstatic zlibstat zlib z)
set(ZLIB_NAMES_DEBUG zlibstaticd zlibstatd zlibd zd)
else()
set(ZLIB_NAMES z zlib zdll zlib1 zlibstatic zlibwapi zlibvc zlibstat)
set(ZLIB_NAMES_DEBUG zd zlibd zdlld zlibd1 zlib1d zlibstaticd zlibwapid zlibvcd zlibstatd)
endif()
Nov 30, 2011
Nov 30, 2011
122
123
# Try each search configuration.
Aug 13, 2012
Aug 13, 2012
124
foreach(search ${_ZLIB_SEARCHES})
Sep 2, 2015
Sep 2, 2015
125
find_path(ZLIB_INCLUDE_DIR NAMES zlib.h ${${search}} PATH_SUFFIXES include)
Aug 13, 2012
Aug 13, 2012
126
endforeach()
Nov 30, 2011
Nov 30, 2011
127
Sep 2, 2015
Sep 2, 2015
128
129
# Allow ZLIB_LIBRARY to be set manually, as the location of the zlib library
if(NOT ZLIB_LIBRARY)
Sep 6, 2022
Sep 6, 2022
130
131
132
133
134
135
136
137
138
139
if(DEFINED CMAKE_FIND_LIBRARY_PREFIXES)
set(_zlib_ORIG_CMAKE_FIND_LIBRARY_PREFIXES "${CMAKE_FIND_LIBRARY_PREFIXES}")
else()
set(_zlib_ORIG_CMAKE_FIND_LIBRARY_PREFIXES)
endif()
if(DEFINED CMAKE_FIND_LIBRARY_SUFFIXES)
set(_zlib_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES "${CMAKE_FIND_LIBRARY_SUFFIXES}")
else()
set(_zlib_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES)
endif()
May 13, 2022
May 13, 2022
140
141
142
143
144
# Prefix/suffix of the win32/Makefile.gcc build
if(WIN32)
list(APPEND CMAKE_FIND_LIBRARY_PREFIXES "" "lib")
list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a")
endif()
Mar 12, 2022
Mar 12, 2022
145
146
147
148
149
150
151
152
153
# Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES
if(ZLIB_USE_STATIC_LIBS)
if(WIN32)
set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
else()
set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
endif()
endif()
Sep 2, 2015
Sep 2, 2015
154
foreach(search ${_ZLIB_SEARCHES})
Feb 15, 2018
Feb 15, 2018
155
156
find_library(ZLIB_LIBRARY_RELEASE NAMES ${ZLIB_NAMES} NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib)
find_library(ZLIB_LIBRARY_DEBUG NAMES ${ZLIB_NAMES_DEBUG} NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib)
Sep 2, 2015
Sep 2, 2015
157
158
endforeach()
Mar 12, 2022
Mar 12, 2022
159
# Restore the original find library ordering
Sep 6, 2022
Sep 6, 2022
160
161
162
163
164
165
166
167
168
169
if(DEFINED _zlib_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES)
set(CMAKE_FIND_LIBRARY_SUFFIXES "${_zlib_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}")
else()
set(CMAKE_FIND_LIBRARY_SUFFIXES)
endif()
if(DEFINED _zlib_ORIG_CMAKE_FIND_LIBRARY_PREFIXES)
set(CMAKE_FIND_LIBRARY_PREFIXES "${_zlib_ORIG_CMAKE_FIND_LIBRARY_PREFIXES}")
else()
set(CMAKE_FIND_LIBRARY_PREFIXES)
endif()
Mar 12, 2022
Mar 12, 2022
170
Sep 2, 2015
Sep 2, 2015
171
172
173
174
175
176
177
include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
select_library_configurations(ZLIB)
endif()
unset(ZLIB_NAMES)
unset(ZLIB_NAMES_DEBUG)
Jun 21, 2016
Jun 21, 2016
178
mark_as_advanced(ZLIB_INCLUDE_DIR)
Oct 30, 2009
Oct 30, 2009
179
Aug 13, 2012
Aug 13, 2012
180
if(ZLIB_INCLUDE_DIR AND EXISTS "${ZLIB_INCLUDE_DIR}/zlib.h")
Aug 22, 2023
Aug 22, 2023
181
182
183
184
185
186
187
188
189
190
191
192
file(STRINGS "${ZLIB_INCLUDE_DIR}/zlib.h" ZLIB_H REGEX "^#define ZLIB_VERSION \"[^\"]*\"$")
if(ZLIB_H MATCHES "ZLIB_VERSION \"(([0-9]+)\\.([0-9]+)(\\.([0-9]+)(\\.([0-9]+))?)?)")
set(ZLIB_VERSION_STRING "${CMAKE_MATCH_1}")
set(ZLIB_VERSION_MAJOR "${CMAKE_MATCH_2}")
set(ZLIB_VERSION_MINOR "${CMAKE_MATCH_3}")
set(ZLIB_VERSION_PATCH "${CMAKE_MATCH_5}")
set(ZLIB_VERSION_TWEAK "${CMAKE_MATCH_7}")
else()
set(ZLIB_VERSION_STRING "")
set(ZLIB_VERSION_MAJOR "")
set(ZLIB_VERSION_MINOR "")
set(ZLIB_VERSION_PATCH "")
Aug 13, 2012
Aug 13, 2012
193
set(ZLIB_VERSION_TWEAK "")
Aug 22, 2023
Aug 22, 2023
194
195
196
197
198
endif()
set(ZLIB_MAJOR_VERSION "${ZLIB_VERSION_MAJOR}")
set(ZLIB_MINOR_VERSION "${ZLIB_VERSION_MINOR}")
set(ZLIB_PATCH_VERSION "${ZLIB_VERSION_PATCH}")
set(ZLIB_VERSION "${ZLIB_VERSION_STRING}")
Aug 13, 2012
Aug 13, 2012
199
endif()
Apr 11, 2010
Apr 11, 2010
200
Jan 30, 2025
Jan 30, 2025
201
include(FindPackageHandleStandardArgs)
Jan 28, 2025
Jan 28, 2025
202
find_package_handle_standard_args(ZLIB REQUIRED_VARS ZLIB_LIBRARY ZLIB_INCLUDE_DIR
Nov 7, 2022
Nov 7, 2022
203
VERSION_VAR ZLIB_VERSION
Oct 12, 2022
Oct 12, 2022
204
HANDLE_COMPONENTS)
Jul 31, 2010
Jul 31, 2010
205
Aug 13, 2012
Aug 13, 2012
206
207
if(ZLIB_FOUND)
set(ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR})
Sep 2, 2015
Sep 2, 2015
208
209
210
211
if(NOT ZLIB_LIBRARIES)
set(ZLIB_LIBRARIES ${ZLIB_LIBRARY})
endif()
Jun 9, 2006
Jun 9, 2006
212
Jun 23, 2014
Jun 23, 2014
213
214
215
216
if(NOT TARGET ZLIB::ZLIB)
add_library(ZLIB::ZLIB UNKNOWN IMPORTED)
set_target_properties(ZLIB::ZLIB PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${ZLIB_INCLUDE_DIRS}")
Sep 2, 2015
Sep 2, 2015
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
if(ZLIB_LIBRARY_RELEASE)
set_property(TARGET ZLIB::ZLIB APPEND PROPERTY
IMPORTED_CONFIGURATIONS RELEASE)
set_target_properties(ZLIB::ZLIB PROPERTIES
IMPORTED_LOCATION_RELEASE "${ZLIB_LIBRARY_RELEASE}")
endif()
if(ZLIB_LIBRARY_DEBUG)
set_property(TARGET ZLIB::ZLIB APPEND PROPERTY
IMPORTED_CONFIGURATIONS DEBUG)
set_target_properties(ZLIB::ZLIB PROPERTIES
IMPORTED_LOCATION_DEBUG "${ZLIB_LIBRARY_DEBUG}")
endif()
if(NOT ZLIB_LIBRARY_RELEASE AND NOT ZLIB_LIBRARY_DEBUG)
set_property(TARGET ZLIB::ZLIB APPEND PROPERTY
IMPORTED_LOCATION "${ZLIB_LIBRARY}")
endif()
Jun 23, 2014
Jun 23, 2014
236
237
endif()
endif()
Mar 29, 2024
Mar 29, 2024
238
239
cmake_policy(POP)