#!/bin/sh SOURCE="util.c utmanage.c utmem.c utpersist.c utrand.c utunix.c" if [ "$CC" = "" ]; then CC=gcc fi CFLAGS="${CFLAGS}" if [ "`uname -m`" = "x86_64" ]; then CFLAGS="$CFLAGS -m64" fi PREFIX="/usr/local" while [ $# != 0 ]; do if [ "${1%=*}" = "--prefix" ]; then PREFIX=${1#*=} echo "Configuring to install into $PREFIX" elif [ "$1" = "--dmalloc" ]; then CFLAGS="$CFLAGS -DMALLOC" useDmalloc=true elif [ "${1%=*}" = "CFLAGS" ]; then CFLAGS=${1#*=} echo "Configuring compilation flags to $CFLAGS" elif [ "${1%=*}" = "LDFLAGS" ]; then LDFLAGS=${1#*=} echo "Configuring linking flags to $LDFLAGS" else echo "Unknown option $1. IGNORING." fi shift done echo "CC=$CC CFLAGS=$CFLAGS PREFIX=$PREFIX " > Makefile makeMakefileTop () { SUFFIX=$1 UPPER_SUFFIX=`echo $SUFFIX | tr '[a-z]' '[A-Z]'` if [ ! -d obj$SUFFIX ]; then mkdir obj$SUFFIX fi echo "OBJECTS$UPPER_SUFFIX=\\" >> Makefile FILE_SUFFIX=`echo $SUFFIX | sed 's/-dbg//'` for sourceFile in $SOURCE utdatabase${FILE_SUFFIX}.c; do objFile="obj$SUFFIX/`basename $sourceFile | sed 's/\.c$/.o/'`" echo "$objFile\\" >> Makefile done echo >> Makefile } makeMakefileTop "" makeMakefileTop "p" makeMakefileTop "u" makeMakefileTop "up" makeMakefileTop "-dbg" makeMakefileTop "p-dbg" makeMakefileTop "u-dbg" makeMakefileTop "up-dbg" echo 'all: debug optimized debug dev: @echo "Making debug build:" @$(MAKE) -f Makefile ddutil-dbg.a CFLAGS="$(CFLAGS) -DDD_DEBUG" @$(MAKE) -f Makefile ddutilp-dbg.a CFLAGS="$(CFLAGS) -DDD_DEBUG" @$(MAKE) -f Makefile ddutilu-dbg.a CFLAGS="$(CFLAGS) -DDD_DEBUG" @$(MAKE) -f Makefile ddutilup-dbg.a CFLAGS="$(CFLAGS) -DDD_DEBUG" optimized opt rel: @echo "Making release build:" @$(MAKE) -f Makefile ddutil.a CFLAGS="$(CFLAGS) -O2" @$(MAKE) -f Makefile ddutilp.a CFLAGS="$(CFLAGS) -O2" @$(MAKE) -f Makefile ddutilu.a CFLAGS="$(CFLAGS) -O2" @$(MAKE) -f Makefile ddutilup.a CFLAGS="$(CFLAGS) -O2" clean: rm -f obj/* objp/* obju/* objup/* obj-dbg/* objp-dbg/* obju-dbg/* objup-dbg/* *.a install: ddutil.a ddutilp.a ddutilu.a ddutilup.a ddutil-dbg.a ddutilp-dbg.a ddutilu-dbg.a ddutilup-dbg.a install -d \$(PREFIX)/include install -d \$(PREFIX)/lib install ddutil.h \$(PREFIX)/include install utdatabase.h \$(PREFIX)/include install utdatabasep.h \$(PREFIX)/include install utdatabaseu.h \$(PREFIX)/include install utdatabaseup.h \$(PREFIX)/include install utmem.h \$(PREFIX)/include install utpersist.h \$(PREFIX)/include install uttypes.h \$(PREFIX)/include install ddutil.a \$(PREFIX)/lib/libddutil.a install ddutilp.a \$(PREFIX)/lib/libddutilp.a install ddutilu.a \$(PREFIX)/lib/libddutilu.a install ddutilup.a \$(PREFIX)/lib/libddutilup.a install ddutil-dbg.a \$(PREFIX)/lib/libddutil-dbg.a install ddutilp-dbg.a \$(PREFIX)/lib/libddutilp-dbg.a install ddutilu-dbg.a \$(PREFIX)/lib/libddutilu-dbg.a install ddutilup-dbg.a \$(PREFIX)/lib/libddutilup-dbg.a ' >> Makefile makeMakefileBottom () { SUFFIX=$1 NONDBG_SUFFIX=`echo $1 | sed 's/-dbg//'` DATADRAW_FLAGS=$2 UPPER_SUFFIX=`echo $SUFFIX | tr '[a-z]' '[A-Z]'` UPPER_NONDBG_SUFFIX=`echo $NONDBG_SUFFIX | tr '[a-z]' '[A-Z]'` echo "ddutil$SUFFIX.a: \$(OBJECTS$UPPER_SUFFIX) ar -rcs ddutil$SUFFIX.a \$(OBJECTS$UPPER_SUFFIX) " >> Makefile for sourceFile in $SOURCE utdatabase${NONDBG_SUFFIX}.c; do objFile="obj$SUFFIX/`basename $sourceFile | sed 's/\.c$/.o/'`" echo "$objFile: $sourceFile \$(CC) -c \$(CFLAGS) -DUT_USE_UTDATABASE${UPPER_NONDBG_SUFFIX}_H $sourceFile -o $objFile " >> Makefile done if [ "$SUFFIX" == "$NONDBG_SUFFIX" ]; then echo "utdatabase$SUFFIX.c utdatabase$SUFFIX.h: DatadrawUtil.dd datadraw $DATADRAW_FLAGS -s utdatabase$SUFFIX.c -h utdatabase$SUFFIX.h DatadrawUtil.dd " >> Makefile fi $CC -M $CFLAGS -DUT_USE_UTDATABASE $SOURCE utdatabase${NONDBG_SUFFIX}.c | sed "s/^\([^ ].*\.o:\)/obj$SUFFIX\/\1/" >> Makefile echo >> Makefile } makeMakefileBottom "" "" makeMakefileBottom "p" "-p" makeMakefileBottom "u" "-u" makeMakefileBottom "up" "-u -p" makeMakefileBottom "-dbg" "" makeMakefileBottom "p-dbg" "-p" makeMakefileBottom "u-dbg" "-u" makeMakefileBottom "up-dbg" "-u -p" # This causes datadraw not to run on the first make touch utdatabase*.[ch]