CC=gcc
ifdef OPT
CCFLAGS = -O3
else
CCFLAGS = -g -Wall -DYYDEBUG
endif
#YYDEBUG=-t
#FLEXDEBUG=-d
#CCFLAGS = -g -Wall
#CCFLAGS = -Wall -O3
ifdef DEBUG
CCFLAGS += -Ddebug
endif
YYDEBUG=
CFLAGS = $(CCFLAGS) -Iimport/expat -Wall
#CFLAGS = $(CCFLAGS) -DMALLOC_DEBUG -Iimport/expat -Wall
OBJ = .o
#LIBS = expat.a -lnsl -lsocket
LIBS = expat.a

STANDALONE_OBJS = \
	io$(OBJ) \
	err$(OBJ) \
	log$(OBJ) \
	malloc$(OBJ) \
	mem$(OBJ) \
	lex.yy$(OBJ) \
	brite.tab$(OBJ) \
	graph$(OBJ) \
	mmsched$(OBJ) \
	ternary$(OBJ) \
	xparse$(OBJ)

SERVER_OBJECTS = $(STANDALONE_OBJS) \
	activity$(OBJ) \
	event$(OBJ) \
	http$(OBJ) \
	schedsvr$(OBJ) \

EXPAT_OBJS = \
	xmlparse.o \
	hashtable.o \
	xmltok.o \
	xmlrole.o
#	import/expat/xmlparse/xmlparse.o \
#	import/expat/xmlparse/hashtable.o \
#	import/expat/xmltok/xmltok.o \
#	import/expat/xmltok/xmlrole.o

all: schedsvr sched

schedsvr: schedmain$(OBJ) $(SERVER_OBJECTS) expat.a
	$(CC) -o schedsvr $(CFLAGS) schedmain$(OBJ) $(SERVER_OBJECTS) $(LIBS)

sched: $(STANDALONE_OBJS) sched$(OBJ)
	$(CC) -o $@ $(CFLAGS) $^ $(LIBS)

msgsvr:	main$(OBJ) $(OBJECTS)
	$(CC) -o msgsvr $(CFLAGS) main$(OBJ) $(OBJECTS) $(LIBS)

main2:	main2$(OBJ) $(OBJECTS)
	$(CC) -o main2 $(CFLAGS) main2$(OBJ) $(OBJECTS) $(LIBS)

dns: dns$(OBJ) $(OBJECTS)
	$(CC) -o dns $(CFLAGS) dns$(OBJ) $(OBJECTS) $(LIBS)

mmsched.o: mmsched.h

malloc$(OBJ): malloc.c
	$(CC) $(CCFLAGS) -c malloc.c

expat.a:
	$(MAKE) -f expat.mk expat.a

lex.yy.c : brite.l brite.tab.h
	flex $(FLEXDEBUG) brite.l

%.tab.c  : %.y
	bison $(YYDEBUG) -d $<

%.tab.h: %.y
	bison -d $<

import/expat/%.o: import/expat/%.c
	$(CC) $(CCFLAGS) -Iimport/expat/xmltok -Iimport/expat/xmlparse -c $< -o $@

$(OBJECTS):	oslib.h

full_clean: clean
clean:
	rm -f $(SERVER_OBJECTS) $(EXPAT_OBJS) expat.a schedmain$(OBJ) sched$(OBJ) lex.yy.c brite.tab.c schedsvr sched
