aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--CMakeLists.txt224
1 files changed, 118 insertions, 106 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2ce9419..7054091 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,31 +1,31 @@
1cmake_minimum_required(VERSION 3.12) 1cmake_minimum_required(VERSION 3.12)
2 2
3project(zlib 3project(
4 zlib
4 LANGUAGES C 5 LANGUAGES C
5 VERSION 1.3.1.1 6 VERSION 1.4.1.1
6 HOMEPAGE_URL "https://zlib.net/" 7 HOMEPAGE_URL "https://zlib.net/"
7 DESCRIPTION "a general-purpose lossless data-compression library") 8 DESCRIPTION "a general-purpose lossless data-compression library")
8 9
9#============================================================================ 10# ============================================================================
10# CPack 11# CPack
11#============================================================================ 12# ============================================================================
12set(CPACK_PACKAGE_VENDOR "zlib-Project") 13set(CPACK_PACKAGE_VENDOR "zlib-Project")
13set(CPACK_PACKAGE_DESCRIPTION_FILE ${zlib_SOURCE_DIR}/README) 14set(CPACK_PACKAGE_DESCRIPTION_FILE ${zlib_SOURCE_DIR}/README)
14set(CPACK_RESOURCE_FILE_LICENSE ${zlib_SOURCE_DIR}/LICENSE) 15set(CPACK_RESOURCE_FILE_LICENSE ${zlib_SOURCE_DIR}/LICENSE)
15set(CPACK_RESOURCE_FILE_README ${zlib_SOURCE_DIR}/README) 16set(CPACK_RESOURCE_FILE_README ${zlib_SOURCE_DIR}/README)
16 17
17#============================================================================ 18# ============================================================================
18# configuration 19# configuration
19#============================================================================ 20# ============================================================================
20 21
21option(ZLIB_BUILD_TESTING "Enable Zlib Examples as tests" ON) 22option(ZLIB_BUILD_TESTING "Enable Zlib Examples as tests" ON)
22option(ZLIB_BUILD_SHARED "Enable building zlib shared library" ON) 23option(ZLIB_BUILD_SHARED "Enable building zlib shared library" ON)
23option(ZLIB_BUILD_STATIC "Enable building zlib static library" ON) 24option(ZLIB_BUILD_STATIC "Enable building zlib static library" ON)
24option(ZLIB_BUILD_MINIZIP "Enable building libminizip contrib library" OFF) 25option(ZLIB_BUILD_MINIZIP "Enable building libminizip contrib library" OFF)
25option(ZLIB_INSTALL "Enable installation of zlib" ON) 26option(ZLIB_INSTALL "Enable installation of zlib" ON)
26option(ZLIB_PREFIX 27option(ZLIB_PREFIX "prefix for all types and library functions, see zconf.h.in"
27 "prefix for all types and library functions, see zconf.h.in" 28 OFF)
28 OFF)
29mark_as_advanced(ZLIB_PREFIX) 29mark_as_advanced(ZLIB_PREFIX)
30 30
31if(WIN32) 31if(WIN32)
@@ -70,7 +70,9 @@ if(NOT ZLIB_CONF_WRITTEN)
70 endforeach(item IN LISTS ${ZCONF_CONTENT}) 70 endforeach(item IN LISTS ${ZCONF_CONTENT})
71 71
72 file(APPEND ${CONF_OUT_FILE} ${OUT_CONTENT}) 72 file(APPEND ${CONF_OUT_FILE} ${OUT_CONTENT})
73 set(ZLIB_CONF_WRITTEN TRUE CACHE BOOL "zconf.h.cmakein was created") 73 set(ZLIB_CONF_WRITTEN
74 TRUE
75 CACHE BOOL "zconf.h.cmakein was created")
74 mark_as_advanced(ZLIB_CONF_WRITTEN) 76 mark_as_advanced(ZLIB_CONF_WRITTEN)
75endif(NOT ZLIB_CONF_WRITTEN) 77endif(NOT ZLIB_CONF_WRITTEN)
76 78
@@ -115,19 +117,15 @@ check_c_source_compiles(
115 117
116unset(CMAKE_COMPILE_FLAGS) 118unset(CMAKE_COMPILE_FLAGS)
117set(ZLIB_PC ${zlib_BINARY_DIR}/zlib.pc) 119set(ZLIB_PC ${zlib_BINARY_DIR}/zlib.pc)
118configure_file(${zlib_SOURCE_DIR}/zlib.pc.cmakein 120configure_file(${zlib_SOURCE_DIR}/zlib.pc.cmakein ${ZLIB_PC} @ONLY)
119 ${ZLIB_PC} @ONLY) 121configure_file(${zlib_BINARY_DIR}/zconf.h.cmakein ${zlib_BINARY_DIR}/zconf.h)
120configure_file(${zlib_BINARY_DIR}/zconf.h.cmakein
121 ${zlib_BINARY_DIR}/zconf.h)
122include_directories(${zlib_BINARY_DIR} ${zlib_SOURCE_DIR}) 122include_directories(${zlib_BINARY_DIR} ${zlib_SOURCE_DIR})
123 123
124#============================================================================ 124# ============================================================================
125# zlib 125# zlib
126#============================================================================ 126# ============================================================================
127 127
128set(ZLIB_PUBLIC_HDRS 128set(ZLIB_PUBLIC_HDRS ${zlib_BINARY_DIR}/zconf.h zlib.h)
129 ${zlib_BINARY_DIR}/zconf.h
130 zlib.h)
131 129
132set(ZLIB_PRIVATE_HDRS 130set(ZLIB_PRIVATE_HDRS
133 crc32.h 131 crc32.h
@@ -157,8 +155,10 @@ set(ZLIB_SRCS
157 uncompr.c 155 uncompr.c
158 zutil.c) 156 zutil.c)
159 157
160set_source_files_properties(win32/zlib1.rc PROPERTIES 158set_source_files_properties(
161 COMPILE_FLAGS $<$<STREQUAL:${CMAKE_RC_OUTPUT_EXTENSION},.obj>:-DGCC_WINDRES>) 159 win32/zlib1.rc
160 PROPERTIES COMPILE_FLAGS
161 $<$<STREQUAL:${CMAKE_RC_OUTPUT_EXTENSION},.obj>:-DGCC_WINDRES>)
162 162
163if(WIN32) 163if(WIN32)
164 set(zlib_static_suffix "s") 164 set(zlib_static_suffix "s")
@@ -166,116 +166,126 @@ if(WIN32)
166endif(WIN32) 166endif(WIN32)
167 167
168if(ZLIB_BUILD_SHARED) 168if(ZLIB_BUILD_SHARED)
169 add_library(zlib SHARED 169 add_library(
170 ${ZLIB_SRCS} 170 zlib SHARED ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}
171 ${ZLIB_PUBLIC_HDRS} 171 $<$<OR:$<BOOL:${WIN32}>,$<BOOL:${CYGWIN}>>:win32/zlib1.rc>)
172 ${ZLIB_PRIVATE_HDRS}
173 $<$<OR:$<BOOL:${WIN32}>,$<BOOL:${CYGWIN}>>:win32/zlib1.rc>)
174 add_library(ZLIB::ZLIB ALIAS zlib) 172 add_library(ZLIB::ZLIB ALIAS zlib)
175 target_include_directories(zlib PUBLIC 173 target_include_directories(
176 $<BUILD_INTERFACE:${zlib_BINARY_DIR}> 174 zlib
177 $<BUILD_INTERFACE:${zlib_SOURCE_DIR}> 175 PUBLIC $<BUILD_INTERFACE:${zlib_BINARY_DIR}>
178 $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>) 176 $<BUILD_INTERFACE:${zlib_SOURCE_DIR}>
179 target_compile_definitions(zlib 177 $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
180 PRIVATE 178 target_compile_definitions(
181 $<$<BOOL:NOT:${HAVE_FSEEKO}>:NO_FSEEKO> 179 zlib
182 $<$<BOOL:${HAVE___ATTR__VIS_HIDDEN}>:HAVE_HIDDEN> 180 PRIVATE $<$<BOOL:NOT:${HAVE_FSEEKO}>:NO_FSEEKO>
183 $<$<BOOL:${MSVC}>:_CRT_SECURE_NO_DEPRECATE> 181 $<$<BOOL:${HAVE___ATTR__VIS_HIDDEN}>:HAVE_HIDDEN>
184 $<$<BOOL:${MSVC}>:_CRT_NONSTDC_NO_DEPRECATE> 182 $<$<BOOL:${MSVC}>:_CRT_SECURE_NO_DEPRECATE>
185 PUBLIC 183 $<$<BOOL:${MSVC}>:_CRT_NONSTDC_NO_DEPRECATE>
186 $<$<BOOL:${HAVE_OFF64_T}>:_LARGEFILE64_SOURCE=1>) 184 PUBLIC $<$<BOOL:${HAVE_OFF64_T}>:_LARGEFILE64_SOURCE=1>)
187 set(INSTALL_VERSION ${zlib_VERSION}) 185 set(INSTALL_VERSION ${zlib_VERSION})
188 186
189 if(NOT CYGWIN) 187 if(NOT CYGWIN)
190 set_target_properties(zlib PROPERTIES 188 set_target_properties(zlib PROPERTIES SOVERSION ${zlib_VERSION_MAJOR}
191 SOVERSION ${zlib_VERSION_MAJOR} 189 VERSION ${INSTALL_VERSION})
192 VERSION ${INSTALL_VERSION})
193 endif(NOT CYGWIN) 190 endif(NOT CYGWIN)
194 191
195 set_target_properties(zlib PROPERTIES 192 set_target_properties(
196 DEFINE_SYMBOL ZLIB_DLL 193 zlib
197 EXPORT_NAME ZLIB 194 PROPERTIES DEFINE_SYMBOL ZLIB_DLL
198 OUTPUT_NAME z) 195 EXPORT_NAME ZLIB
199 if(UNIX AND NOT APPLE AND NOT(CMAKE_SYSTEM_NAME STREQUAL AIX)) 196 OUTPUT_NAME z)
197 if(UNIX
198 AND NOT APPLE
199 AND NOT (CMAKE_SYSTEM_NAME STREQUAL AIX))
200 # On unix-like platforms the library is almost always called libz 200 # On unix-like platforms the library is almost always called libz
201 set_target_properties(zlib PROPERTIES 201 set_target_properties(
202 LINK_FLAGS "-Wl,--version-script,\"${zlib_SOURCE_DIR}/zlib.map\"") 202 zlib
203 endif(UNIX AND NOT APPLE AND NOT(CMAKE_SYSTEM_NAME STREQUAL AIX)) 203 PROPERTIES LINK_FLAGS
204 "-Wl,--version-script,\"${zlib_SOURCE_DIR}/zlib.map\"")
205 endif(
206 UNIX
207 AND NOT APPLE
208 AND NOT (CMAKE_SYSTEM_NAME STREQUAL AIX))
204endif(ZLIB_BUILD_SHARED) 209endif(ZLIB_BUILD_SHARED)
205 210
206if(ZLIB_BUILD_STATIC) 211if(ZLIB_BUILD_STATIC)
207 add_library(zlibstatic STATIC 212 add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS}
208 ${ZLIB_SRCS} 213 ${ZLIB_PRIVATE_HDRS})
209 ${ZLIB_PUBLIC_HDRS}
210 ${ZLIB_PRIVATE_HDRS})
211 add_library(ZLIB::ZLIBSTATIC ALIAS zlibstatic) 214 add_library(ZLIB::ZLIBSTATIC ALIAS zlibstatic)
212 target_include_directories(zlibstatic PUBLIC 215 target_include_directories(
213 $<BUILD_INTERFACE:${zlib_BINARY_DIR}> 216 zlibstatic
214 $<BUILD_INTERFACE:${zlib_SOURCE_DIR}> 217 PUBLIC $<BUILD_INTERFACE:${zlib_BINARY_DIR}>
215 $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>) 218 $<BUILD_INTERFACE:${zlib_SOURCE_DIR}>
216 target_compile_definitions(zlibstatic 219 $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
217 PRIVATE 220 target_compile_definitions(
218 $<$<BOOL:NOT:${HAVE_FSEEKO}>:NO_FSEEKO> 221 zlibstatic
219 $<$<BOOL:${HAVE___ATTR__VIS_HIDDEN}>:HAVE_HIDDEN> 222 PRIVATE $<$<BOOL:NOT:${HAVE_FSEEKO}>:NO_FSEEKO>
220 $<$<BOOL:${MSVC}>:_CRT_SECURE_NO_DEPRECATE> 223 $<$<BOOL:${HAVE___ATTR__VIS_HIDDEN}>:HAVE_HIDDEN>
221 $<$<BOOL:${MSVC}>:_CRT_NONSTDC_NO_DEPRECATE> 224 $<$<BOOL:${MSVC}>:_CRT_SECURE_NO_DEPRECATE>
222 PUBLIC 225 $<$<BOOL:${MSVC}>:_CRT_NONSTDC_NO_DEPRECATE>
223 $<$<BOOL:${HAVE_OFF64_T}>:_LARGEFILE64_SOURCE=1>) 226 PUBLIC $<$<BOOL:${HAVE_OFF64_T}>:_LARGEFILE64_SOURCE=1>)
224 set_target_properties(zlibstatic PROPERTIES 227 set_target_properties(
225 EXPORT_NAME ZLIBSTATIC 228 zlibstatic PROPERTIES EXPORT_NAME ZLIBSTATIC OUTPUT_NAME
226 OUTPUT_NAME z${zlib_static_suffix}) 229 z${zlib_static_suffix})
227endif(ZLIB_BUILD_STATIC) 230endif(ZLIB_BUILD_STATIC)
228 231
229if(ZLIB_INSTALL) 232if(ZLIB_INSTALL)
230 if(ZLIB_BUILD_SHARED) 233 if(ZLIB_BUILD_SHARED)
231 install(TARGETS zlib 234 install(
235 TARGETS zlib
232 COMPONENT Runtime 236 COMPONENT Runtime
233 EXPORT zlibSharedExport 237 EXPORT zlibSharedExport
234 RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" 238 RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
235 ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" 239 ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
236 LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") 240 LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
237 install(EXPORT zlibSharedExport 241 install(
238 FILE ZLIB-shared.cmake 242 EXPORT zlibSharedExport
239 NAMESPACE ZLIB:: 243 FILE ZLIB-shared.cmake
240 DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/zlib) 244 NAMESPACE ZLIB::
245 DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/zlib)
241 if(ZLIB_INSTALL_COMPAT_DLL) 246 if(ZLIB_INSTALL_COMPAT_DLL)
242 install(FILES $<TARGET_FILE:zlib> 247 install(
248 FILES $<TARGET_FILE:zlib>
243 COMPONENT Runtime 249 COMPONENT Runtime
244 RENAME zlib1.dll 250 RENAME zlib1.dll
245 DESTINATION "${CMAKE_INSTALL_BINDIR}") 251 DESTINATION "${CMAKE_INSTALL_BINDIR}")
246 endif(ZLIB_INSTALL_COMPAT_DLL) 252 endif(ZLIB_INSTALL_COMPAT_DLL)
247 253
248 if(MSVC) 254 if(MSVC)
249 install(FILES $<TARGET_PDB_FILE:zlib> 255 install(
256 FILES $<TARGET_PDB_FILE:zlib>
250 COMPONENT Runtime 257 COMPONENT Runtime
251 DESTINATION ${CMAKE_INSTALL_BINDIR} 258 DESTINATION ${CMAKE_INSTALL_BINDIR}
252 CONFIGURATIONS Debug OR RelWithDebInfo 259 CONFIGURATIONS Debug OR RelWithDebInfo
253 OPTIONAL 260 OPTIONAL)
254 )
255 endif(MSVC) 261 endif(MSVC)
256 endif(ZLIB_BUILD_SHARED) 262 endif(ZLIB_BUILD_SHARED)
257 263
258 if(ZLIB_BUILD_STATIC) 264 if(ZLIB_BUILD_STATIC)
259 install(TARGETS zlibstatic 265 install(
266 TARGETS zlibstatic
260 COMPONENT Development 267 COMPONENT Development
261 EXPORT zlibStaticExport 268 EXPORT zlibStaticExport
262 RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" 269 RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
263 ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" 270 ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
264 LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") 271 LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
265 install(EXPORT zlibStaticExport 272 install(
273 EXPORT zlibStaticExport
266 FILE ZLIB-static.cmake 274 FILE ZLIB-static.cmake
267 NAMESPACE ZLIB:: 275 NAMESPACE ZLIB::
268 DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/zlib) 276 DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/zlib)
269 277
270 if(ZLIB_INSTALL_COMPAT_DLL AND MINGW) 278 if(ZLIB_INSTALL_COMPAT_DLL AND MINGW)
271 install(FILES $<TARGET_FILE:zlibstatic> 279 install(
280 FILES $<TARGET_FILE:zlibstatic>
272 COMPONENT Development 281 COMPONENT Development
273 RENAME libz.dll.a 282 RENAME libz.dll.a
274 DESTINATION "${CMAKE_INSTALL_LIBDIR}") 283 DESTINATION "${CMAKE_INSTALL_LIBDIR}")
275 endif(ZLIB_INSTALL_COMPAT_DLL AND MINGW) 284 endif(ZLIB_INSTALL_COMPAT_DLL AND MINGW)
276 endif(ZLIB_BUILD_STATIC) 285 endif(ZLIB_BUILD_STATIC)
277 286
278 configure_package_config_file(${zlib_SOURCE_DIR}/zlibConfig.cmake.in 287 configure_package_config_file(
288 ${zlib_SOURCE_DIR}/zlibConfig.cmake.in
279 ${zlib_BINARY_DIR}/ZLIBConfig.cmake 289 ${zlib_BINARY_DIR}/ZLIBConfig.cmake
280 INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/zlib) 290 INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/zlib)
281 291
@@ -284,34 +294,36 @@ if(ZLIB_INSTALL)
284 VERSION "${zlib_VERSION}" 294 VERSION "${zlib_VERSION}"
285 COMPATIBILITY AnyNewerVersion) 295 COMPATIBILITY AnyNewerVersion)
286 296
287 install(FILES 297 install(FILES ${zlib_BINARY_DIR}/ZLIBConfig.cmake
288 ${zlib_BINARY_DIR}/ZLIBConfig.cmake 298 ${zlib_BINARY_DIR}/ZLIBConfigVersion.cmake
289 ${zlib_BINARY_DIR}/ZLIBConfigVersion.cmake 299 DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/zlib)
290 DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/zlib) 300 install(
291 install(FILES ${ZLIB_PUBLIC_HDRS} 301 FILES ${ZLIB_PUBLIC_HDRS}
292 COMPONENT Development 302 COMPONENT Development
293 DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") 303 DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
294 install(FILES zlib.3 304 install(
295 COMPONENT Docs 305 FILES zlib.3
296 DESTINATION "${CMAKE_INSTALL_MANDIR}/man3") 306 COMPONENT Docs
297 install(FILES 307 DESTINATION "${CMAKE_INSTALL_MANDIR}/man3")
298 LICENSE 308 install(
299 doc/algorithm.txt 309 FILES LICENSE
300 doc/crc-doc.1.0.pdf 310 doc/algorithm.txt
301 doc/rfc1950.txt 311 doc/crc-doc.1.0.pdf
302 doc/rfc1951.txt 312 doc/rfc1950.txt
303 doc/rfc1952.txt 313 doc/rfc1951.txt
304 doc/txtvsbin.txt 314 doc/rfc1952.txt
305 COMPONENT Docs 315 doc/txtvsbin.txt
306 DESTINATION "${CMAKE_INSTALL_DOCDIR}/zlib") 316 COMPONENT Docs
307 install(FILES ${ZLIB_PC} 317 DESTINATION "${CMAKE_INSTALL_DOCDIR}/zlib")
308 COMPONENT Development 318 install(
309 DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") 319 FILES ${ZLIB_PC}
320 COMPONENT Development
321 DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
310endif(ZLIB_INSTALL) 322endif(ZLIB_INSTALL)
311 323
312#============================================================================ 324# ============================================================================
313# Tests 325# Tests
314#============================================================================ 326# ============================================================================
315if(ZLIB_BUILD_TESTING) 327if(ZLIB_BUILD_TESTING)
316 enable_testing() 328 enable_testing()
317 add_subdirectory(test) 329 add_subdirectory(test)