#!/bin/sh # genmake # GENERATE OS-SPECIFIC MINI-MAKEFILES # IT'S JUST EASIER KEEPING ALL THE INFORMATION IN ONE PLACE # Usage: genmake # USUALLY JUST SETS CFLAGS BUT CAN ALSO SET THE FOLLOWING # LIBS SHELL CC MAKE if test "$#" -gt "0" then OSTYPES=$@ else OSTYPES="aix bsdi bsdi4 caldera darwin debian dgux dynix fedora freebsd generic hpux hpux9 irix linux mandrake netbsd openbsd osf redhat redhatES sco sco3 sinix solaris sunos suse ultrix unixware unixware7" fi # IF gcc IS PRESENT, USE IT if test -f "/usr/local/bin/gcc" then CC="gcc" else XX=`type gcc 2>/dev/null` if [ "$XX" = "" -o "$XX" = "gcc not found" ] then CC="cc" else CC="gcc" fi fi workdir=`echo $0 | sed 's/genmake//g'` for BBOS in $OSTYPES do BBENV="" LIBS="" CFLAGS="" case $BBOS in freebsd|bsdi*|darwin|netbsd|openbsd) echo "Making $BBOS makefile" CFLAGS="${CFLAGS} -DZOMBIE -D${BBOS} -DGETTIMEOFDAY -DREGEXEC -O" ;; dgux) echo "Making $BBOS makefile" CFLAGS="${CFLAGS} -D${BBOS} -O -DBZERO -DTIMEH -DREGEXEC" LIBS="-lnsl -lsocket" ;; dynix) echo "Making $BBOS makefile" CFLAGS="${CFLAGS} -D${BBOS} -DREGEXEC" LIBS="-lgen -lnsl -lsocket" ;; hpux) echo "Making $BBOS makefile" CFLAGS="${CFLAGS} -D${BBOS} -DREGEXEC -DGETTIMEOFDAY" ;; hpux9) echo "Making $BBOS makefile" CFLAGS="${CFLAGS} -D${BBOS} -DREGEXEC" ;; irix|generic) echo "Making $BBOS makefile" CFLAGS="${CFLAGS} -D${BBOS} -O -DREGEXEC" ;; osf) echo "Making $BBOS makefile" CFLAGS="${CFLAGS} -D${BBOS} -O -DREGEXEC -DZOMBIE" ;; sco) echo "Making $BBOS makefile" CFLAGS="${CFLAGS} -D${BBOS} -O -DREGEXEC -DTIMEH" LIBS="-lsocket" ;; sco3) echo "Making $BBOS makefile" CFLAGS="${CFLAGS} -D${BBOS} -O -DREGEX -DTIMEH" LIBS="-lsocket" ;; sinix) echo "Making $BBOS makefile" CFLAGS="${CFLAGS} -D${BBOS} -O -DBZERO -DSIGSETJMP -DZOMBIE -DREGEXEC" LIBS="-lnsl -lsocket -s" ;; solaris) echo "Making $BBOS makefile" CFLAGS="${CFLAGS} -D${BBOS} -O -DBZERO -DGETTIMEOFDAY -DREGEXEC" LIBS="-ll -lnsl -lsocket -lkstat" ;; sunos) echo "Making $BBOS makefile" CFLAGS="${CFLAGS} -D${BBOS} -O -DSEEK_END=2 -DREGEXEC" ;; aix) echo "Making $BBOS makefile" CC="cc" CFLAGS="${CFLAGS} -D${BBOS} -DTIMEH -DREGEXEC -DGETTIMEOFDAY" ;; linux|caldera|debian|mandrake|redhat*|suse|fedora) echo "Making $BBOS makefile" CFLAGS="${CFLAGS} -DSIGSETJMP -O -D${BBOS} -DGETTIMEOFDAY -DREGEXEC -DTIMEH" ;; ultrix) echo "Making $BBOS makefile" CFLAGS="${CFLAGS} -D${BBOS} -O DZOMBIE -DSYSLOG -DREGEXEC" ;; unixware*) echo "Making $BBOS makefile" LIBS="-lgen -lnsl -lsocket" CFLAGS="${CFLAGS} -O -DBZERO -D${BBOS} -DREGEXEC" ;; *) echo "*** Can't make Makefile for $BBOS" continue ;; esac workfile="${workdir}/makefile.${BBOS}" # NOW MAKE THE MAKEFILE echo "# Makefile for $BBOS # Generated by genmake on `date` # OS specific compiler directives # -DBZERO - IF YOU DON'T HAVE bzero() # -DZOMBIE - IF zombie PROCESSES ARE GENERATED # -DGETTIMEOFDAY - TO GET DURATION STATISTICS # -DREGEXEC - IF YOUR COMPILER SUPPORTS regexec(),regcomp() # -DREGEX - IF YOUR COMPILER SUPPORTS regex(),regcmp() # -DRE_EXEC - IF YOUR COMPILER SUPPORTS re_exec(),re_comp() # -DTIMEH - IF YOUR OS HAS time.h INSTEAD OF sys/time.h # -DSIGSETJMP - IF YOUR OS SUPPORTS sigsetjmp() AND DOES NOT # HANDLE SIGNALS PROPERLY WITH setjmp() " > $workfile if test "$BBOS" then echo "BBOS = \"${BBOS}\"" >> $workfile BBENV="$BBENV BBOS=\${BBOS}" fi if test "$CC" then echo "CC = \"${CC}\"" >> $workfile BBENV="$BBENV CC=\${CC}" fi if test "$CFLAGS" then echo "CFLAGS = \"${CFLAGS}\"" >> $workfile BBENV="$BBENV CFLAGS=\${CFLAGS}" fi if test "$LIBS" then echo "LIBS = \"${LIBS}\"" >> $workfile BBENV="$BBENV LIBS=\${LIBS}" fi echo " BBENV = ${BBENV} all: \${BBENV} make -e bball " >> $workfile done