
# TOP LEVEL MAKEFILE
# This makefile will figure out what platform we're on, then
# call a minimakefile to set the OS-specific flags, which then re-calls
# this Makefile to do the compile.  Got that?

# THIS ALL ASSUMES WE'RE IN THE src DIRECTORY...

# If that weren't enough - genmake generates all the minimakefiles
# for all the platforms.  This should make keeping all the makefiles
# in sync a whole lot easier.

# Globals defaults
SHELL = /bin/sh
MAKE = make
CC = gcc

#
# BBDIR is for the server
# BBCDIR is for the client.  Client can't be in the same dir as server
#	because of the same named files
BBDIR=bb1.9i-btf
BBCDIR=bbc1.9i-btf

BBDEFS = `./minimake/genbbdefs`
OS = `./minimake/bbmachine`
MACHINE = `./minimake/bbmachine OS`
BBMACHINE = `./${BBDIR}/src/minimake/bbmachine OS`
ID = `./${BBDIR}/src/minimake/getid`


#################################################################
# BB LOCAL COMPILE TIME FLAGS
#################################################################
# -DDEBUG		DUMP TRACE CODE IN BBOUT
# -DZOMBIE		PREVENT ZOMBIE PROCESS CREATION
# -DREGEXEC		USE PROPER REG EXPR LIBRARY CODE
# -DREGEX
# -DRE_EXEC
# -DTIMEH		THIS OS CAN HANDLE time.h
# -DGETTIMEOFDAY	ADD STATS TO TEST (NEEDS gettimeofday())
# -DSIGSETJMP
#
# AS WELL AS THE PRECEEDING FLAGS
# USE BBFLAGS FOR -g, -pg AND OTHER STANDARD COMPILER OPTIONS.
# (THAT'S BECAUSE CFLAGS GETS REWRITTEN)

BBFLAGS= ${BBDEFS} -g

all:
	@ if test ! -d ../bin.${MACHINE}; then mkdir ../bin.${MACHINE};fi
	@ rm -f *.o 
	@ BBFLAGS="${BBFLAGS}"; export BBFLAGS; minimake/genmake ${OS}
	@ make -f minimake/makefile.${OS}

#################################################################
# ACTUAL COMPILING STARTS HERE - NO CHANGES SHOULD BE NEEDED BELOW
#################################################################

%.o: %.c bb.h
	${CC} ${CFLAGS} ${BBFLAGS} -o $@ -c $<

bball: bb bbd bbnet touchtime dumphostsvc getipaddr bbstat bbrun



bb: bb.o bbsend.o utils.o bb.h
	${CC} ${CFLAGS} ${BBFLAGS} -o ../bin.${MACHINE}/$@ bb.o bbsend.o utils.o ${LIBS}


# 
# SMM FORCE INCLUSION OF #defines FOR THE .h FILES LISTED IN BBFLAGS...
# FOR bbpage AND bbrun
#


#bbpage.o: bbpage.c bb.h
#	${CC} ${CFLAGS} ${BBFLAGS} -c bbpage.c

#bbrun.o: bbrun.c bb.h
#	${CC} ${CFLAGS} ${BBFLAGS} -c bbrun.c



bbd: dohostsvc.o utils.o bbd.o bbpage.o bbsend.o bb.h
	${CC} ${CFLAGS} ${BBFLAGS} -o ../bin.${MACHINE}/$@ bbd.o dohostsvc.o bbpage.o bbsend.o utils.o ${LIBS}

bbstat: bbstat.o bb.h
	${CC} ${CFLAGS} ${BBFLAGS} -o ../bin.${MACHINE}/$@ bbstat.o ${LIBS}


bbnet: bbnet.o utils.o bb.h
	${CC} ${CFLAGS} ${BBFLAGS} -o ../bin.${MACHINE}/$@ bbnet.o utils.o ${LIBS}

touchtime: touchtime.o bb.h
	${CC} ${CFLAGS} ${BBFLAGS} -o ../bin.${MACHINE}/$@ touchtime.o ${LIBS}

dumphostsvc: dohostsvc.o utils.o dumphostsvc.o bb.h
	${CC} ${CFLAGS} ${BBFLAGS} -o ../bin.${MACHINE}/$@ dumphostsvc.o dohostsvc.o utils.o ${LIBS}

getipaddr: utils.o getipaddr.o bb.h
	${CC} ${CFLAGS} ${BBFLAGS} -o ../bin.${MACHINE}/$@ getipaddr.o utils.o ${LIBS}

bbrun: utils.o bbrun.o bb.h
	${CC} ${CFLAGS} ${BBFLAGS} -o ../bin.${MACHINE}/$@ bbrun.o utils.o ${LIBS}


mkbbline: mkbbline.o
	${CC} ${CFLAGS} ${BBFLAGS} -o ../bin.${MACHINE}/$@ mkbbline.o


#
# SMM... A LITTLE DIFFERENT HERE.... DUNNO WHAT TO DO.
#

install:
	@ rm -f *.o 
	@ if test ! -d ../bin.${MACHINE}; then mkdir ../bin.${MACHINE}; fi
	@ strip ../bin.${MACHINE}/*
	@ cd ../bin.${MACHINE}; cp bb bbd bbnet touchtime dumphostsvc getipaddr bbstat bbrun ../bin

clean:	
	@ rm -f *.o bb bbd bbnet touchtime dumphostsvc getipaddr bbstat bbrun
	@ rm -f *.o ../bin.${MACHINE}/*
	@ cd ../bin; rm -f bb bbd bbnet touchtime dumphostsvc getipaddr bbstat bbrun

bbserver:
	@ cd ../..; tar cvf ../../btf-archives/BBSVR-${BBDIR}.tar `cat ${BBDIR}/src/minimake/bbsvr-list | sed "s/^BBDIR/${BBDIR}/g"` ; \
	echo "Created archive `pwd`/btf-archives/BBSVR-${BBDIR}.tar"


#
# Client must go into its own directory
#

bbclient:
	@ cd ../../; rm -f "${BBCDIR}" ; ln -s  ${BBDIR} ${BBCDIR}; \
	touch "${BBCDIR}/src/minimake/client"; \
	tar cvf ../../btf-archives/BBCLT-${BBCDIR}.tar `cat ${BBCDIR}/src/minimake/bbclt-list | sed "s/^BBCDIR/${BBCDIR}/g"` ; \
	rm -f "${BBCDIR}" ; rm -f "${BBCDIR}/src/minimake/client"; \
	echo "Created archive `pwd`/btf-archives/BBCLT-${BBCDIR}.tar"

