nginx/auto/lib/zlib/make
catatsuy 4e2cc51723 auto/lib/zlib: add --with-zlib-conf-opt and skip missing distclean
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.
2025-04-19 20:39:25 +09:00

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