|
6ea30fb…
|
florian
|
1 |
cmake_minimum_required(VERSION 3.12...3.31) |
|
6ea30fb…
|
florian
|
2 |
|
|
6ea30fb…
|
florian
|
3 |
project( |
|
6ea30fb…
|
florian
|
4 |
zlib1-dll |
|
6ea30fb…
|
florian
|
5 |
LANGUAGES C |
|
6ea30fb…
|
florian
|
6 |
VERSION 1.3.2 |
|
6ea30fb…
|
florian
|
7 |
HOMEPAGE_URL "https://zlib.net/" |
|
6ea30fb…
|
florian
|
8 |
DESCRIPTION "zlib1.dll is the legacy DLL with zlib and minizip") |
|
6ea30fb…
|
florian
|
9 |
|
|
6ea30fb…
|
florian
|
10 |
# ============================================================================ |
|
6ea30fb…
|
florian
|
11 |
# configuration |
|
6ea30fb…
|
florian
|
12 |
# ============================================================================ |
|
6ea30fb…
|
florian
|
13 |
|
|
6ea30fb…
|
florian
|
14 |
if(NOT WIN32) |
|
6ea30fb…
|
florian
|
15 |
message(FATAL_ERROR "This creates zlib1.<DLL>, Nothing else") |
|
6ea30fb…
|
florian
|
16 |
endif(NOT WIN32) |
|
6ea30fb…
|
florian
|
17 |
|
|
6ea30fb…
|
florian
|
18 |
option(ENABLE_BZIP2 "Build with bzip2 support" OFF) |
|
6ea30fb…
|
florian
|
19 |
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) |
|
6ea30fb…
|
florian
|
20 |
|
|
6ea30fb…
|
florian
|
21 |
include(CheckCSourceCompiles) |
|
6ea30fb…
|
florian
|
22 |
include(CheckFunctionExists) |
|
6ea30fb…
|
florian
|
23 |
include(CheckIncludeFile) |
|
6ea30fb…
|
florian
|
24 |
include(CMakePackageConfigHelpers) |
|
6ea30fb…
|
florian
|
25 |
include(CheckTypeSize) |
|
6ea30fb…
|
florian
|
26 |
include(CPack) |
|
6ea30fb…
|
florian
|
27 |
include(GNUInstallDirs) |
|
6ea30fb…
|
florian
|
28 |
|
|
6ea30fb…
|
florian
|
29 |
if(NOT ZLIB_CONF_WRITTEN) |
|
6ea30fb…
|
florian
|
30 |
set(CONF_OUT_FILE ${zlib1-dll_BINARY_DIR}/zconf.h.cmakein) |
|
6ea30fb…
|
florian
|
31 |
file(READ ../../zconf.h ZCONF_CONTENT LIMIT 245) |
|
6ea30fb…
|
florian
|
32 |
file(WRITE ${CONF_OUT_FILE} ${ZCONF_CONTENT}) |
|
6ea30fb…
|
florian
|
33 |
file(APPEND ${CONF_OUT_FILE} "#cmakedefine Z_PREFIX 1\n") |
|
6ea30fb…
|
florian
|
34 |
file(APPEND ${CONF_OUT_FILE} "#cmakedefine HAVE_STDARG_H 1\n") |
|
6ea30fb…
|
florian
|
35 |
file(APPEND ${CONF_OUT_FILE} "#cmakedefine HAVE_UNISTD_H 1\n") |
|
6ea30fb…
|
florian
|
36 |
file(READ ../../zconf.h ZCONF_CONTENT OFFSET 244) |
|
6ea30fb…
|
florian
|
37 |
set(FIRST_ITEM TRUE) |
|
6ea30fb…
|
florian
|
38 |
|
|
6ea30fb…
|
florian
|
39 |
foreach(item IN LISTS ZCONF_CONTENT) |
|
6ea30fb…
|
florian
|
40 |
if(FIRST_ITEM) |
|
6ea30fb…
|
florian
|
41 |
string(APPEND OUT_CONTENT ${item}) |
|
6ea30fb…
|
florian
|
42 |
set(FIRST_ITEM FALSE) |
|
6ea30fb…
|
florian
|
43 |
else(FIRST_ITEM) |
|
6ea30fb…
|
florian
|
44 |
string(APPEND OUT_CONTENT "\;" ${item}) |
|
6ea30fb…
|
florian
|
45 |
endif(FIRST_ITEM) |
|
6ea30fb…
|
florian
|
46 |
endforeach(item IN LISTS ${ZCONF_CONTENT}) |
|
6ea30fb…
|
florian
|
47 |
|
|
6ea30fb…
|
florian
|
48 |
file(APPEND ${CONF_OUT_FILE} ${OUT_CONTENT}) |
|
6ea30fb…
|
florian
|
49 |
set(ZLIB_CONF_WRITTEN |
|
6ea30fb…
|
florian
|
50 |
TRUE |
|
6ea30fb…
|
florian
|
51 |
CACHE BOOL "zconf.h.cmakein was created") |
|
6ea30fb…
|
florian
|
52 |
mark_as_advanced(ZLIB_CONF_WRITTEN) |
|
6ea30fb…
|
florian
|
53 |
endif(NOT ZLIB_CONF_WRITTEN) |
|
6ea30fb…
|
florian
|
54 |
|
|
6ea30fb…
|
florian
|
55 |
if(ENABLE_BZIP2) |
|
6ea30fb…
|
florian
|
56 |
find_package(BZip2 REQUIRED) |
|
6ea30fb…
|
florian
|
57 |
endif(ENABLE_BZIP2) |
|
6ea30fb…
|
florian
|
58 |
|
|
6ea30fb…
|
florian
|
59 |
# |
|
6ea30fb…
|
florian
|
60 |
# Check for fopen64 |
|
6ea30fb…
|
florian
|
61 |
# |
|
6ea30fb…
|
florian
|
62 |
check_function_exists(fopen64 HAVE_FOPEN64) |
|
6ea30fb…
|
florian
|
63 |
|
|
6ea30fb…
|
florian
|
64 |
# |
|
6ea30fb…
|
florian
|
65 |
# Check to see if we have large file support |
|
6ea30fb…
|
florian
|
66 |
# |
|
6ea30fb…
|
florian
|
67 |
set(CMAKE_REQUIRED_DEFINITIONS -D_LARGEFILE64_SOURCE=1) |
|
6ea30fb…
|
florian
|
68 |
check_type_size(off64_t OFF64_T) |
|
6ea30fb…
|
florian
|
69 |
unset(CMAKE_REQUIRED_DEFINITIONS) # clear variable |
|
6ea30fb…
|
florian
|
70 |
|
|
6ea30fb…
|
florian
|
71 |
# |
|
6ea30fb…
|
florian
|
72 |
# Check for fseeko |
|
6ea30fb…
|
florian
|
73 |
# |
|
6ea30fb…
|
florian
|
74 |
check_function_exists(fseeko HAVE_FSEEKO) |
|
6ea30fb…
|
florian
|
75 |
|
|
6ea30fb…
|
florian
|
76 |
# |
|
6ea30fb…
|
florian
|
77 |
# Check for stdarg.h |
|
6ea30fb…
|
florian
|
78 |
# |
|
6ea30fb…
|
florian
|
79 |
check_include_file(stdarg.h HAVE_STDARG_H) |
|
6ea30fb…
|
florian
|
80 |
|
|
6ea30fb…
|
florian
|
81 |
# |
|
6ea30fb…
|
florian
|
82 |
# Check for unistd.h |
|
6ea30fb…
|
florian
|
83 |
# |
|
6ea30fb…
|
florian
|
84 |
check_include_file(unistd.h HAVE_UNISTD_H) |
|
6ea30fb…
|
florian
|
85 |
|
|
6ea30fb…
|
florian
|
86 |
# |
|
6ea30fb…
|
florian
|
87 |
# Check visibility attribute is supported |
|
6ea30fb…
|
florian
|
88 |
# |
|
6ea30fb…
|
florian
|
89 |
if(MSVC) |
|
6ea30fb…
|
florian
|
90 |
set(CMAKE_REQUIRED_FLAGS "-WX") |
|
6ea30fb…
|
florian
|
91 |
else(MSVC) |
|
6ea30fb…
|
florian
|
92 |
set(CMAKE_REQUIRED_FLAGS "-Werror") |
|
6ea30fb…
|
florian
|
93 |
endif(MSVC) |
|
6ea30fb…
|
florian
|
94 |
|
|
6ea30fb…
|
florian
|
95 |
check_c_source_compiles( |
|
6ea30fb…
|
florian
|
96 |
" |
|
6ea30fb…
|
florian
|
97 |
#include <stdlib.h> |
|
6ea30fb…
|
florian
|
98 |
static void f(void) __attribute__ ((visibility(\"hidden\"))); |
|
6ea30fb…
|
florian
|
99 |
int main(void) {return 0;} |
|
6ea30fb…
|
florian
|
100 |
" |
|
6ea30fb…
|
florian
|
101 |
HAVE___ATTR__VIS_HIDDEN) |
|
6ea30fb…
|
florian
|
102 |
|
|
6ea30fb…
|
florian
|
103 |
unset(CMAKE_COMPILE_FLAGS) |
|
6ea30fb…
|
florian
|
104 |
configure_file(${zlib1-dll_BINARY_DIR}/zconf.h.cmakein ${zlib1-dll_BINARY_DIR}/zconf.h) |
|
6ea30fb…
|
florian
|
105 |
|
|
6ea30fb…
|
florian
|
106 |
# ============================================================================ |
|
6ea30fb…
|
florian
|
107 |
# zlib1-dll |
|
6ea30fb…
|
florian
|
108 |
# ============================================================================ |
|
6ea30fb…
|
florian
|
109 |
set(ZLIB1-DLL_PUBLIC_HDRS |
|
6ea30fb…
|
florian
|
110 |
${zlib1-dll_BINARY_DIR}/zconf.h |
|
6ea30fb…
|
florian
|
111 |
../../zlib.h |
|
6ea30fb…
|
florian
|
112 |
../minizip/crypt.h |
|
6ea30fb…
|
florian
|
113 |
../minizip/ints.h |
|
6ea30fb…
|
florian
|
114 |
../minizip/ioapi.h |
|
6ea30fb…
|
florian
|
115 |
../minizip/mztools.h |
|
6ea30fb…
|
florian
|
116 |
../minizip/unzip.h |
|
6ea30fb…
|
florian
|
117 |
../minizip/zip.h) |
|
6ea30fb…
|
florian
|
118 |
|
|
6ea30fb…
|
florian
|
119 |
set(ZLIB1-DLL_PRIVATE_HDRS |
|
6ea30fb…
|
florian
|
120 |
../../crc32.h |
|
6ea30fb…
|
florian
|
121 |
../../deflate.h |
|
6ea30fb…
|
florian
|
122 |
../../gzguts.h |
|
6ea30fb…
|
florian
|
123 |
../../inffast.h |
|
6ea30fb…
|
florian
|
124 |
../../inffixed.h |
|
6ea30fb…
|
florian
|
125 |
../../inflate.h |
|
6ea30fb…
|
florian
|
126 |
../../inftrees.h |
|
6ea30fb…
|
florian
|
127 |
../../trees.h |
|
6ea30fb…
|
florian
|
128 |
../../zutil.h) |
|
6ea30fb…
|
florian
|
129 |
|
|
6ea30fb…
|
florian
|
130 |
set(ZLIB1-DLL_SRCS |
|
6ea30fb…
|
florian
|
131 |
../../adler32.c |
|
6ea30fb…
|
florian
|
132 |
../../compress.c |
|
6ea30fb…
|
florian
|
133 |
../../crc32.c |
|
6ea30fb…
|
florian
|
134 |
../../deflate.c |
|
6ea30fb…
|
florian
|
135 |
../../gzclose.c |
|
6ea30fb…
|
florian
|
136 |
../../gzlib.c |
|
6ea30fb…
|
florian
|
137 |
../../gzread.c |
|
6ea30fb…
|
florian
|
138 |
../../gzwrite.c |
|
6ea30fb…
|
florian
|
139 |
../../inflate.c |
|
6ea30fb…
|
florian
|
140 |
../../infback.c |
|
6ea30fb…
|
florian
|
141 |
../../inftrees.c |
|
6ea30fb…
|
florian
|
142 |
../../inffast.c |
|
6ea30fb…
|
florian
|
143 |
../../trees.c |
|
6ea30fb…
|
florian
|
144 |
../../uncompr.c |
|
6ea30fb…
|
florian
|
145 |
../../win32/zlib1.rc |
|
6ea30fb…
|
florian
|
146 |
../../zutil.c |
|
6ea30fb…
|
florian
|
147 |
../minizip/ioapi.c |
|
6ea30fb…
|
florian
|
148 |
../minizip/mztools.c |
|
6ea30fb…
|
florian
|
149 |
../minizip/unzip.c |
|
6ea30fb…
|
florian
|
150 |
../minizip/zip.c) |
|
6ea30fb…
|
florian
|
151 |
|
|
6ea30fb…
|
florian
|
152 |
add_library(zlib1 SHARED ${ZLIB1-DLL_SRCS} |
|
6ea30fb…
|
florian
|
153 |
${ZLIB1-DLL_PUBLIC_HDRS} |
|
6ea30fb…
|
florian
|
154 |
${ZLIB1-DLL_PRIVATE_HDRS}) |
|
6ea30fb…
|
florian
|
155 |
|
|
6ea30fb…
|
florian
|
156 |
#taget_include_directories doesn't like relative paths |
|
6ea30fb…
|
florian
|
157 |
include_directories(../../ |
|
6ea30fb…
|
florian
|
158 |
../minizip |
|
6ea30fb…
|
florian
|
159 |
${CMAKE_CURRENT_BINARY_DIR}) |
|
6ea30fb…
|
florian
|
160 |
|
|
6ea30fb…
|
florian
|
161 |
target_compile_definitions(zlib1 |
|
6ea30fb…
|
florian
|
162 |
PRIVATE ZLIB_BUILD |
|
6ea30fb…
|
florian
|
163 |
$<$<BOOL:NOT:${HAVE_FSEEKO}>:NO_FSEEKO> |
|
6ea30fb…
|
florian
|
164 |
$<$<BOOL:${HAVE_UNISTD_H}>:HAVE_UNISTD_H=1> |
|
6ea30fb…
|
florian
|
165 |
$<$<BOOL:${HAVE___ATTR__VIS_HIDDEN}>:HAVE_HIDDEN> |
|
6ea30fb…
|
florian
|
166 |
$<$<BOOL:${MSVC}>:_CRT_SECURE_NO_DEPRECATE> |
|
6ea30fb…
|
florian
|
167 |
$<$<BOOL:${MSVC}>:_CRT_NONSTDC_NO_DEPRECATE> |
|
6ea30fb…
|
florian
|
168 |
PUBLIC $<$<BOOL:${HAVE_OFF64_T}>:_LARGEFILE64_SOURCE=1> |
|
6ea30fb…
|
florian
|
169 |
$<$<BOOL:${BZIP2_FOUND}>:HAVE_BZIP2=1> |
|
6ea30fb…
|
florian
|
170 |
$<$<BOOL:NOT:${HAVE_FOPEN64}>:USE_FILE32API=1>) |
|
6ea30fb…
|
florian
|
171 |
|
|
6ea30fb…
|
florian
|
172 |
target_link_libraries(zlib1 |
|
6ea30fb…
|
florian
|
173 |
PUBLIC $<$<BOOL:${BZIP2_FOUND}>:BZip2::BZip2>) |
|
6ea30fb…
|
florian
|
174 |
|
|
6ea30fb…
|
florian
|
175 |
if(NOT CYGWIN) |
|
6ea30fb…
|
florian
|
176 |
set_target_properties(zlib1 PROPERTIES |
|
6ea30fb…
|
florian
|
177 |
SOVERSION ${zlib1-dll_VERSION_MAJOR} |
|
6ea30fb…
|
florian
|
178 |
VERSION ${zlib1-dll_VERSION}) |
|
6ea30fb…
|
florian
|
179 |
endif(NOT CYGWIN) |
|
6ea30fb…
|
florian
|
180 |
|
|
6ea30fb…
|
florian
|
181 |
set_target_properties(zlib1 PROPERTIES |
|
6ea30fb…
|
florian
|
182 |
DEFINE_SYMBOL ZLIB_DLL) |
|
6ea30fb…
|
florian
|
183 |
|
|
6ea30fb…
|
florian
|
184 |
install( |
|
6ea30fb…
|
florian
|
185 |
TARGETS zlib1 |
|
6ea30fb…
|
florian
|
186 |
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" |
|
6ea30fb…
|
florian
|
187 |
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" |
|
6ea30fb…
|
florian
|
188 |
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") |
|
6ea30fb…
|
florian
|
189 |
|
|
6ea30fb…
|
florian
|
190 |
install( |
|
6ea30fb…
|
florian
|
191 |
FILES ${ZLIB1-DLL_PUBLIC_HDRS} |
|
6ea30fb…
|
florian
|
192 |
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") |
|
6ea30fb…
|
florian
|
193 |
|
|
6ea30fb…
|
florian
|
194 |
install( |
|
6ea30fb…
|
florian
|
195 |
FILES ../../LICENSE |
|
6ea30fb…
|
florian
|
196 |
DESTINATION "${CMAKE_INSTALL_DOCDIR}/zlib1-dll") |