############################################################
#
# Makefile     : Applications Main Makefile
# author       : Fabio Silva
# 
# $Id: Makefile,v 1.14 2001/10/08 19:43:42 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

DIFFLIBPATH =   ../lib
DIFFLIB	    =   $(DIFFLIBPATH)/libdiffusion.a
LIBFLAGS    =   -L$(DIFFLIBPATH) -ldiffusion -lpthread

AG1OBJS      = 	agents/agent1.o
AG2OBJS      = 	agents/agent2.o
AG2IOBJS     = 	agents/agent2i.o
FLOBJS       =	sysapps/flooding.o
LOGOBJS      =	sysapps/log.o
SGOBJS       =	sysapps/simple_gradient.o
GRADIENTOBJS = 	sysapps/gradient.o
TAGOBJS      = 	sysapps/tag.o
SRCRTOBJS    =	sysapps/srcrt.o

default:	all

all: src link

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

link: $(AGENT1) $(AGENT2) $(AGENT2I) $(FLOODING) $(LOG) $(SGRADIENT) \
	$(GRADIENT) $(TAG) $(SRCRT)

$(AGENT1): $(AG1OBJS) $(DIFFLIB)
	$(CC) $(AG1OBJS) -o $(AGENT1) $(LIBFLAGS)
	@size $(AGENT1)

$(AGENT2): $(AG2OBJS) $(DIFFLIB)
	$(CC) $(AG2OBJS) -o $(AGENT2) $(LIBFLAGS)
	@size $(AGENT2)

$(AGENT2I): $(AG2IOBJS) $(DIFFLIB)
	$(CC) $(AG2IOBJS) -o $(AGENT2I) $(LIBFLAGS)
	@size $(AGENT2I)

$(FLOODING): $(FLOBJS) $(DIFFLIB)
	$(CC) $(FLOBJS) -o $(FLOODING) $(LIBFLAGS)
	@size $(FLOODING)

$(LOG): $(LOGOBJS) $(DIFFLIB)
	$(CC) $(LOGOBJS) -o $(LOG) $(LIBFLAGS)
	@size $(LOG)

$(SGRADIENT): $(SGOBJS) $(DIFFLIB)
	$(CC) $(SGOBJS) -o $(SGRADIENT) $(LIBFLAGS)
	@size $(SGRADIENT)

$(GRADIENT): $(GRADIENTOBJS) $(DIFFLIB)
	$(CC) $(GRADIENTOBJS) -o $(GRADIENT) $(LIBFLAGS)
	@size $(GRADIENT)

$(TAG): $(TAGOBJS) $(DIFFLIB)
	$(CC) $(TAGOBJS) -o $(TAG) $(LIBFLAGS)
	@size $(TAG)

$(SRCRT): $(SRCRTOBJS) $(DIFFLIB)
	$(CC) $(SRCRTOBJS) -o $(SRCRT) $(LIBFLAGS)
	@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

strip:
	$(STRIP) $(LOG)
	$(STRIP) $(GRADIENT)
	$(STRIP) $(SGRADIENT) $(FLOODING)
	$(STRIP) $(TAG)
	$(STRIP) $(SRCRT)
	$(STRIP) $(AGENT1) $(AGENT2) $(AGENT2I)

publish:
	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)
