#################################################
##              In the name of GOD
##
## Copyright (C) 2009-2011 Behnam Momeni.
## All rights reserved.
##
## This file is part of the HVNS project.
##
#################################################

COMPILER = g++
FLAGS = -Wall -g -Ibase -Iuser
LIBS = -lcrypto -lpthread

NODE_TARGET = node.out
YANCS_TARGET = yancs.out
TARGETS = ${NODE_TARGET} ${YANCS_TARGET}

BASE_SOURCES = base/main.cpp \
	base/cf.cpp \
	base/interface.cpp \
	base/machine.cpp \
	base/frame.cpp

NODE_SOURCES = user/node.cpp
YANCS_SOURCES = user/yancs.cpp

BASE_OBJ = ${BASE_SOURCES:.cpp=.o}
BASE_OBJECTS = ${BASE_OBJ:.c=.o}

NODE_OBJ = ${NODE_SOURCES:.cpp=.o}
NODE_OBJECTS = ${NODE_OBJ:.c=.o}

YANCS_OBJ = ${YANCS_SOURCES:.cpp=.o}
YANCS_OBJECTS = ${YANCS_OBJ:.c=.o}

OBJECTS = ${BASE_OBJECTS} ${NODE_OBJECTS} ${YANCS_OBJECTS}

all: ${TARGETS}

${NODE_TARGET}: ${NODE_OBJECTS} ${BASE_OBJECTS} ${COMMON_OBJECTS}
	${COMPILER} ${FLAGS} -o ${NODE_TARGET} ${NODE_OBJECTS} ${BASE_OBJECTS} ${COMMON_OBJECTS} ${LIBS}

${YANCS_TARGET}: ${YANCS_OBJECTS} ${BASE_OBJECTS} ${COMMON_OBJECTS}
	${COMPILER} ${FLAGS} -o ${YANCS_TARGET} ${YANCS_OBJECTS} ${BASE_OBJECTS} ${COMMON_OBJECTS} ${LIBS}

clean:
	rm -f ${OBJECTS} ${TARGETS} *~ base/*~ user/*~

.cpp.o:
	${COMPILER} ${FLAGS} -c $< -o $@
.c.o:
	${COMPILER} ${FLAGS} -c $< -o $@

