/src/FreeImage/Source/ZLib/configure

https://bitbucket.org/cabalistic/ogredeps/ · Shell · 720 lines · 629 code · 45 blank · 46 comment · 74 complexity · aa9122a87a17c296550fd9b6336f3255 MD5 · raw file

  1. #!/bin/sh
  2. # configure script for zlib.
  3. #
  4. # Normally configure builds both a static and a shared library.
  5. # If you want to build just a static library, use: ./configure --static
  6. #
  7. # To impose specific compiler or flags or install directory, use for example:
  8. # prefix=$HOME CC=cc CFLAGS="-O4" ./configure
  9. # or for csh/tcsh users:
  10. # (setenv prefix $HOME; setenv CC cc; setenv CFLAGS "-O4"; ./configure)
  11. # Incorrect settings of CC or CFLAGS may prevent creating a shared library.
  12. # If you have problems, try without defining CC and CFLAGS before reporting
  13. # an error.
  14. echo -------------------- >> configure.log
  15. echo $0 $* >> configure.log
  16. date >> configure.log
  17. if [ -n "${CHOST}" ]; then
  18. uname="`echo "${CHOST}" | sed -e 's/^[^-]*-\([^-]*\)$/\1/' -e 's/^[^-]*-[^-]*-\([^-]*\)$/\1/' -e 's/^[^-]*-[^-]*-\([^-]*\)-.*$/\1/'`"
  19. CROSS_PREFIX="${CHOST}-"
  20. fi
  21. STATICLIB=libz.a
  22. VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`
  23. VER3=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\\.[0-9]*\).*/\1/p' < zlib.h`
  24. VER2=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < zlib.h`
  25. VER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < zlib.h`
  26. if "${CROSS_PREFIX}ar" --version >/dev/null 2>/dev/null || test $? -lt 126; then
  27. AR=${AR-"${CROSS_PREFIX}ar"}
  28. test -n "${CROSS_PREFIX}" && echo Using ${AR} | tee -a configure.log
  29. else
  30. AR=${AR-"ar"}
  31. test -n "${CROSS_PREFIX}" && echo Using ${AR} | tee -a configure.log
  32. fi
  33. ARFLAGS=${ARFLAGS-"rc"}
  34. if "${CROSS_PREFIX}ranlib" --version >/dev/null 2>/dev/null || test $? -lt 126; then
  35. RANLIB=${RANLIB-"${CROSS_PREFIX}ranlib"}
  36. test -n "${CROSS_PREFIX}" && echo Using ${RANLIB} | tee -a configure.log
  37. else
  38. RANLIB=${RANLIB-"ranlib"}
  39. fi
  40. if "${CROSS_PREFIX}nm" --version >/dev/null 2>/dev/null || test $? -lt 126; then
  41. NM=${NM-"${CROSS_PREFIX}nm"}
  42. test -n "${CROSS_PREFIX}" && echo Using ${NM} | tee -a configure.log
  43. else
  44. NM=${NM-"nm"}
  45. fi
  46. LDCONFIG=${LDCONFIG-"ldconfig"}
  47. LDSHAREDLIBC="${LDSHAREDLIBC--lc}"
  48. ARCHS=
  49. prefix=${prefix-/usr/local}
  50. exec_prefix=${exec_prefix-'${prefix}'}
  51. libdir=${libdir-'${exec_prefix}/lib'}
  52. sharedlibdir=${sharedlibdir-'${libdir}'}
  53. includedir=${includedir-'${prefix}/include'}
  54. mandir=${mandir-'${prefix}/share/man'}
  55. shared_ext='.so'
  56. shared=1
  57. solo=0
  58. cover=0
  59. zprefix=0
  60. build64=0
  61. gcc=0
  62. old_cc="$CC"
  63. old_cflags="$CFLAGS"
  64. OBJC='$(OBJZ) $(OBJG)'
  65. PIC_OBJC='$(PIC_OBJZ) $(PIC_OBJG)'
  66. while test $# -ge 1
  67. do
  68. case "$1" in
  69. -h* | --help)
  70. echo 'usage:' | tee -a configure.log
  71. echo ' configure [--zprefix] [--prefix=PREFIX] [--eprefix=EXPREFIX]' | tee -a configure.log
  72. echo ' [--static] [--64] [--libdir=LIBDIR] [--sharedlibdir=LIBDIR]' | tee -a configure.log
  73. echo ' [--includedir=INCLUDEDIR] [--archs="-arch i386 -arch x86_64"]' | tee -a configure.log
  74. exit 0 ;;
  75. -p*=* | --prefix=*) prefix=`echo $1 | sed 's/.*=//'`; shift ;;
  76. -e*=* | --eprefix=*) exec_prefix=`echo $1 | sed 's/.*=//'`; shift ;;
  77. -l*=* | --libdir=*) libdir=`echo $1 | sed 's/.*=//'`; shift ;;
  78. --sharedlibdir=*) sharedlibdir=`echo $1 | sed 's/.*=//'`; shift ;;
  79. -i*=* | --includedir=*) includedir=`echo $1 | sed 's/.*=//'`;shift ;;
  80. -u*=* | --uname=*) uname=`echo $1 | sed 's/.*=//'`;shift ;;
  81. -p* | --prefix) prefix="$2"; shift; shift ;;
  82. -e* | --eprefix) exec_prefix="$2"; shift; shift ;;
  83. -l* | --libdir) libdir="$2"; shift; shift ;;
  84. -i* | --includedir) includedir="$2"; shift; shift ;;
  85. -s* | --shared | --enable-shared) shared=1; shift ;;
  86. -t | --static) shared=0; shift ;;
  87. --solo) solo=1; shift ;;
  88. --cover) cover=1; shift ;;
  89. -z* | --zprefix) zprefix=1; shift ;;
  90. -6* | --64) build64=1; shift ;;
  91. -a*=* | --archs=*) ARCHS=`echo $1 | sed 's/.*=//'`; shift ;;
  92. --sysconfdir=*) echo "ignored option: --sysconfdir" | tee -a configure.log; shift ;;
  93. --localstatedir=*) echo "ignored option: --localstatedir" | tee -a configure.log; shift ;;
  94. *) echo "unknown option: $1"; echo "$0 --help for help" | tee -a configure.log; exit 1 ;;
  95. esac
  96. done
  97. test=ztest$$
  98. show()
  99. {
  100. case "$*" in
  101. *$test.c*)
  102. echo === $test.c === >> configure.log
  103. cat $test.c >> configure.log
  104. echo === >> configure.log;;
  105. esac
  106. echo $* >> configure.log
  107. }
  108. cat > $test.c <<EOF
  109. #error error
  110. EOF
  111. if ($CC -c $CFLAGS $test.c) 2>/dev/null; then
  112. try()
  113. {
  114. show $*
  115. test "`( $* ) 2>&1 | tee -a configure.log`" = ""
  116. }
  117. echo - using any output from compiler to indicate an error >> configure.log
  118. else
  119. try()
  120. {
  121. show $*
  122. ( $* ) >> configure.log 2>&1
  123. ret=$?
  124. if test $ret -ne 0; then
  125. echo "(exit code "$ret")" >> configure.log
  126. fi
  127. return $ret
  128. }
  129. fi
  130. echo >> configure.log
  131. cat > $test.c <<EOF
  132. extern int getchar();
  133. int hello() {return getchar();}
  134. EOF
  135. test -z "$CC" && echo Checking for ${CROSS_PREFIX}gcc... | tee -a configure.log
  136. cc=${CC-${CROSS_PREFIX}gcc}
  137. cflags=${CFLAGS-"-O3"}
  138. # to force the asm version use: CFLAGS="-O3 -DASMV" ./configure
  139. case "$cc" in
  140. *gcc*) gcc=1 ;;
  141. esac
  142. case `$cc -v 2>&1` in
  143. *gcc*) gcc=1 ;;
  144. esac
  145. show $cc -c $cflags $test.c
  146. if test "$gcc" -eq 1 && ($cc -c $cflags $test.c) >> configure.log 2>&1; then
  147. echo ... using gcc >> configure.log
  148. CC="$cc"
  149. CFLAGS="${CFLAGS--O3} ${ARCHS}"
  150. SFLAGS="${CFLAGS--O3} -fPIC"
  151. LDFLAGS="${LDFLAGS} ${ARCHS}"
  152. if test $build64 -eq 1; then
  153. CFLAGS="${CFLAGS} -m64"
  154. SFLAGS="${SFLAGS} -m64"
  155. fi
  156. if test "${ZLIBGCCWARN}" = "YES"; then
  157. CFLAGS="${CFLAGS} -Wall -Wextra -pedantic"
  158. fi
  159. if test -z "$uname"; then
  160. uname=`(uname -s || echo unknown) 2>/dev/null`
  161. fi
  162. case "$uname" in
  163. Linux* | linux* | GNU | GNU/* | solaris*)
  164. LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map"} ;;
  165. *BSD | *bsd* | DragonFly)
  166. LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map"}
  167. LDCONFIG="ldconfig -m" ;;
  168. CYGWIN* | Cygwin* | cygwin* | OS/2*)
  169. EXE='.exe' ;;
  170. MINGW* | mingw*)
  171. # temporary bypass
  172. rm -f $test.[co] $test $test$shared_ext
  173. echo "Please use win32/Makefile.gcc instead." | tee -a configure.log
  174. exit 1
  175. LDSHARED=${LDSHARED-"$cc -shared"}
  176. LDSHAREDLIBC=""
  177. EXE='.exe' ;;
  178. QNX*) # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4
  179. # (alain.bonnefoy@icbt.com)
  180. LDSHARED=${LDSHARED-"$cc -shared -Wl,-hlibz.so.1"} ;;
  181. HP-UX*)
  182. LDSHARED=${LDSHARED-"$cc -shared $SFLAGS"}
  183. case `(uname -m || echo unknown) 2>/dev/null` in
  184. ia64)
  185. shared_ext='.so'
  186. SHAREDLIB='libz.so' ;;
  187. *)
  188. shared_ext='.sl'
  189. SHAREDLIB='libz.sl' ;;
  190. esac ;;
  191. Darwin* | darwin*)
  192. shared_ext='.dylib'
  193. SHAREDLIB=libz$shared_ext
  194. SHAREDLIBV=libz.$VER$shared_ext
  195. SHAREDLIBM=libz.$VER1$shared_ext
  196. LDSHARED=${LDSHARED-"$cc -dynamiclib -install_name $libdir/$SHAREDLIBM -compatibility_version $VER1 -current_version $VER3"}
  197. AR="libtool"
  198. ARFLAGS="-o" ;;
  199. *) LDSHARED=${LDSHARED-"$cc -shared"} ;;
  200. esac
  201. else
  202. # find system name and corresponding cc options
  203. CC=${CC-cc}
  204. gcc=0
  205. echo ... using $CC >> configure.log
  206. if test -z "$uname"; then
  207. uname=`(uname -sr || echo unknown) 2>/dev/null`
  208. fi
  209. case "$uname" in
  210. HP-UX*) SFLAGS=${CFLAGS-"-O +z"}
  211. CFLAGS=${CFLAGS-"-O"}
  212. # LDSHARED=${LDSHARED-"ld -b +vnocompatwarnings"}
  213. LDSHARED=${LDSHARED-"ld -b"}
  214. case `(uname -m || echo unknown) 2>/dev/null` in
  215. ia64)
  216. shared_ext='.so'
  217. SHAREDLIB='libz.so' ;;
  218. *)
  219. shared_ext='.sl'
  220. SHAREDLIB='libz.sl' ;;
  221. esac ;;
  222. IRIX*) SFLAGS=${CFLAGS-"-ansi -O2 -rpath ."}
  223. CFLAGS=${CFLAGS-"-ansi -O2"}
  224. LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so.1"} ;;
  225. OSF1\ V4*) SFLAGS=${CFLAGS-"-O -std1"}
  226. CFLAGS=${CFLAGS-"-O -std1"}
  227. LDFLAGS="${LDFLAGS} -Wl,-rpath,."
  228. LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so -Wl,-msym -Wl,-rpath,$(libdir) -Wl,-set_version,${VER}:1.0"} ;;
  229. OSF1*) SFLAGS=${CFLAGS-"-O -std1"}
  230. CFLAGS=${CFLAGS-"-O -std1"}
  231. LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so.1"} ;;
  232. QNX*) SFLAGS=${CFLAGS-"-4 -O"}
  233. CFLAGS=${CFLAGS-"-4 -O"}
  234. LDSHARED=${LDSHARED-"cc"}
  235. RANLIB=${RANLIB-"true"}
  236. AR="cc"
  237. ARFLAGS="-A" ;;
  238. SCO_SV\ 3.2*) SFLAGS=${CFLAGS-"-O3 -dy -KPIC "}
  239. CFLAGS=${CFLAGS-"-O3"}
  240. LDSHARED=${LDSHARED-"cc -dy -KPIC -G"} ;;
  241. SunOS\ 5* | solaris*)
  242. LDSHARED=${LDSHARED-"cc -G"}
  243. case `(uname -m || echo unknown) 2>/dev/null` in
  244. i86*)
  245. SFLAGS=${CFLAGS-"-xpentium -fast -KPIC -R."}
  246. CFLAGS=${CFLAGS-"-xpentium -fast"} ;;
  247. *)
  248. SFLAGS=${CFLAGS-"-fast -xcg92 -KPIC -R."}
  249. CFLAGS=${CFLAGS-"-fast -xcg92"} ;;
  250. esac ;;
  251. SunOS\ 4*) SFLAGS=${CFLAGS-"-O2 -PIC"}
  252. CFLAGS=${CFLAGS-"-O2"}
  253. LDSHARED=${LDSHARED-"ld"} ;;
  254. SunStudio\ 9*) SFLAGS=${CFLAGS-"-fast -xcode=pic32 -xtarget=ultra3 -xarch=v9b"}
  255. CFLAGS=${CFLAGS-"-fast -xtarget=ultra3 -xarch=v9b"}
  256. LDSHARED=${LDSHARED-"cc -xarch=v9b"} ;;
  257. UNIX_System_V\ 4.2.0)
  258. SFLAGS=${CFLAGS-"-KPIC -O"}
  259. CFLAGS=${CFLAGS-"-O"}
  260. LDSHARED=${LDSHARED-"cc -G"} ;;
  261. UNIX_SV\ 4.2MP)
  262. SFLAGS=${CFLAGS-"-Kconform_pic -O"}
  263. CFLAGS=${CFLAGS-"-O"}
  264. LDSHARED=${LDSHARED-"cc -G"} ;;
  265. OpenUNIX\ 5)
  266. SFLAGS=${CFLAGS-"-KPIC -O"}
  267. CFLAGS=${CFLAGS-"-O"}
  268. LDSHARED=${LDSHARED-"cc -G"} ;;
  269. AIX*) # Courtesy of dbakker@arrayasolutions.com
  270. SFLAGS=${CFLAGS-"-O -qmaxmem=8192"}
  271. CFLAGS=${CFLAGS-"-O -qmaxmem=8192"}
  272. LDSHARED=${LDSHARED-"xlc -G"} ;;
  273. # send working options for other systems to zlib@gzip.org
  274. *) SFLAGS=${CFLAGS-"-O"}
  275. CFLAGS=${CFLAGS-"-O"}
  276. LDSHARED=${LDSHARED-"cc -shared"} ;;
  277. esac
  278. fi
  279. SHAREDLIB=${SHAREDLIB-"libz$shared_ext"}
  280. SHAREDLIBV=${SHAREDLIBV-"libz$shared_ext.$VER"}
  281. SHAREDLIBM=${SHAREDLIBM-"libz$shared_ext.$VER1"}
  282. echo >> configure.log
  283. if test $shared -eq 1; then
  284. echo Checking for shared library support... | tee -a configure.log
  285. # we must test in two steps (cc then ld), required at least on SunOS 4.x
  286. if try $CC -w -c $SFLAGS $test.c &&
  287. try $LDSHARED $SFLAGS -o $test$shared_ext $test.o; then
  288. echo Building shared library $SHAREDLIBV with $CC. | tee -a configure.log
  289. elif test -z "$old_cc" -a -z "$old_cflags"; then
  290. echo No shared library support. | tee -a configure.log
  291. shared=0;
  292. else
  293. echo 'No shared library support; try without defining CC and CFLAGS' | tee -a configure.log
  294. shared=0;
  295. fi
  296. fi
  297. if test $shared -eq 0; then
  298. LDSHARED="$CC"
  299. ALL="static"
  300. TEST="all teststatic"
  301. SHAREDLIB=""
  302. SHAREDLIBV=""
  303. SHAREDLIBM=""
  304. echo Building static library $STATICLIB version $VER with $CC. | tee -a configure.log
  305. else
  306. ALL="static shared"
  307. TEST="all teststatic testshared"
  308. fi
  309. CPP=${CPP-"$CC -E"}
  310. case $CFLAGS in
  311. *ASMV*)
  312. echo >> configure.log
  313. show "$NM $test.o | grep _hello"
  314. if test "`$NM $test.o | grep _hello | tee -a configure.log`" = ""; then
  315. CPP="$CPP -DNO_UNDERLINE"
  316. echo Checking for underline in external names... No. | tee -a configure.log
  317. else
  318. echo Checking for underline in external names... Yes. | tee -a configure.log
  319. fi ;;
  320. esac
  321. echo >> configure.log
  322. cat > $test.c <<EOF
  323. #include <sys/types.h>
  324. off64_t dummy = 0;
  325. EOF
  326. if try $CC -c $CFLAGS -D_LARGEFILE64_SOURCE=1 $test.c; then
  327. CFLAGS="${CFLAGS} -D_LARGEFILE64_SOURCE=1"
  328. SFLAGS="${SFLAGS} -D_LARGEFILE64_SOURCE=1"
  329. ALL="${ALL} all64"
  330. TEST="${TEST} test64"
  331. echo "Checking for off64_t... Yes." | tee -a configure.log
  332. echo "Checking for fseeko... Yes." | tee -a configure.log
  333. else
  334. echo "Checking for off64_t... No." | tee -a configure.log
  335. echo >> configure.log
  336. cat > $test.c <<EOF
  337. #include <stdio.h>
  338. int main(void) {
  339. fseeko(NULL, 0, 0);
  340. return 0;
  341. }
  342. EOF
  343. if try $CC $CFLAGS -o $test $test.c; then
  344. echo "Checking for fseeko... Yes." | tee -a configure.log
  345. else
  346. CFLAGS="${CFLAGS} -DNO_FSEEKO"
  347. SFLAGS="${SFLAGS} -DNO_FSEEKO"
  348. echo "Checking for fseeko... No." | tee -a configure.log
  349. fi
  350. fi
  351. cp -p zconf.h.in zconf.h
  352. echo >> configure.log
  353. cat > $test.c <<EOF
  354. #include <unistd.h>
  355. int main() { return 0; }
  356. EOF
  357. if try $CC -c $CFLAGS $test.c; then
  358. sed < zconf.h "/^#ifdef HAVE_UNISTD_H.* may be/s/def HAVE_UNISTD_H\(.*\) may be/ 1\1 was/" > zconf.temp.h
  359. mv zconf.temp.h zconf.h
  360. echo "Checking for unistd.h... Yes." | tee -a configure.log
  361. else
  362. echo "Checking for unistd.h... No." | tee -a configure.log
  363. fi
  364. echo >> configure.log
  365. cat > $test.c <<EOF
  366. #include <stdarg.h>
  367. int main() { return 0; }
  368. EOF
  369. if try $CC -c $CFLAGS $test.c; then
  370. sed < zconf.h "/^#ifdef HAVE_STDARG_H.* may be/s/def HAVE_STDARG_H\(.*\) may be/ 1\1 was/" > zconf.temp.h
  371. mv zconf.temp.h zconf.h
  372. echo "Checking for stdarg.h... Yes." | tee -a configure.log
  373. else
  374. echo "Checking for stdarg.h... No." | tee -a configure.log
  375. fi
  376. if test $zprefix -eq 1; then
  377. sed < zconf.h "/#ifdef Z_PREFIX.* may be/s/def Z_PREFIX\(.*\) may be/ 1\1 was/" > zconf.temp.h
  378. mv zconf.temp.h zconf.h
  379. echo >> configure.log
  380. echo "Using z_ prefix on all symbols." | tee -a configure.log
  381. fi
  382. if test $solo -eq 1; then
  383. sed '/#define ZCONF_H/a\
  384. #define Z_SOLO
  385. ' < zconf.h > zconf.temp.h
  386. mv zconf.temp.h zconf.h
  387. OBJC='$(OBJZ)'
  388. PIC_OBJC='$(PIC_OBJZ)'
  389. fi
  390. if test $cover -eq 1; then
  391. CFLAGS="${CFLAGS} -fprofile-arcs -ftest-coverage"
  392. fi
  393. echo >> configure.log
  394. cat > $test.c <<EOF
  395. #include <stdio.h>
  396. #include <stdarg.h>
  397. #include "zconf.h"
  398. int main()
  399. {
  400. #ifndef STDC
  401. choke me
  402. #endif
  403. return 0;
  404. }
  405. EOF
  406. if try $CC -c $CFLAGS $test.c; then
  407. echo "Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf()." | tee -a configure.log
  408. echo >> configure.log
  409. cat > $test.c <<EOF
  410. #include <stdio.h>
  411. #include <stdarg.h>
  412. int mytest(const char *fmt, ...)
  413. {
  414. char buf[20];
  415. va_list ap;
  416. va_start(ap, fmt);
  417. vsnprintf(buf, sizeof(buf), fmt, ap);
  418. va_end(ap);
  419. return 0;
  420. }
  421. int main()
  422. {
  423. return (mytest("Hello%d\n", 1));
  424. }
  425. EOF
  426. if try $CC $CFLAGS -o $test $test.c; then
  427. echo "Checking for vsnprintf() in stdio.h... Yes." | tee -a configure.log
  428. echo >> configure.log
  429. cat >$test.c <<EOF
  430. #include <stdio.h>
  431. #include <stdarg.h>
  432. int mytest(const char *fmt, ...)
  433. {
  434. int n;
  435. char buf[20];
  436. va_list ap;
  437. va_start(ap, fmt);
  438. n = vsnprintf(buf, sizeof(buf), fmt, ap);
  439. va_end(ap);
  440. return n;
  441. }
  442. int main()
  443. {
  444. return (mytest("Hello%d\n", 1));
  445. }
  446. EOF
  447. if try $CC -c $CFLAGS $test.c; then
  448. echo "Checking for return value of vsnprintf()... Yes." | tee -a configure.log
  449. else
  450. CFLAGS="$CFLAGS -DHAS_vsnprintf_void"
  451. SFLAGS="$SFLAGS -DHAS_vsnprintf_void"
  452. echo "Checking for return value of vsnprintf()... No." | tee -a configure.log
  453. echo " WARNING: apparently vsnprintf() does not return a value. zlib" | tee -a configure.log
  454. echo " can build but will be open to possible string-format security" | tee -a configure.log
  455. echo " vulnerabilities." | tee -a configure.log
  456. fi
  457. else
  458. CFLAGS="$CFLAGS -DNO_vsnprintf"
  459. SFLAGS="$SFLAGS -DNO_vsnprintf"
  460. echo "Checking for vsnprintf() in stdio.h... No." | tee -a configure.log
  461. echo " WARNING: vsnprintf() not found, falling back to vsprintf(). zlib" | tee -a configure.log
  462. echo " can build but will be open to possible buffer-overflow security" | tee -a configure.log
  463. echo " vulnerabilities." | tee -a configure.log
  464. echo >> configure.log
  465. cat >$test.c <<EOF
  466. #include <stdio.h>
  467. #include <stdarg.h>
  468. int mytest(const char *fmt, ...)
  469. {
  470. int n;
  471. char buf[20];
  472. va_list ap;
  473. va_start(ap, fmt);
  474. n = vsprintf(buf, fmt, ap);
  475. va_end(ap);
  476. return n;
  477. }
  478. int main()
  479. {
  480. return (mytest("Hello%d\n", 1));
  481. }
  482. EOF
  483. if try $CC -c $CFLAGS $test.c; then
  484. echo "Checking for return value of vsprintf()... Yes." | tee -a configure.log
  485. else
  486. CFLAGS="$CFLAGS -DHAS_vsprintf_void"
  487. SFLAGS="$SFLAGS -DHAS_vsprintf_void"
  488. echo "Checking for return value of vsprintf()... No." | tee -a configure.log
  489. echo " WARNING: apparently vsprintf() does not return a value. zlib" | tee -a configure.log
  490. echo " can build but will be open to possible string-format security" | tee -a configure.log
  491. echo " vulnerabilities." | tee -a configure.log
  492. fi
  493. fi
  494. else
  495. echo "Checking whether to use vs[n]printf() or s[n]printf()... using s[n]printf()." | tee -a configure.log
  496. echo >> configure.log
  497. cat >$test.c <<EOF
  498. #include <stdio.h>
  499. int mytest()
  500. {
  501. char buf[20];
  502. snprintf(buf, sizeof(buf), "%s", "foo");
  503. return 0;
  504. }
  505. int main()
  506. {
  507. return (mytest());
  508. }
  509. EOF
  510. if try $CC $CFLAGS -o $test $test.c; then
  511. echo "Checking for snprintf() in stdio.h... Yes." | tee -a configure.log
  512. echo >> configure.log
  513. cat >$test.c <<EOF
  514. #include <stdio.h>
  515. int mytest()
  516. {
  517. char buf[20];
  518. return snprintf(buf, sizeof(buf), "%s", "foo");
  519. }
  520. int main()
  521. {
  522. return (mytest());
  523. }
  524. EOF
  525. if try $CC -c $CFLAGS $test.c; then
  526. echo "Checking for return value of snprintf()... Yes." | tee -a configure.log
  527. else
  528. CFLAGS="$CFLAGS -DHAS_snprintf_void"
  529. SFLAGS="$SFLAGS -DHAS_snprintf_void"
  530. echo "Checking for return value of snprintf()... No." | tee -a configure.log
  531. echo " WARNING: apparently snprintf() does not return a value. zlib" | tee -a configure.log
  532. echo " can build but will be open to possible string-format security" | tee -a configure.log
  533. echo " vulnerabilities." | tee -a configure.log
  534. fi
  535. else
  536. CFLAGS="$CFLAGS -DNO_snprintf"
  537. SFLAGS="$SFLAGS -DNO_snprintf"
  538. echo "Checking for snprintf() in stdio.h... No." | tee -a configure.log
  539. echo " WARNING: snprintf() not found, falling back to sprintf(). zlib" | tee -a configure.log
  540. echo " can build but will be open to possible buffer-overflow security" | tee -a configure.log
  541. echo " vulnerabilities." | tee -a configure.log
  542. echo >> configure.log
  543. cat >$test.c <<EOF
  544. #include <stdio.h>
  545. int mytest()
  546. {
  547. char buf[20];
  548. return sprintf(buf, "%s", "foo");
  549. }
  550. int main()
  551. {
  552. return (mytest());
  553. }
  554. EOF
  555. if try $CC -c $CFLAGS $test.c; then
  556. echo "Checking for return value of sprintf()... Yes." | tee -a configure.log
  557. else
  558. CFLAGS="$CFLAGS -DHAS_sprintf_void"
  559. SFLAGS="$SFLAGS -DHAS_sprintf_void"
  560. echo "Checking for return value of sprintf()... No." | tee -a configure.log
  561. echo " WARNING: apparently sprintf() does not return a value. zlib" | tee -a configure.log
  562. echo " can build but will be open to possible string-format security" | tee -a configure.log
  563. echo " vulnerabilities." | tee -a configure.log
  564. fi
  565. fi
  566. fi
  567. if test "$gcc" -eq 1; then
  568. echo >> configure.log
  569. cat > $test.c <<EOF
  570. #if ((__GNUC__-0) * 10 + __GNUC_MINOR__-0 >= 33)
  571. # define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
  572. #else
  573. # define ZLIB_INTERNAL
  574. #endif
  575. int ZLIB_INTERNAL foo;
  576. int main()
  577. {
  578. return 0;
  579. }
  580. EOF
  581. if try $CC -c $CFLAGS $test.c; then
  582. echo "Checking for attribute(visibility) support... Yes." | tee -a configure.log
  583. else
  584. CFLAGS="$CFLAGS -DNO_VIZ"
  585. SFLAGS="$SFLAGS -DNO_VIZ"
  586. echo "Checking for attribute(visibility) support... No." | tee -a configure.log
  587. fi
  588. fi
  589. rm -f $test.[co] $test $test$shared_ext $test.gcno
  590. # show the results in the log
  591. echo >> configure.log
  592. echo ALL = $ALL >> configure.log
  593. echo AR = $AR >> configure.log
  594. echo ARFLAGS = $ARFLAGS >> configure.log
  595. echo CC = $CC >> configure.log
  596. echo CFLAGS = $CFLAGS >> configure.log
  597. echo CPP = $CPP >> configure.log
  598. echo EXE = $EXE >> configure.log
  599. echo LDCONFIG = $LDCONFIG >> configure.log
  600. echo LDFLAGS = $LDFLAGS >> configure.log
  601. echo LDSHARED = $LDSHARED >> configure.log
  602. echo LDSHAREDLIBC = $LDSHAREDLIBC >> configure.log
  603. echo OBJC = $OBJC >> configure.log
  604. echo PIC_OBJC = $PIC_OBJC >> configure.log
  605. echo RANLIB = $RANLIB >> configure.log
  606. echo SFLAGS = $SFLAGS >> configure.log
  607. echo SHAREDLIB = $SHAREDLIB >> configure.log
  608. echo SHAREDLIBM = $SHAREDLIBM >> configure.log
  609. echo SHAREDLIBV = $SHAREDLIBV >> configure.log
  610. echo STATICLIB = $STATICLIB >> configure.log
  611. echo TEST = $TEST >> configure.log
  612. echo VER = $VER >> configure.log
  613. echo exec_prefix = $exec_prefix >> configure.log
  614. echo includedir = $includedir >> configure.log
  615. echo libdir = $libdir >> configure.log
  616. echo mandir = $mandir >> configure.log
  617. echo prefix = $prefix >> configure.log
  618. echo sharedlibdir = $sharedlibdir >> configure.log
  619. echo uname = $uname >> configure.log
  620. echo -------------------- >> configure.log
  621. echo >> configure.log
  622. echo >> configure.log
  623. # udpate Makefile
  624. sed < Makefile.in "
  625. /^CC *=/s#=.*#=$CC#
  626. /^CFLAGS *=/s#=.*#=$CFLAGS#
  627. /^SFLAGS *=/s#=.*#=$SFLAGS#
  628. /^LDFLAGS *=/s#=.*#=$LDFLAGS#
  629. /^LDSHARED *=/s#=.*#=$LDSHARED#
  630. /^CPP *=/s#=.*#=$CPP#
  631. /^STATICLIB *=/s#=.*#=$STATICLIB#
  632. /^SHAREDLIB *=/s#=.*#=$SHAREDLIB#
  633. /^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#
  634. /^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#
  635. /^AR *=/s#=.*#=$AR#
  636. /^ARFLAGS *=/s#=.*#=$ARFLAGS#
  637. /^RANLIB *=/s#=.*#=$RANLIB#
  638. /^LDCONFIG *=/s#=.*#=$LDCONFIG#
  639. /^LDSHAREDLIBC *=/s#=.*#=$LDSHAREDLIBC#
  640. /^EXE *=/s#=.*#=$EXE#
  641. /^prefix *=/s#=.*#=$prefix#
  642. /^exec_prefix *=/s#=.*#=$exec_prefix#
  643. /^libdir *=/s#=.*#=$libdir#
  644. /^sharedlibdir *=/s#=.*#=$sharedlibdir#
  645. /^includedir *=/s#=.*#=$includedir#
  646. /^mandir *=/s#=.*#=$mandir#
  647. /^OBJC *=/s#=.*#= $OBJC#
  648. /^PIC_OBJC *=/s#=.*#= $PIC_OBJC#
  649. /^all: */s#:.*#: $ALL#
  650. /^test: */s#:.*#: $TEST#
  651. " > Makefile
  652. sed < zlib.pc.in "
  653. /^CC *=/s#=.*#=$CC#
  654. /^CFLAGS *=/s#=.*#=$CFLAGS#
  655. /^CPP *=/s#=.*#=$CPP#
  656. /^LDSHARED *=/s#=.*#=$LDSHARED#
  657. /^STATICLIB *=/s#=.*#=$STATICLIB#
  658. /^SHAREDLIB *=/s#=.*#=$SHAREDLIB#
  659. /^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#
  660. /^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#
  661. /^AR *=/s#=.*#=$AR#
  662. /^ARFLAGS *=/s#=.*#=$ARFLAGS#
  663. /^RANLIB *=/s#=.*#=$RANLIB#
  664. /^EXE *=/s#=.*#=$EXE#
  665. /^prefix *=/s#=.*#=$prefix#
  666. /^exec_prefix *=/s#=.*#=$exec_prefix#
  667. /^libdir *=/s#=.*#=$libdir#
  668. /^sharedlibdir *=/s#=.*#=$sharedlibdir#
  669. /^includedir *=/s#=.*#=$includedir#
  670. /^mandir *=/s#=.*#=$mandir#
  671. /^LDFLAGS *=/s#=.*#=$LDFLAGS#
  672. " | sed -e "
  673. s/\@VERSION\@/$VER/g;
  674. " > zlib.pc