mirror of
https://github.com/nginx/nginx.git
synced 2025-07-20 19:27:29 +08:00

The build system had two issues when zlib-ng is used: 1. `distclean` was always invoked, causing failure on first run when no Makefile exists yet. 2. There was no way to pass options like --zlib-compat to zlib's ./configure; users tried to sneak them in via CFLAGS which triggers "compiler error reporting is too harsh" and aborts. The new --with-zlib-conf-opt=<opts> option feeds its value directly to ./configure, and `distclean` is now executed only if a Makefile is present.
136 lines
2.6 KiB
Plaintext
136 lines
2.6 KiB
Plaintext
|
|
# Copyright (C) Igor Sysoev
|
|
# Copyright (C) Nginx, Inc.
|
|
|
|
|
|
case "$NGX_CC_NAME" in
|
|
|
|
msvc)
|
|
ngx_makefile=makefile.msvc
|
|
ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC"
|
|
ngx_zlib="ZLIB=\"$ZLIB\""
|
|
|
|
;;
|
|
|
|
owc)
|
|
ngx_makefile=makefile.owc
|
|
ngx_opt="CPU_OPT=\"$CPU_OPT\""
|
|
ngx_zlib=`echo ZLIB=\"$ZLIB\" | sed -e "s/\//$ngx_regex_dirsep/g"`
|
|
;;
|
|
|
|
bcc)
|
|
ngx_makefile=makefile.bcc
|
|
ngx_opt="-DCPU_OPT=\"$CPU_OPT\""
|
|
ngx_zlib=`echo \-DZLIB=\"$ZLIB\" | sed -e "s/\//$ngx_regex_dirsep/g"`
|
|
;;
|
|
|
|
*)
|
|
ngx_makefile=
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
done=NO
|
|
|
|
|
|
case "$NGX_PLATFORM" in
|
|
|
|
win32)
|
|
|
|
if [ -n "$ngx_makefile" ]; then
|
|
cat << END >> $NGX_MAKEFILE
|
|
|
|
`echo "$ZLIB/zlib.lib: $NGX_MAKEFILE" | sed -e "s/\//$ngx_regex_dirsep/g"`
|
|
\$(MAKE) -f auto/lib/zlib/$ngx_makefile $ngx_opt $ngx_zlib
|
|
|
|
END
|
|
|
|
else
|
|
|
|
cat << END >> $NGX_MAKEFILE
|
|
|
|
$ZLIB/libz.a: $NGX_MAKEFILE
|
|
cd $ZLIB \\
|
|
&& if [ -f Makefile ]; then \$(MAKE) distclean; fi \\
|
|
&& \$(MAKE) -f win32/Makefile.gcc \\
|
|
CFLAGS="$ZLIB_OPT" CC="\$(CC)" \\
|
|
libz.a
|
|
|
|
END
|
|
|
|
fi
|
|
|
|
done=YES
|
|
;;
|
|
|
|
# FreeBSD: i386
|
|
# Linux: i686
|
|
|
|
*:i386 | *:i686)
|
|
case $ZLIB_ASM in
|
|
pentium)
|
|
|
|
cat << END >> $NGX_MAKEFILE
|
|
|
|
$ZLIB/libz.a: $NGX_MAKEFILE
|
|
cd $ZLIB \\
|
|
&& if [ -f Makefile ]; then \$(MAKE) distclean; fi \\
|
|
&& cp contrib/asm586/match.S . \\
|
|
&& CFLAGS="$ZLIB_OPT -DASMV" CC="\$(CC)" \\
|
|
./configure $ZLIB_CONF_OPT \\
|
|
&& \$(MAKE) OBJA=match.o libz.a
|
|
|
|
END
|
|
|
|
done=YES
|
|
;;
|
|
|
|
pentiumpro)
|
|
|
|
cat << END >> $NGX_MAKEFILE
|
|
|
|
$ZLIB/libz.a: $NGX_MAKEFILE
|
|
cd $ZLIB \\
|
|
&& if [ -f Makefile ]; then \$(MAKE) distclean; fi \\
|
|
&& cp contrib/asm686/match.S . \\
|
|
&& CFLAGS="$ZLIB_OPT -DASMV" CC="\$(CC)" \\
|
|
./configure $ZLIB_CONF_OPT \\
|
|
&& \$(MAKE) OBJA=match.o libz.a
|
|
|
|
END
|
|
|
|
done=YES
|
|
;;
|
|
|
|
NO)
|
|
;;
|
|
|
|
*)
|
|
echo "$0: error: invalid --with-zlib-asm=$ZLIB_ASM option."
|
|
echo "The valid values are \"pentium\" and \"pentiumpro\" only".
|
|
echo
|
|
|
|
exit 1;
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
if [ $done = NO ]; then
|
|
|
|
cat << END >> $NGX_MAKEFILE
|
|
|
|
$ZLIB/libz.a: $NGX_MAKEFILE
|
|
cd $ZLIB \\
|
|
&& if [ -f Makefile ]; then \$(MAKE) distclean; fi \\
|
|
&& CFLAGS="$ZLIB_OPT" CC="\$(CC)" \\
|
|
./configure $ZLIB_CONF_OPT \\
|
|
&& \$(MAKE) libz.a
|
|
|
|
END
|
|
|
|
fi
|