COMPILER=g++
COMMON=../common
COMMON_INCLUDE=../common/include
INCLUDE=./include
BIN=../../bin

#compilation flags, both release and Debug version would
#have -g as it is more sensible, but DEBUG version alone
#would have -DDEBUG set so that it prints debug info in 
#log file

CFLAGS=-I${COMMON_INCLUDE} -I${INCLUDE} -Wall -gstabs 

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

#library flags 
LIBS=-L../libxml2/lib -lm -g -lcrypt



all:  finalize

finalize: vnet-manager group-admin
	cp vnet-manager group-admin ${BIN}

vmserver : vmserver.o ServerHelper.o StringTokenizer.o GrpResourceMgr.o
	${COMPILER} ${LIBS}  vmserver.o ServerHelper.o StringTokenizer.o GrpResourceMgr.o -o vmserver

vmserver.o: vmserver.C
	${COMPILER} ${CFLAGS}  vmserver.C -c

ServerHelper.o: ServerHelper.C ${INCLUDE}/ServerHelper.h
	${COMPILER} ${CFLAGS}  ServerHelper.C -c	

TransportManager.o: TransportManager.C ${INCLUDE}/TransportManager.h
	${COMPILER} ${CFLAGS}  TransportManager.C -c	

##################################### BEGIN GRPADMIN MGR ###################################

group-admin : common.o grpAdmin.o vnetMgrHelper.o GrpResourceMgr.o StringTokenizer.o GrpAdminUserHelper.o GrpAdminQueryHelper.o GrpAdminTeamHelper.o TransportManager.o
	${COMPILER} ${LIBS} common.o vnetMgrHelper.o GrpResourceMgr.o StringTokenizer.o GrpAdminUserHelper.o GrpAdminTeamHelper.o GrpAdminQueryHelper.o TransportManager.o grpAdmin.o -o group-admin
	cp group-admin ${BIN}

grpAdmin.o: grpAdmin.C ${INCLUDE}/grpAdmin.h
	${COMPILER} ${CFLAGS}  grpAdmin.C -c

GrpAdminUserHelper.o: GrpAdminUserHelper.C ${INCLUDE}/GrpAdminUserHelper.h
	${COMPILER} ${CFLAGS}  GrpAdminUserHelper.C -c

GrpAdminRegisterHelper.o: GrpAdminRegisterHelper.C ${INCLUDE}/GrpAdminRegisterHelper.h
	${COMPILER} ${CFLAGS}  GrpAdminRegisterHelper.C -c

GrpAdminQueryHelper.o: GrpAdminQueryHelper.C ${INCLUDE}/GrpAdminQueryHelper.h
	${COMPILER} ${CFLAGS}  GrpAdminQueryHelper.C -c

GrpAdminTeamHelper.o: GrpAdminTeamHelper.C ${INCLUDE}/GrpAdminTeamHelper.h
	${COMPILER} ${CFLAGS}  GrpAdminTeamHelper.C -c

##################################### END GRPADMIN MGR ###################################



##################################### BEGIN VNET MGR ###################################

vnet-manager : common.o vnetMgr.o vnetMgrHelper.o InitManager.o   GrpResourceMgr.o StringTokenizer.o TransportManager.o
	${COMPILER} ${LIBS} common.o vnetMgr.o vnetMgrHelper.o InitManager.o  GrpResourceMgr.o StringTokenizer.o  TransportManager.o -o vnet-manager
	cp vnet-manager ${BIN}

XMLHelper.o: XMLHelper.C ${INCLUDE}/XMLHelper.h
	${COMPILER} ${CFLAGS}  XMLHelper.C -c

vnetMgr.o: vnetMgr.C
	${COMPILER} ${CFLAGS}  vnetMgr.C -c

vnetMgrHelper.o: vnetMgrHelper.C ${INCLUDE}/vnetMgrHelper.h
	${COMPILER} ${CFLAGS}  vnetMgrHelper.C -c


InitManager.o: InitManager.C ${INCLUDE}/InitManager.h
	${COMPILER} ${CFLAGS}  InitManager.C -c


GrpResourceMgr.o: ${COMMON}/GrpResourceMgr.C ${COMMON_INCLUDE}/GrpResourceMgr.h
	${COMPILER} ${CFLAGS}  ${COMMON}/GrpResourceMgr.C -c


StringTokenizer.o:  ${COMMON}/StringTokenizer.C ${COMMON_INCLUDE}/StringTokenizer.h
	${COMPILER} ${CFLAGS}  ${COMMON}/StringTokenizer.C -c

##################################### END VNET MGR ###################################

common.o:  ${COMMON}/common.C ${COMMON_INCLUDE}/common.h
	${COMPILER} ${CFLAGS}  ${COMMON}/common.C -c


clean:
	rm -f *.o  vnet-manager group-admin


cleanadmin:
	rm -f group-admin grpAdmin.o  GrpAdminUserHelper.o GrpAdminRegisterHelper.o GrpAdminQueryHelper.o GrpAdminTeamHelper.o

cleanmgr:
	rm -f vnet-manager

g: cleanadmin grpAdmin.o GrpAdminUserHelper.o GrpAdminRegisterHelper.o GrpAdminQueryHelper.o group-admin
m: cleanmgr vnet-manager

docs:
	doxygen ../conf/vnet.conf 2> /dev/null
