############################################################
#
# Makefile     : Applications Main Makefile
# author       : Fabio Silva
# 
# $Id: Makefile,v 1.13 2001/09/07 23:10:26 fabio Exp $
#
############################################################

include ../config.mk

AGENT1     = 	agent1
AGENT2     = 	agent2
AGENT2I    = 	agent2i
FLOODING   =	flooding
LOG	   =    log
SGRADIENT  =	simple_gradient
GRADIENT   =    gradient
TAG	   = 	tag
SRCRT	   =	srcrt
SRCDIR	   = 	agents \
		sysapps

OBJECTS   =     ../main/attrs.o ../main/message.o ../main/events.o \
		../main/iodev.o ../main/drivers/UDPlocal.o \
		../nr/nr.o ../lib/dr.o
A1OBJECTS  = 	$(OBJECTS) agents/agent1.o
A2OBJECTS  = 	$(OBJECTS) agents/agent2.o
A2IOBJECTS = 	$(OBJECTS) agents/agent2i.o
FLOBJECTS  =	$(OBJECTS) sysapps/flooding.o
LOBJECTS   =	$(OBJECTS) sysapps/log.o
SGOBJECTS  =	$(OBJECTS) sysapps/simple_gradient.o
GOBJECTS   = 	$(OBJECTS) sysapps/gradient.o ../main/utils.o
TAGOBJECTS = 	$(OBJECTS) sysapps/tag.o
SRCRTOBJ   =	$(OBJECTS) sysapps/srcrt.o
LIB	   =    -lpthread

default:	all

all: src link

src:
	@for subdir in $(SRCDIR); do \
		(cd $$subdir && $(MAKE) ); \
	done

link:
	@echo "Linking..."
	$(CC) $(LIB) $(A1OBJECTS) -o $(AGENT1)
	@size $(AGENT1)
	$(CC) $(LIB) $(A2OBJECTS) -o $(AGENT2)
	@size $(AGENT2)
	$(CC) $(LIB) $(A2IOBJECTS) -o $(AGENT2I)
	@size $(AGENT2I)
	$(CC) $(LIB) $(FLOBJECTS) -o $(FLOODING)
	@size $(FLOODING)
	$(CC) $(LIB) $(LOBJECTS) -o $(LOG)
	@size $(LOG)
	$(CC) $(LIB) $(SGOBJECTS) -o $(SGRADIENT)
	@size $(SGRADIENT)
	$(CC) $(LIB) $(GOBJECTS) -o $(GRADIENT)
	@size $(GRADIENT)
	$(CC) $(LIB) $(TAGOBJECTS) -o $(TAG)
	@size $(TAG)
	$(CC) $(LIB) $(SRCRTOBJ) -o $(SRCRT)
	@size $(SRCRT)

clean:
	rm -f *.o core $(AGENT1) $(AGENT2) $(AGENT2I) $(FLOODING) $(LOG) $(GRADIENT) $(SGRADIENT) $(TAG) $(SRCRT) *~
	@for subdir in $(SRCDIR); do \
		(cd $$subdir && $(MAKE) clean); \
	done

publish:
	strip $(LOG)
	strip $(GRADIENT)
	strip $(SGRADIENT)
	strip $(TAG)
	strip $(SRCRT)
	strip $(AGENT1) $(AGENT2) $(AGENT2I)
	cp $(LOG) /home/fabio/pc104/bin
	cp $(TAG) /home/fabio/pc104/bin
	cp $(SRCRT) /home/fabio/pc104/bin
	cp $(GRADIENT) /home/fabio/pc104/bin
	cp $(SGRADIENT) /home/fabio/pc104/bin
	cp $(AGENT1) /home/fabio/pc104/bin
	cp $(AGENT2) /home/fabio/pc104/bin
	cp $(AGENT2I) /home/fabio/pc104/bin
	(cd /home/fabio/pc104 && rsync-pc104 ci)
