
# Copyright (C) Igor Sysoev


case "$CC" in

    cl)
        makefile=makefile.msvc
        opt="CPU_OPT=$CPU_OPT LIBC=$LIBC"

    ;;

    wcl386)
        makefile=makefile.owc
        opt="CPU_OPT=$CPU_OPT"
    ;;

    bcc32)
        makefile=makefile.bcc
        opt="-DCPU_OPT=$CPU_OPT"
    ;;

esac


case $PLATFORM in

    win32)
        line=`echo $ZLIB/zlib.lib: | sed -e "s/\//$DIRSEP/g"`
        echo "$line"                                              >> $MAKEFILE
    ;;

    *)
        echo "$ZLIB/libz.a:"                                      >> $MAKEFILE
    ;;

esac


done=NO


case $PLATFORM in

    win32)
        zlib=`echo $ZLIB | sed -e "s/\//$DIRSEP/g"`

        cp auto/lib/zlib/$makefile $ZLIB
        echo "	cd $zlib"                                         >> $MAKEFILE
        echo "	\$(MAKE) -f $makefile $opt"                       >> $MAKEFILE
        echo "	cd ..\\..\\.."                                    >> $MAKEFILE

        done=YES
    ;;

    # FreeBSD: i386
    # Linux: i686

    *:i386 | *:i686)
        case $ZLIB_ASM in
            pentium)
                echo "	cd $ZLIB \\"                              >> $MAKEFILE
                echo "	&& cp contrib/asm586/match.S . \\"        >> $MAKEFILE
                echo "	&& CFLAGS=\"$ZLIB_OPT -DASMV\" \\"        >> $MAKEFILE
                echo "		CC=\"\$(CC)\" \\"                 >> $MAKEFILE
                echo "		./configure \\"                   >> $MAKEFILE
                echo "	&& \$(MAKE) OBJA=match.o libz.a"          >> $MAKEFILE

                done=YES
            ;;

            pentiumpro)
                echo "	cd $ZLIB \\"                              >> $MAKEFILE
                echo "	&& cp contrib/asm686/match.S . \\"        >> $MAKEFILE
                echo "	&& CFLAGS=\"$ZLIB_OPT -DASMV\" \\"        >> $MAKEFILE
                echo "		CC=\"\$(CC)\" \\"                 >> $MAKEFILE
                echo "		./configure \\"                   >> $MAKEFILE
                echo "	&& \$(MAKE) OBJA=match.o libz.a"          >> $MAKEFILE

                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
    echo "	cd $ZLIB \\"                                      >> $MAKEFILE
    echo "	&& CFLAGS=\"$ZLIB_OPT\" CC=\"\$(CC)\" \\"         >> $MAKEFILE
    echo "		./configure \\"                           >> $MAKEFILE
    echo "	&& \$(MAKE) libz.a"                               >> $MAKEFILE
fi


echo                                                              >> $MAKEFILE
