]>
Commit | Line | Data |
---|---|---|
7eb75bcc DM |
1 | #!/bin/sh\r |
2 | # configure script for zlib.\r | |
3 | #\r | |
4 | # Normally configure builds both a static and a shared library.\r | |
5 | # If you want to build just a static library, use: ./configure --static\r | |
6 | #\r | |
7 | # To impose specific compiler or flags or install directory, use for example:\r | |
8 | # prefix=$HOME CC=cc CFLAGS="-O4" ./configure\r | |
9 | # or for csh/tcsh users:\r | |
10 | # (setenv prefix $HOME; setenv CC cc; setenv CFLAGS "-O4"; ./configure)\r | |
11 | \r | |
12 | # Incorrect settings of CC or CFLAGS may prevent creating a shared library.\r | |
13 | # If you have problems, try without defining CC and CFLAGS before reporting\r | |
14 | # an error.\r | |
15 | \r | |
16 | # start off configure.log\r | |
17 | echo -------------------- >> configure.log\r | |
18 | echo $0 $* >> configure.log\r | |
19 | date >> configure.log\r | |
20 | \r | |
21 | # set command prefix for cross-compilation\r | |
22 | if [ -n "${CHOST}" ]; then\r | |
23 | uname="`echo "${CHOST}" | sed -e 's/^[^-]*-\([^-]*\)$/\1/' -e 's/^[^-]*-[^-]*-\([^-]*\)$/\1/' -e 's/^[^-]*-[^-]*-\([^-]*\)-.*$/\1/'`"\r | |
24 | CROSS_PREFIX="${CHOST}-"\r | |
25 | fi\r | |
26 | \r | |
27 | # destination name for static library\r | |
28 | STATICLIB=libz.a\r | |
29 | \r | |
30 | # extract zlib version numbers from zlib.h\r | |
31 | VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`\r | |
32 | VER3=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\\.[0-9]*\).*/\1/p' < zlib.h`\r | |
33 | VER2=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < zlib.h`\r | |
34 | VER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < zlib.h`\r | |
35 | \r | |
36 | # establish commands for library building\r | |
37 | if "${CROSS_PREFIX}ar" --version >/dev/null 2>/dev/null || test $? -lt 126; then\r | |
38 | AR=${AR-"${CROSS_PREFIX}ar"}\r | |
39 | test -n "${CROSS_PREFIX}" && echo Using ${AR} | tee -a configure.log\r | |
40 | else\r | |
41 | AR=${AR-"ar"}\r | |
42 | test -n "${CROSS_PREFIX}" && echo Using ${AR} | tee -a configure.log\r | |
43 | fi\r | |
44 | ARFLAGS=${ARFLAGS-"rc"}\r | |
45 | if "${CROSS_PREFIX}ranlib" --version >/dev/null 2>/dev/null || test $? -lt 126; then\r | |
46 | RANLIB=${RANLIB-"${CROSS_PREFIX}ranlib"}\r | |
47 | test -n "${CROSS_PREFIX}" && echo Using ${RANLIB} | tee -a configure.log\r | |
48 | else\r | |
49 | RANLIB=${RANLIB-"ranlib"}\r | |
50 | fi\r | |
51 | if "${CROSS_PREFIX}nm" --version >/dev/null 2>/dev/null || test $? -lt 126; then\r | |
52 | NM=${NM-"${CROSS_PREFIX}nm"}\r | |
53 | test -n "${CROSS_PREFIX}" && echo Using ${NM} | tee -a configure.log\r | |
54 | else\r | |
55 | NM=${NM-"nm"}\r | |
56 | fi\r | |
57 | \r | |
58 | # set defaults before processing command line options\r | |
59 | LDCONFIG=${LDCONFIG-"ldconfig"}\r | |
60 | LDSHAREDLIBC="${LDSHAREDLIBC--lc}"\r | |
61 | ARCHS=\r | |
62 | prefix=${prefix-/usr/local}\r | |
63 | exec_prefix=${exec_prefix-'${prefix}'}\r | |
64 | libdir=${libdir-'${exec_prefix}/lib'}\r | |
65 | sharedlibdir=${sharedlibdir-'${libdir}'}\r | |
66 | includedir=${includedir-'${prefix}/include'}\r | |
67 | mandir=${mandir-'${prefix}/share/man'}\r | |
68 | shared_ext='.so'\r | |
69 | shared=1\r | |
70 | solo=0\r | |
71 | cover=0\r | |
72 | zprefix=0\r | |
73 | zconst=0\r | |
74 | build64=0\r | |
75 | gcc=0\r | |
76 | old_cc="$CC"\r | |
77 | old_cflags="$CFLAGS"\r | |
78 | OBJC='$(OBJZ) $(OBJG)'\r | |
79 | PIC_OBJC='$(PIC_OBJZ) $(PIC_OBJG)'\r | |
80 | \r | |
81 | # leave this script, optionally in a bad way\r | |
82 | leave()\r | |
83 | {\r | |
84 | if test "$*" != "0"; then\r | |
85 | echo "** $0 aborting." | tee -a configure.log\r | |
86 | fi\r | |
87 | rm -f $test.[co] $test $test$shared_ext $test.gcno ./--version\r | |
88 | echo -------------------- >> configure.log\r | |
89 | echo >> configure.log\r | |
90 | echo >> configure.log\r | |
91 | exit $1\r | |
92 | }\r | |
93 | \r | |
94 | # process command line options\r | |
95 | while test $# -ge 1\r | |
96 | do\r | |
97 | case "$1" in\r | |
98 | -h* | --help)\r | |
99 | echo 'usage:' | tee -a configure.log\r | |
100 | echo ' configure [--const] [--zprefix] [--prefix=PREFIX] [--eprefix=EXPREFIX]' | tee -a configure.log\r | |
101 | echo ' [--static] [--64] [--libdir=LIBDIR] [--sharedlibdir=LIBDIR]' | tee -a configure.log\r | |
102 | echo ' [--includedir=INCLUDEDIR] [--archs="-arch i386 -arch x86_64"]' | tee -a configure.log\r | |
103 | exit 0 ;;\r | |
104 | -p*=* | --prefix=*) prefix=`echo $1 | sed 's/.*=//'`; shift ;;\r | |
105 | -e*=* | --eprefix=*) exec_prefix=`echo $1 | sed 's/.*=//'`; shift ;;\r | |
106 | -l*=* | --libdir=*) libdir=`echo $1 | sed 's/.*=//'`; shift ;;\r | |
107 | --sharedlibdir=*) sharedlibdir=`echo $1 | sed 's/.*=//'`; shift ;;\r | |
108 | -i*=* | --includedir=*) includedir=`echo $1 | sed 's/.*=//'`;shift ;;\r | |
109 | -u*=* | --uname=*) uname=`echo $1 | sed 's/.*=//'`;shift ;;\r | |
110 | -p* | --prefix) prefix="$2"; shift; shift ;;\r | |
111 | -e* | --eprefix) exec_prefix="$2"; shift; shift ;;\r | |
112 | -l* | --libdir) libdir="$2"; shift; shift ;;\r | |
113 | -i* | --includedir) includedir="$2"; shift; shift ;;\r | |
114 | -s* | --shared | --enable-shared) shared=1; shift ;;\r | |
115 | -t | --static) shared=0; shift ;;\r | |
116 | --solo) solo=1; shift ;;\r | |
117 | --cover) cover=1; shift ;;\r | |
118 | -z* | --zprefix) zprefix=1; shift ;;\r | |
119 | -6* | --64) build64=1; shift ;;\r | |
120 | -a*=* | --archs=*) ARCHS=`echo $1 | sed 's/.*=//'`; shift ;;\r | |
121 | --sysconfdir=*) echo "ignored option: --sysconfdir" | tee -a configure.log; shift ;;\r | |
122 | --localstatedir=*) echo "ignored option: --localstatedir" | tee -a configure.log; shift ;;\r | |
123 | -c* | --const) zconst=1; shift ;;\r | |
124 | *)\r | |
125 | echo "unknown option: $1" | tee -a configure.log\r | |
126 | echo "$0 --help for help" | tee -a configure.log\r | |
127 | leave 1;;\r | |
128 | esac\r | |
129 | done\r | |
130 | \r | |
131 | # temporary file name\r | |
132 | test=ztest$$\r | |
133 | \r | |
134 | # put arguments in log, also put test file in log if used in arguments\r | |
135 | show()\r | |
136 | {\r | |
137 | case "$*" in\r | |
138 | *$test.c*)\r | |
139 | echo === $test.c === >> configure.log\r | |
140 | cat $test.c >> configure.log\r | |
141 | echo === >> configure.log;;\r | |
142 | esac\r | |
143 | echo $* >> configure.log\r | |
144 | }\r | |
145 | \r | |
146 | # check for gcc vs. cc and set compile and link flags based on the system identified by uname\r | |
147 | cat > $test.c <<EOF\r | |
148 | extern int getchar();\r | |
149 | int hello() {return getchar();}\r | |
150 | EOF\r | |
151 | \r | |
152 | test -z "$CC" && echo Checking for ${CROSS_PREFIX}gcc... | tee -a configure.log\r | |
153 | cc=${CC-${CROSS_PREFIX}gcc}\r | |
154 | cflags=${CFLAGS-"-O3"}\r | |
155 | # to force the asm version use: CFLAGS="-O3 -DASMV" ./configure\r | |
156 | case "$cc" in\r | |
157 | *gcc*) gcc=1 ;;\r | |
158 | *clang*) gcc=1 ;;\r | |
159 | esac\r | |
160 | case `$cc -v 2>&1` in\r | |
161 | *gcc*) gcc=1 ;;\r | |
162 | esac\r | |
163 | \r | |
164 | show $cc -c $test.c\r | |
165 | if test "$gcc" -eq 1 && ($cc -c $test.c) >> configure.log 2>&1; then\r | |
166 | echo ... using gcc >> configure.log\r | |
167 | CC="$cc"\r | |
168 | CFLAGS="${CFLAGS--O3} ${ARCHS}"\r | |
169 | SFLAGS="${CFLAGS--O3} -fPIC"\r | |
170 | LDFLAGS="${LDFLAGS} ${ARCHS}"\r | |
171 | if test $build64 -eq 1; then\r | |
172 | CFLAGS="${CFLAGS} -m64"\r | |
173 | SFLAGS="${SFLAGS} -m64"\r | |
174 | fi\r | |
175 | if test "${ZLIBGCCWARN}" = "YES"; then\r | |
176 | if test "$zconst" -eq 1; then\r | |
177 | CFLAGS="${CFLAGS} -Wall -Wextra -Wcast-qual -pedantic -DZLIB_CONST"\r | |
178 | else\r | |
179 | CFLAGS="${CFLAGS} -Wall -Wextra -pedantic"\r | |
180 | fi\r | |
181 | fi\r | |
182 | if test -z "$uname"; then\r | |
183 | uname=`(uname -s || echo unknown) 2>/dev/null`\r | |
184 | fi\r | |
185 | case "$uname" in\r | |
186 | Linux* | linux* | GNU | GNU/* | solaris*)\r | |
187 | LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map"} ;;\r | |
188 | *BSD | *bsd* | DragonFly)\r | |
189 | LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map"}\r | |
190 | LDCONFIG="ldconfig -m" ;;\r | |
191 | CYGWIN* | Cygwin* | cygwin* | OS/2*)\r | |
192 | EXE='.exe' ;;\r | |
193 | MINGW* | mingw*)\r | |
194 | # temporary bypass\r | |
195 | rm -f $test.[co] $test $test$shared_ext\r | |
196 | echo "Please use win32/Makefile.gcc instead." | tee -a configure.log\r | |
197 | leave 1\r | |
198 | LDSHARED=${LDSHARED-"$cc -shared"}\r | |
199 | LDSHAREDLIBC=""\r | |
200 | EXE='.exe' ;;\r | |
201 | QNX*) # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4\r | |
202 | # (alain.bonnefoy@icbt.com)\r | |
203 | LDSHARED=${LDSHARED-"$cc -shared -Wl,-hlibz.so.1"} ;;\r | |
204 | HP-UX*)\r | |
205 | LDSHARED=${LDSHARED-"$cc -shared $SFLAGS"}\r | |
206 | case `(uname -m || echo unknown) 2>/dev/null` in\r | |
207 | ia64)\r | |
208 | shared_ext='.so'\r | |
209 | SHAREDLIB='libz.so' ;;\r | |
210 | *)\r | |
211 | shared_ext='.sl'\r | |
212 | SHAREDLIB='libz.sl' ;;\r | |
213 | esac ;;\r | |
214 | Darwin* | darwin*)\r | |
215 | shared_ext='.dylib'\r | |
216 | SHAREDLIB=libz$shared_ext\r | |
217 | SHAREDLIBV=libz.$VER$shared_ext\r | |
218 | SHAREDLIBM=libz.$VER1$shared_ext\r | |
219 | LDSHARED=${LDSHARED-"$cc -dynamiclib -install_name $libdir/$SHAREDLIBM -compatibility_version $VER1 -current_version $VER3"}\r | |
220 | if libtool -V 2>&1 | grep Apple > /dev/null; then\r | |
221 | AR="libtool"\r | |
222 | else\r | |
223 | AR="/usr/bin/libtool"\r | |
224 | fi\r | |
225 | ARFLAGS="-o" ;;\r | |
226 | *) LDSHARED=${LDSHARED-"$cc -shared"} ;;\r | |
227 | esac\r | |
228 | else\r | |
229 | # find system name and corresponding cc options\r | |
230 | CC=${CC-cc}\r | |
231 | gcc=0\r | |
232 | echo ... using $CC >> configure.log\r | |
233 | if test -z "$uname"; then\r | |
234 | uname=`(uname -sr || echo unknown) 2>/dev/null`\r | |
235 | fi\r | |
236 | case "$uname" in\r | |
237 | HP-UX*) SFLAGS=${CFLAGS-"-O +z"}\r | |
238 | CFLAGS=${CFLAGS-"-O"}\r | |
239 | # LDSHARED=${LDSHARED-"ld -b +vnocompatwarnings"}\r | |
240 | LDSHARED=${LDSHARED-"ld -b"}\r | |
241 | case `(uname -m || echo unknown) 2>/dev/null` in\r | |
242 | ia64)\r | |
243 | shared_ext='.so'\r | |
244 | SHAREDLIB='libz.so' ;;\r | |
245 | *)\r | |
246 | shared_ext='.sl'\r | |
247 | SHAREDLIB='libz.sl' ;;\r | |
248 | esac ;;\r | |
249 | IRIX*) SFLAGS=${CFLAGS-"-ansi -O2 -rpath ."}\r | |
250 | CFLAGS=${CFLAGS-"-ansi -O2"}\r | |
251 | LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so.1"} ;;\r | |
252 | OSF1\ V4*) SFLAGS=${CFLAGS-"-O -std1"}\r | |
253 | CFLAGS=${CFLAGS-"-O -std1"}\r | |
254 | LDFLAGS="${LDFLAGS} -Wl,-rpath,."\r | |
255 | LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so -Wl,-msym -Wl,-rpath,$(libdir) -Wl,-set_version,${VER}:1.0"} ;;\r | |
256 | OSF1*) SFLAGS=${CFLAGS-"-O -std1"}\r | |
257 | CFLAGS=${CFLAGS-"-O -std1"}\r | |
258 | LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so.1"} ;;\r | |
259 | QNX*) SFLAGS=${CFLAGS-"-4 -O"}\r | |
260 | CFLAGS=${CFLAGS-"-4 -O"}\r | |
261 | LDSHARED=${LDSHARED-"cc"}\r | |
262 | RANLIB=${RANLIB-"true"}\r | |
263 | AR="cc"\r | |
264 | ARFLAGS="-A" ;;\r | |
265 | SCO_SV\ 3.2*) SFLAGS=${CFLAGS-"-O3 -dy -KPIC "}\r | |
266 | CFLAGS=${CFLAGS-"-O3"}\r | |
267 | LDSHARED=${LDSHARED-"cc -dy -KPIC -G"} ;;\r | |
268 | SunOS\ 5* | solaris*)\r | |
269 | LDSHARED=${LDSHARED-"cc -G -h libz$shared_ext.$VER1"}\r | |
270 | SFLAGS=${CFLAGS-"-fast -KPIC"}\r | |
271 | CFLAGS=${CFLAGS-"-fast"}\r | |
272 | if test $build64 -eq 1; then\r | |
273 | # old versions of SunPRO/Workshop/Studio don't support -m64,\r | |
274 | # but newer ones do. Check for it.\r | |
275 | flag64=`$CC -flags | egrep -- '^-m64'`\r | |
276 | if test x"$flag64" != x"" ; then\r | |
277 | CFLAGS="${CFLAGS} -m64"\r | |
278 | SFLAGS="${SFLAGS} -m64"\r | |
279 | else\r | |
280 | case `(uname -m || echo unknown) 2>/dev/null` in\r | |
281 | i86*)\r | |
282 | SFLAGS="$SFLAGS -xarch=amd64"\r | |
283 | CFLAGS="$CFLAGS -xarch=amd64" ;;\r | |
284 | *)\r | |
285 | SFLAGS="$SFLAGS -xarch=v9"\r | |
286 | CFLAGS="$CFLAGS -xarch=v9" ;;\r | |
287 | esac\r | |
288 | fi\r | |
289 | fi\r | |
290 | ;;\r | |
291 | SunOS\ 4*) SFLAGS=${CFLAGS-"-O2 -PIC"}\r | |
292 | CFLAGS=${CFLAGS-"-O2"}\r | |
293 | LDSHARED=${LDSHARED-"ld"} ;;\r | |
294 | SunStudio\ 9*) SFLAGS=${CFLAGS-"-fast -xcode=pic32 -xtarget=ultra3 -xarch=v9b"}\r | |
295 | CFLAGS=${CFLAGS-"-fast -xtarget=ultra3 -xarch=v9b"}\r | |
296 | LDSHARED=${LDSHARED-"cc -xarch=v9b"} ;;\r | |
297 | UNIX_System_V\ 4.2.0)\r | |
298 | SFLAGS=${CFLAGS-"-KPIC -O"}\r | |
299 | CFLAGS=${CFLAGS-"-O"}\r | |
300 | LDSHARED=${LDSHARED-"cc -G"} ;;\r | |
301 | UNIX_SV\ 4.2MP)\r | |
302 | SFLAGS=${CFLAGS-"-Kconform_pic -O"}\r | |
303 | CFLAGS=${CFLAGS-"-O"}\r | |
304 | LDSHARED=${LDSHARED-"cc -G"} ;;\r | |
305 | OpenUNIX\ 5)\r | |
306 | SFLAGS=${CFLAGS-"-KPIC -O"}\r | |
307 | CFLAGS=${CFLAGS-"-O"}\r | |
308 | LDSHARED=${LDSHARED-"cc -G"} ;;\r | |
309 | AIX*) # Courtesy of dbakker@arrayasolutions.com\r | |
310 | SFLAGS=${CFLAGS-"-O -qmaxmem=8192"}\r | |
311 | CFLAGS=${CFLAGS-"-O -qmaxmem=8192"}\r | |
312 | LDSHARED=${LDSHARED-"xlc -G"} ;;\r | |
313 | # send working options for other systems to zlib@gzip.org\r | |
314 | *) SFLAGS=${CFLAGS-"-O"}\r | |
315 | CFLAGS=${CFLAGS-"-O"}\r | |
316 | LDSHARED=${LDSHARED-"cc -shared"} ;;\r | |
317 | esac\r | |
318 | fi\r | |
319 | \r | |
320 | # destination names for shared library if not defined above\r | |
321 | SHAREDLIB=${SHAREDLIB-"libz$shared_ext"}\r | |
322 | SHAREDLIBV=${SHAREDLIBV-"libz$shared_ext.$VER"}\r | |
323 | SHAREDLIBM=${SHAREDLIBM-"libz$shared_ext.$VER1"}\r | |
324 | \r | |
325 | echo >> configure.log\r | |
326 | \r | |
327 | # define functions for testing compiler and library characteristics and logging the results\r | |
328 | \r | |
329 | cat > $test.c <<EOF\r | |
330 | #error error\r | |
331 | EOF\r | |
332 | if ($CC -c $CFLAGS $test.c) 2>/dev/null; then\r | |
333 | try()\r | |
334 | {\r | |
335 | show $*\r | |
336 | test "`( $* ) 2>&1 | tee -a configure.log`" = ""\r | |
337 | }\r | |
338 | echo - using any output from compiler to indicate an error >> configure.log\r | |
339 | else\r | |
340 | try()\r | |
341 | {\r | |
342 | show $*\r | |
343 | ( $* ) >> configure.log 2>&1\r | |
344 | ret=$?\r | |
345 | if test $ret -ne 0; then\r | |
346 | echo "(exit code "$ret")" >> configure.log\r | |
347 | fi\r | |
348 | return $ret\r | |
349 | }\r | |
350 | fi\r | |
351 | \r | |
352 | tryboth()\r | |
353 | {\r | |
354 | show $*\r | |
355 | got=`( $* ) 2>&1`\r | |
356 | ret=$?\r | |
357 | printf %s "$got" >> configure.log\r | |
358 | if test $ret -ne 0; then\r | |
359 | return $ret\r | |
360 | fi\r | |
361 | test "$got" = ""\r | |
362 | }\r | |
363 | \r | |
364 | cat > $test.c << EOF\r | |
365 | int foo() { return 0; }\r | |
366 | EOF\r | |
367 | echo "Checking for obsessive-compulsive compiler options..." >> configure.log\r | |
368 | if try $CC -c $CFLAGS $test.c; then\r | |
369 | :\r | |
370 | else\r | |
371 | echo "Compiler error reporting is too harsh for $0 (perhaps remove -Werror)." | tee -a configure.log\r | |
372 | leave 1\r | |
373 | fi\r | |
374 | \r | |
375 | echo >> configure.log\r | |
376 | \r | |
377 | # see if shared library build supported\r | |
378 | cat > $test.c <<EOF\r | |
379 | extern int getchar();\r | |
380 | int hello() {return getchar();}\r | |
381 | EOF\r | |
382 | if test $shared -eq 1; then\r | |
383 | echo Checking for shared library support... | tee -a configure.log\r | |
384 | # we must test in two steps (cc then ld), required at least on SunOS 4.x\r | |
385 | if try $CC -w -c $SFLAGS $test.c &&\r | |
386 | try $LDSHARED $SFLAGS -o $test$shared_ext $test.o; then\r | |
387 | echo Building shared library $SHAREDLIBV with $CC. | tee -a configure.log\r | |
388 | elif test -z "$old_cc" -a -z "$old_cflags"; then\r | |
389 | echo No shared library support. | tee -a configure.log\r | |
390 | shared=0;\r | |
391 | else\r | |
392 | echo 'No shared library support; try without defining CC and CFLAGS' | tee -a configure.log\r | |
393 | shared=0;\r | |
394 | fi\r | |
395 | fi\r | |
396 | if test $shared -eq 0; then\r | |
397 | LDSHARED="$CC"\r | |
398 | ALL="static"\r | |
399 | TEST="all teststatic"\r | |
400 | SHAREDLIB=""\r | |
401 | SHAREDLIBV=""\r | |
402 | SHAREDLIBM=""\r | |
403 | echo Building static library $STATICLIB version $VER with $CC. | tee -a configure.log\r | |
404 | else\r | |
405 | ALL="static shared"\r | |
406 | TEST="all teststatic testshared"\r | |
407 | fi\r | |
408 | \r | |
409 | # check for underscores in external names for use by assembler code\r | |
410 | CPP=${CPP-"$CC -E"}\r | |
411 | case $CFLAGS in\r | |
412 | *ASMV*)\r | |
413 | echo >> configure.log\r | |
414 | show "$NM $test.o | grep _hello"\r | |
415 | if test "`$NM $test.o | grep _hello | tee -a configure.log`" = ""; then\r | |
416 | CPP="$CPP -DNO_UNDERLINE"\r | |
417 | echo Checking for underline in external names... No. | tee -a configure.log\r | |
418 | else\r | |
419 | echo Checking for underline in external names... Yes. | tee -a configure.log\r | |
420 | fi ;;\r | |
421 | esac\r | |
422 | \r | |
423 | echo >> configure.log\r | |
424 | \r | |
425 | # check for large file support, and if none, check for fseeko()\r | |
426 | cat > $test.c <<EOF\r | |
427 | #include <sys/types.h>\r | |
428 | off64_t dummy = 0;\r | |
429 | EOF\r | |
430 | if try $CC -c $CFLAGS -D_LARGEFILE64_SOURCE=1 $test.c; then\r | |
431 | CFLAGS="${CFLAGS} -D_LARGEFILE64_SOURCE=1"\r | |
432 | SFLAGS="${SFLAGS} -D_LARGEFILE64_SOURCE=1"\r | |
433 | ALL="${ALL} all64"\r | |
434 | TEST="${TEST} test64"\r | |
435 | echo "Checking for off64_t... Yes." | tee -a configure.log\r | |
436 | echo "Checking for fseeko... Yes." | tee -a configure.log\r | |
437 | else\r | |
438 | echo "Checking for off64_t... No." | tee -a configure.log\r | |
439 | echo >> configure.log\r | |
440 | cat > $test.c <<EOF\r | |
441 | #include <stdio.h>\r | |
442 | int main(void) {\r | |
443 | fseeko(NULL, 0, 0);\r | |
444 | return 0;\r | |
445 | }\r | |
446 | EOF\r | |
447 | if try $CC $CFLAGS -o $test $test.c; then\r | |
448 | echo "Checking for fseeko... Yes." | tee -a configure.log\r | |
449 | else\r | |
450 | CFLAGS="${CFLAGS} -DNO_FSEEKO"\r | |
451 | SFLAGS="${SFLAGS} -DNO_FSEEKO"\r | |
452 | echo "Checking for fseeko... No." | tee -a configure.log\r | |
453 | fi\r | |
454 | fi\r | |
455 | \r | |
456 | echo >> configure.log\r | |
457 | \r | |
458 | # check for strerror() for use by gz* functions\r | |
459 | cat > $test.c <<EOF\r | |
460 | #include <string.h>\r | |
461 | #include <errno.h>\r | |
462 | int main() { return strlen(strerror(errno)); }\r | |
463 | EOF\r | |
464 | if try $CC $CFLAGS -o $test $test.c; then\r | |
465 | echo "Checking for strerror... Yes." | tee -a configure.log\r | |
466 | else\r | |
467 | CFLAGS="${CFLAGS} -DNO_STRERROR"\r | |
468 | SFLAGS="${SFLAGS} -DNO_STRERROR"\r | |
469 | echo "Checking for strerror... No." | tee -a configure.log\r | |
470 | fi\r | |
471 | \r | |
472 | # copy clean zconf.h for subsequent edits\r | |
473 | cp -p zconf.h.in zconf.h\r | |
474 | \r | |
475 | echo >> configure.log\r | |
476 | \r | |
477 | # check for unistd.h and save result in zconf.h\r | |
478 | cat > $test.c <<EOF\r | |
479 | #include <unistd.h>\r | |
480 | int main() { return 0; }\r | |
481 | EOF\r | |
482 | if try $CC -c $CFLAGS $test.c; then\r | |
483 | sed < zconf.h "/^#ifdef HAVE_UNISTD_H.* may be/s/def HAVE_UNISTD_H\(.*\) may be/ 1\1 was/" > zconf.temp.h\r | |
484 | mv zconf.temp.h zconf.h\r | |
485 | echo "Checking for unistd.h... Yes." | tee -a configure.log\r | |
486 | else\r | |
487 | echo "Checking for unistd.h... No." | tee -a configure.log\r | |
488 | fi\r | |
489 | \r | |
490 | echo >> configure.log\r | |
491 | \r | |
492 | # check for stdarg.h and save result in zconf.h\r | |
493 | cat > $test.c <<EOF\r | |
494 | #include <stdarg.h>\r | |
495 | int main() { return 0; }\r | |
496 | EOF\r | |
497 | if try $CC -c $CFLAGS $test.c; then\r | |
498 | sed < zconf.h "/^#ifdef HAVE_STDARG_H.* may be/s/def HAVE_STDARG_H\(.*\) may be/ 1\1 was/" > zconf.temp.h\r | |
499 | mv zconf.temp.h zconf.h\r | |
500 | echo "Checking for stdarg.h... Yes." | tee -a configure.log\r | |
501 | else\r | |
502 | echo "Checking for stdarg.h... No." | tee -a configure.log\r | |
503 | fi\r | |
504 | \r | |
505 | # if the z_ prefix was requested, save that in zconf.h\r | |
506 | if test $zprefix -eq 1; then\r | |
507 | sed < zconf.h "/#ifdef Z_PREFIX.* may be/s/def Z_PREFIX\(.*\) may be/ 1\1 was/" > zconf.temp.h\r | |
508 | mv zconf.temp.h zconf.h\r | |
509 | echo >> configure.log\r | |
510 | echo "Using z_ prefix on all symbols." | tee -a configure.log\r | |
511 | fi\r | |
512 | \r | |
513 | # if --solo compilation was requested, save that in zconf.h and remove gz stuff from object lists\r | |
514 | if test $solo -eq 1; then\r | |
515 | sed '/#define ZCONF_H/a\\r | |
516 | #define Z_SOLO\r | |
517 | \r | |
518 | ' < zconf.h > zconf.temp.h\r | |
519 | mv zconf.temp.h zconf.h\r | |
520 | OBJC='$(OBJZ)'\r | |
521 | PIC_OBJC='$(PIC_OBJZ)'\r | |
522 | fi\r | |
523 | \r | |
524 | # if code coverage testing was requested, use older gcc if defined, e.g. "gcc-4.2" on Mac OS X\r | |
525 | if test $cover -eq 1; then\r | |
526 | CFLAGS="${CFLAGS} -fprofile-arcs -ftest-coverage"\r | |
527 | if test -n "$GCC_CLASSIC"; then\r | |
528 | CC=$GCC_CLASSIC\r | |
529 | fi\r | |
530 | fi\r | |
531 | \r | |
532 | echo >> configure.log\r | |
533 | \r | |
534 | # conduct a series of tests to resolve eight possible cases of using "vs" or "s" printf functions\r | |
535 | # (using stdarg or not), with or without "n" (proving size of buffer), and with or without a\r | |
536 | # return value. The most secure result is vsnprintf() with a return value. snprintf() with a\r | |
537 | # return value is secure as well, but then gzprintf() will be limited to 20 arguments.\r | |
538 | cat > $test.c <<EOF\r | |
539 | #include <stdio.h>\r | |
540 | #include <stdarg.h>\r | |
541 | #include "zconf.h"\r | |
542 | int main()\r | |
543 | {\r | |
544 | #ifndef STDC\r | |
545 | choke me\r | |
546 | #endif\r | |
547 | return 0;\r | |
548 | }\r | |
549 | EOF\r | |
550 | if try $CC -c $CFLAGS $test.c; then\r | |
551 | echo "Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf()." | tee -a configure.log\r | |
552 | \r | |
553 | echo >> configure.log\r | |
554 | cat > $test.c <<EOF\r | |
555 | #include <stdio.h>\r | |
556 | #include <stdarg.h>\r | |
557 | int mytest(const char *fmt, ...)\r | |
558 | {\r | |
559 | char buf[20];\r | |
560 | va_list ap;\r | |
561 | va_start(ap, fmt);\r | |
562 | vsnprintf(buf, sizeof(buf), fmt, ap);\r | |
563 | va_end(ap);\r | |
564 | return 0;\r | |
565 | }\r | |
566 | int main()\r | |
567 | {\r | |
568 | return (mytest("Hello%d\n", 1));\r | |
569 | }\r | |
570 | EOF\r | |
571 | if try $CC $CFLAGS -o $test $test.c; then\r | |
572 | echo "Checking for vsnprintf() in stdio.h... Yes." | tee -a configure.log\r | |
573 | \r | |
574 | echo >> configure.log\r | |
575 | cat >$test.c <<EOF\r | |
576 | #include <stdio.h>\r | |
577 | #include <stdarg.h>\r | |
578 | int mytest(const char *fmt, ...)\r | |
579 | {\r | |
580 | int n;\r | |
581 | char buf[20];\r | |
582 | va_list ap;\r | |
583 | va_start(ap, fmt);\r | |
584 | n = vsnprintf(buf, sizeof(buf), fmt, ap);\r | |
585 | va_end(ap);\r | |
586 | return n;\r | |
587 | }\r | |
588 | int main()\r | |
589 | {\r | |
590 | return (mytest("Hello%d\n", 1));\r | |
591 | }\r | |
592 | EOF\r | |
593 | \r | |
594 | if try $CC -c $CFLAGS $test.c; then\r | |
595 | echo "Checking for return value of vsnprintf()... Yes." | tee -a configure.log\r | |
596 | else\r | |
597 | CFLAGS="$CFLAGS -DHAS_vsnprintf_void"\r | |
598 | SFLAGS="$SFLAGS -DHAS_vsnprintf_void"\r | |
599 | echo "Checking for return value of vsnprintf()... No." | tee -a configure.log\r | |
600 | echo " WARNING: apparently vsnprintf() does not return a value. zlib" | tee -a configure.log\r | |
601 | echo " can build but will be open to possible string-format security" | tee -a configure.log\r | |
602 | echo " vulnerabilities." | tee -a configure.log\r | |
603 | fi\r | |
604 | else\r | |
605 | CFLAGS="$CFLAGS -DNO_vsnprintf"\r | |
606 | SFLAGS="$SFLAGS -DNO_vsnprintf"\r | |
607 | echo "Checking for vsnprintf() in stdio.h... No." | tee -a configure.log\r | |
608 | echo " WARNING: vsnprintf() not found, falling back to vsprintf(). zlib" | tee -a configure.log\r | |
609 | echo " can build but will be open to possible buffer-overflow security" | tee -a configure.log\r | |
610 | echo " vulnerabilities." | tee -a configure.log\r | |
611 | \r | |
612 | echo >> configure.log\r | |
613 | cat >$test.c <<EOF\r | |
614 | #include <stdio.h>\r | |
615 | #include <stdarg.h>\r | |
616 | int mytest(const char *fmt, ...)\r | |
617 | {\r | |
618 | int n;\r | |
619 | char buf[20];\r | |
620 | va_list ap;\r | |
621 | va_start(ap, fmt);\r | |
622 | n = vsprintf(buf, fmt, ap);\r | |
623 | va_end(ap);\r | |
624 | return n;\r | |
625 | }\r | |
626 | int main()\r | |
627 | {\r | |
628 | return (mytest("Hello%d\n", 1));\r | |
629 | }\r | |
630 | EOF\r | |
631 | \r | |
632 | if try $CC -c $CFLAGS $test.c; then\r | |
633 | echo "Checking for return value of vsprintf()... Yes." | tee -a configure.log\r | |
634 | else\r | |
635 | CFLAGS="$CFLAGS -DHAS_vsprintf_void"\r | |
636 | SFLAGS="$SFLAGS -DHAS_vsprintf_void"\r | |
637 | echo "Checking for return value of vsprintf()... No." | tee -a configure.log\r | |
638 | echo " WARNING: apparently vsprintf() does not return a value. zlib" | tee -a configure.log\r | |
639 | echo " can build but will be open to possible string-format security" | tee -a configure.log\r | |
640 | echo " vulnerabilities." | tee -a configure.log\r | |
641 | fi\r | |
642 | fi\r | |
643 | else\r | |
644 | echo "Checking whether to use vs[n]printf() or s[n]printf()... using s[n]printf()." | tee -a configure.log\r | |
645 | \r | |
646 | echo >> configure.log\r | |
647 | cat >$test.c <<EOF\r | |
648 | #include <stdio.h>\r | |
649 | int mytest()\r | |
650 | {\r | |
651 | char buf[20];\r | |
652 | snprintf(buf, sizeof(buf), "%s", "foo");\r | |
653 | return 0;\r | |
654 | }\r | |
655 | int main()\r | |
656 | {\r | |
657 | return (mytest());\r | |
658 | }\r | |
659 | EOF\r | |
660 | \r | |
661 | if try $CC $CFLAGS -o $test $test.c; then\r | |
662 | echo "Checking for snprintf() in stdio.h... Yes." | tee -a configure.log\r | |
663 | \r | |
664 | echo >> configure.log\r | |
665 | cat >$test.c <<EOF\r | |
666 | #include <stdio.h>\r | |
667 | int mytest()\r | |
668 | {\r | |
669 | char buf[20];\r | |
670 | return snprintf(buf, sizeof(buf), "%s", "foo");\r | |
671 | }\r | |
672 | int main()\r | |
673 | {\r | |
674 | return (mytest());\r | |
675 | }\r | |
676 | EOF\r | |
677 | \r | |
678 | if try $CC -c $CFLAGS $test.c; then\r | |
679 | echo "Checking for return value of snprintf()... Yes." | tee -a configure.log\r | |
680 | else\r | |
681 | CFLAGS="$CFLAGS -DHAS_snprintf_void"\r | |
682 | SFLAGS="$SFLAGS -DHAS_snprintf_void"\r | |
683 | echo "Checking for return value of snprintf()... No." | tee -a configure.log\r | |
684 | echo " WARNING: apparently snprintf() does not return a value. zlib" | tee -a configure.log\r | |
685 | echo " can build but will be open to possible string-format security" | tee -a configure.log\r | |
686 | echo " vulnerabilities." | tee -a configure.log\r | |
687 | fi\r | |
688 | else\r | |
689 | CFLAGS="$CFLAGS -DNO_snprintf"\r | |
690 | SFLAGS="$SFLAGS -DNO_snprintf"\r | |
691 | echo "Checking for snprintf() in stdio.h... No." | tee -a configure.log\r | |
692 | echo " WARNING: snprintf() not found, falling back to sprintf(). zlib" | tee -a configure.log\r | |
693 | echo " can build but will be open to possible buffer-overflow security" | tee -a configure.log\r | |
694 | echo " vulnerabilities." | tee -a configure.log\r | |
695 | \r | |
696 | echo >> configure.log\r | |
697 | cat >$test.c <<EOF\r | |
698 | #include <stdio.h>\r | |
699 | int mytest()\r | |
700 | {\r | |
701 | char buf[20];\r | |
702 | return sprintf(buf, "%s", "foo");\r | |
703 | }\r | |
704 | int main()\r | |
705 | {\r | |
706 | return (mytest());\r | |
707 | }\r | |
708 | EOF\r | |
709 | \r | |
710 | if try $CC -c $CFLAGS $test.c; then\r | |
711 | echo "Checking for return value of sprintf()... Yes." | tee -a configure.log\r | |
712 | else\r | |
713 | CFLAGS="$CFLAGS -DHAS_sprintf_void"\r | |
714 | SFLAGS="$SFLAGS -DHAS_sprintf_void"\r | |
715 | echo "Checking for return value of sprintf()... No." | tee -a configure.log\r | |
716 | echo " WARNING: apparently sprintf() does not return a value. zlib" | tee -a configure.log\r | |
717 | echo " can build but will be open to possible string-format security" | tee -a configure.log\r | |
718 | echo " vulnerabilities." | tee -a configure.log\r | |
719 | fi\r | |
720 | fi\r | |
721 | fi\r | |
722 | \r | |
723 | # see if we can hide zlib internal symbols that are linked between separate source files\r | |
724 | if test "$gcc" -eq 1; then\r | |
725 | echo >> configure.log\r | |
726 | cat > $test.c <<EOF\r | |
727 | #define ZLIB_INTERNAL __attribute__((visibility ("hidden")))\r | |
728 | int ZLIB_INTERNAL foo;\r | |
729 | int main()\r | |
730 | {\r | |
731 | return 0;\r | |
732 | }\r | |
733 | EOF\r | |
734 | if tryboth $CC -c $CFLAGS $test.c; then\r | |
735 | CFLAGS="$CFLAGS -DHAVE_HIDDEN"\r | |
736 | SFLAGS="$SFLAGS -DHAVE_HIDDEN"\r | |
737 | echo "Checking for attribute(visibility) support... Yes." | tee -a configure.log\r | |
738 | else\r | |
739 | echo "Checking for attribute(visibility) support... No." | tee -a configure.log\r | |
740 | fi\r | |
741 | fi\r | |
742 | \r | |
743 | # show the results in the log\r | |
744 | echo >> configure.log\r | |
745 | echo ALL = $ALL >> configure.log\r | |
746 | echo AR = $AR >> configure.log\r | |
747 | echo ARFLAGS = $ARFLAGS >> configure.log\r | |
748 | echo CC = $CC >> configure.log\r | |
749 | echo CFLAGS = $CFLAGS >> configure.log\r | |
750 | echo CPP = $CPP >> configure.log\r | |
751 | echo EXE = $EXE >> configure.log\r | |
752 | echo LDCONFIG = $LDCONFIG >> configure.log\r | |
753 | echo LDFLAGS = $LDFLAGS >> configure.log\r | |
754 | echo LDSHARED = $LDSHARED >> configure.log\r | |
755 | echo LDSHAREDLIBC = $LDSHAREDLIBC >> configure.log\r | |
756 | echo OBJC = $OBJC >> configure.log\r | |
757 | echo PIC_OBJC = $PIC_OBJC >> configure.log\r | |
758 | echo RANLIB = $RANLIB >> configure.log\r | |
759 | echo SFLAGS = $SFLAGS >> configure.log\r | |
760 | echo SHAREDLIB = $SHAREDLIB >> configure.log\r | |
761 | echo SHAREDLIBM = $SHAREDLIBM >> configure.log\r | |
762 | echo SHAREDLIBV = $SHAREDLIBV >> configure.log\r | |
763 | echo STATICLIB = $STATICLIB >> configure.log\r | |
764 | echo TEST = $TEST >> configure.log\r | |
765 | echo VER = $VER >> configure.log\r | |
766 | echo Z_U4 = $Z_U4 >> configure.log\r | |
767 | echo exec_prefix = $exec_prefix >> configure.log\r | |
768 | echo includedir = $includedir >> configure.log\r | |
769 | echo libdir = $libdir >> configure.log\r | |
770 | echo mandir = $mandir >> configure.log\r | |
771 | echo prefix = $prefix >> configure.log\r | |
772 | echo sharedlibdir = $sharedlibdir >> configure.log\r | |
773 | echo uname = $uname >> configure.log\r | |
774 | \r | |
775 | # udpate Makefile with the configure results\r | |
776 | sed < Makefile.in "\r | |
777 | /^CC *=/s#=.*#=$CC#\r | |
778 | /^CFLAGS *=/s#=.*#=$CFLAGS#\r | |
779 | /^SFLAGS *=/s#=.*#=$SFLAGS#\r | |
780 | /^LDFLAGS *=/s#=.*#=$LDFLAGS#\r | |
781 | /^LDSHARED *=/s#=.*#=$LDSHARED#\r | |
782 | /^CPP *=/s#=.*#=$CPP#\r | |
783 | /^STATICLIB *=/s#=.*#=$STATICLIB#\r | |
784 | /^SHAREDLIB *=/s#=.*#=$SHAREDLIB#\r | |
785 | /^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#\r | |
786 | /^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#\r | |
787 | /^AR *=/s#=.*#=$AR#\r | |
788 | /^ARFLAGS *=/s#=.*#=$ARFLAGS#\r | |
789 | /^RANLIB *=/s#=.*#=$RANLIB#\r | |
790 | /^LDCONFIG *=/s#=.*#=$LDCONFIG#\r | |
791 | /^LDSHAREDLIBC *=/s#=.*#=$LDSHAREDLIBC#\r | |
792 | /^EXE *=/s#=.*#=$EXE#\r | |
793 | /^prefix *=/s#=.*#=$prefix#\r | |
794 | /^exec_prefix *=/s#=.*#=$exec_prefix#\r | |
795 | /^libdir *=/s#=.*#=$libdir#\r | |
796 | /^sharedlibdir *=/s#=.*#=$sharedlibdir#\r | |
797 | /^includedir *=/s#=.*#=$includedir#\r | |
798 | /^mandir *=/s#=.*#=$mandir#\r | |
799 | /^OBJC *=/s#=.*#= $OBJC#\r | |
800 | /^PIC_OBJC *=/s#=.*#= $PIC_OBJC#\r | |
801 | /^all: */s#:.*#: $ALL#\r | |
802 | /^test: */s#:.*#: $TEST#\r | |
803 | " > Makefile\r | |
804 | \r | |
805 | # create zlib.pc with the configure results\r | |
806 | sed < zlib.pc.in "\r | |
807 | /^CC *=/s#=.*#=$CC#\r | |
808 | /^CFLAGS *=/s#=.*#=$CFLAGS#\r | |
809 | /^CPP *=/s#=.*#=$CPP#\r | |
810 | /^LDSHARED *=/s#=.*#=$LDSHARED#\r | |
811 | /^STATICLIB *=/s#=.*#=$STATICLIB#\r | |
812 | /^SHAREDLIB *=/s#=.*#=$SHAREDLIB#\r | |
813 | /^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#\r | |
814 | /^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#\r | |
815 | /^AR *=/s#=.*#=$AR#\r | |
816 | /^ARFLAGS *=/s#=.*#=$ARFLAGS#\r | |
817 | /^RANLIB *=/s#=.*#=$RANLIB#\r | |
818 | /^EXE *=/s#=.*#=$EXE#\r | |
819 | /^prefix *=/s#=.*#=$prefix#\r | |
820 | /^exec_prefix *=/s#=.*#=$exec_prefix#\r | |
821 | /^libdir *=/s#=.*#=$libdir#\r | |
822 | /^sharedlibdir *=/s#=.*#=$sharedlibdir#\r | |
823 | /^includedir *=/s#=.*#=$includedir#\r | |
824 | /^mandir *=/s#=.*#=$mandir#\r | |
825 | /^LDFLAGS *=/s#=.*#=$LDFLAGS#\r | |
826 | " | sed -e "\r | |
827 | s/\@VERSION\@/$VER/g;\r | |
828 | " > zlib.pc\r | |
829 | \r | |
830 | # done\r | |
831 | leave 0\r |