
#++
#   Name: Makefile
#--

CC      = gcc
CFLAGS  = -ansi -pedantic -g -Wall  -I.       \
          -Wpointer-arith -Wstrict-prototypes \
          -Wmissing-prototypes 
OBJS    = KRnet.o packet.o message.o queue.o
GBNOBJS = GBN/client.o GBN/server.o
ABPOBJS = ABP/client.o ABP/server.o
KRNetC  = KRnet.c timer.c evQ.c random.c 
LIBS    = -lm
SHELL   = /opt/bin/bash

help:
	echo "USAGE: make [simABP|simGBN]"

simABP: $(OBJS) $(ABPOBJS) Makefile 
	$(CC) $(CFLAGS) $(LINKFLAGS) $(OBJS) $(ABPOBJS) -o $@ $(LIBS)

simGBN: $(OBJS) $(GBNOBJS) Makefile 
	$(CC) $(CFLAGS) $(LINKFLAGS) $(OBJS) $(GBNOBJS) -o $@ $(LIBS)

message.o: message.c message.h payload.h
	$(CC) $(CFLAGS) -c message.c

packet.o: packet.c packet.h payload.h
	$(CC) $(CFLAGS) -c packet.c

queue.o: queue.c queue.h 
	$(CC) $(CFLAGS) -c queue.c	

ABP/client.o: ABP/client.c client.h packet.h message.h KRnet.h
	$(CC) $(CFLAGS) -c -o ABP/client.o ABP/client.c

ABP/server.o: ABP/server.c server.h packet.h message.h KRnet.h
	$(CC) $(CFLAGS) -c -o ABP/server.o ABP/server.c

GBN/client.o: GBN/client.c client.h packet.h message.h KRnet.h
	$(CC) $(CFLAGS) -c -o GBN/client.o GBN/client.c 

GBN/server.o: GBN/server.c server.h packet.h message.h KRnet.h
	$(CC) $(CFLAGS) -c -o GBN/server.o GBN/server.c 

KRnet.o: $(KRNetC) KRnet.h packet.h message.h client.h server.h
	$(CC) $(CFLAGS) -c KRnet.c

${OBJS}: Makefile

clean:
	/bin/rm -f $(OBJS) $(ABPOBJS) $(GBNOBJS) simABP simGBN
#	$(GBNOBJS) $(ABPOBJS)

# End of Makefile
