# // ======================================================================
# //     COPYRIGHT Stony Brook University.
# //     ALL RIGHTS RESERVED.
# // =======================================================================
CC = g++
INCLUDE =../include
COMMON_INCLUDE=../../common/include
SERVER_INCLUDE=../../server/include
ALLOCTOR_INCLUDE=../../allocator/include
CFLAGS =  -I${INCLUDE} -I${ALLOCTOR_INCLUDE} -I${COMMON_INCLUDE} -I${SERVER_INCLUDE} -Wall -gstabs -g -c

ifeq ($(DEBUG),y)
CFLAGS += -g -D_DEBUG
else
CFLAGS += -g
endif


# SRCS = Makefile Lex.l Parser.y vm.C vm.h cfg.h hub.C hub.h switch.C switch.h host.C host.h dhcp.C dhcp.h nethdr.h graph.h helper.C phydistr.C Driver.C vmserver.C output.C user.h

# all : vmserver

# vmserver : vmserver.o Parser.tab.o Lex.lex.o Driver.o vm.o hub.o dhcp.o host.o switch.o helper.o graph.o phydistr.o output.o #loader.o 
# 	$(CC) -g -o $@ $?

# vmserver.o : vmserver.C
# 	$(CC) $(CFLAGS) $?

# Parser.tab.o : Parser.tab.C Parser.y Lex.l
# 	${CC} ${CFLAGS} Parser.tab.C

# Parser.tab.C: Parser.y
# 	bison -t -d -v -o $@ $?

# Lex.lex.o : Lex.lex.C
# 	${CC} ${CFLAGS} $?

# Lex.lex.C : Lex.l
# 	flex -p -8 -Ce -o$@ $?

# Driver.o : Driver.C
# 	${CC} $(CFLAGS) $?

# vm.o : vm.C 
# 	${CC} $(CFLAGS) $?	

# graph.o : graph.C 
# 	${CC} $(CFLAGS) $?	


all: allObjs


allObjs: Interface.o Hub.o  Host.o Switch.o VM.o VInf.o  Parser.tab.o Lex.lex.o MACGenerationHelper.o driver.o

driver:  Interface.o Hub.o  Host.o Switch.o VM.o VInf.o  Parser.tab.o Lex.lex.o driver.o
	${CC} -g -o driver Interface.o Hub.o Host.o MACGenerationHelper.o Switch.o VM.o VInf.o  Parser.tab.o Lex.lex.o driver.o ../../allocator/Node.o ../../allocator/Network.o

driver.o : driver.C 
	${CC} $(CFLAGS)  $?	

Interface.o : Interface.C
	${CC} $(CFLAGS)  $?	

Hub.o : Hub.C
	${CC} $(CFLAGS)  $?	

Host.o : Host.C
	${CC} $(CFLAGS) $? 	

Switch.o : Switch.C
	${CC} $(CFLAGS) $? 	

VM.o : VM.C
	${CC} $(CFLAGS) $? 

VInf.o : VInf.C
	${CC} $(CFLAGS) $? 

MACGenerationHelper.o : MACGenerationHelper.C
	${CC} $(CFLAGS) $?

Parser.tab.o : Parser.tab.C Parser.y Lex.lex.o
	${CC} ${CFLAGS} Parser.tab.C

Parser.tab.C : Parser.y
	bison -t -d -v -o $@ $? 

Lex.lex.o : Lex.lex.C
	${CC} ${CFLAGS} $?

Lex.lex.C : Lex.l
	flex -p -8 -Ce -R -o$@ $? 


# helper.o : helper.C
# 	${CC} $(CFLAGS) $?

# phydistr.o : phydistr.C
# 	${CC} $(CFLAGS) $?

# output.o : output.C
# 	${CC} $(CFLAGS) $?

# dist : clean
# 	tar zcvf vmserver.tgz ${SRCS}

# clean :	
# 	rm -f *.output Parser.tab.C Parser.tab.H Lex.lex.C Parser.tab.C.h y.tab.h
# 	rm -f vmserver
# 	rm -f *.o 

clean1: 
	rm -f Parser.tab.C Parser.tab.H Lex.lex.C Parser.tab.C.h y.tab.h lex.yy.c Parser.output driver Parser.tab.o Lex.lex.o driver.o
clean:
	rm -f *.o
	rm -f  Parser.tab.C Parser.tab.H Lex.lex.C Parser.tab.C.h y.tab.h lex.yy.c Parser.output driver
