#
# Makefile for `client'
#

CC = g++
DEFINES  = -DMEMSET        # for Solaris 2.x
OPTIMIZE = -g 
#OPTIMIZE = -O4 
#GPROF = -pg               # to use gprof, program must call "exit(2V)"

CFLAGS = $(DEFINES) $(OPTIMIZE) $(GPROF)

OBJECT = peterclient.o parse.o act.o memory.o utils.o communications.o position.o command.o behave.o usenns.o data.o backprop.o train.o consult.o trees.o getnames.o usetrees.o userint.o knockorpass.o roles.o move-learn.o formation.o setplay.o adversarial.o rl.o geometry.o
#LIBS   = -lsocket -lnsl    # for Solaris 2.x
#LIBS = -L/usr/ucblib -L/usr/local/lib -lm -lsocket -lnsl -lucb # for Solaris on e.gp (and v.gp?)
LIBS = -lm

CLIENT  = peterclient
SERVER = server
PARSE = parse
COMMAND = command
ACT = act
BEHAVE = behave
MEMORY = memory
FORMATION = formation
UTILS = utils
LEARN = learn
COMMUNICATIONS = communications
POSITION = position
USENNS = usenns
USETREES = usetrees
DATA = data
BACKPROP = nets/backprop
TRAIN = train
CONSULT = c4.5/consult
TREES = c4.5/trees
GETNAMES = c4.5/getnames
USERINT = c4.5/userint
KNOCKORPASS = knockorpass
ROLES = roles
MOVELEARN = move-learn
SETPLAY = setplay
ADVERSARIAL = adversarial
RL = rl
GEOMETRY = geometry

all : $(OBJECT) $(CLIENT)

sample : $(CLIENT) $(SERVER)

$(CLIENT) : $(CLIENT:=.c) $(PARSE:=.c) $(ACT:=.c) $(BEHAVE:=.c) $(MEMORY:=.c) $(UTILS:=.c) $(POSITION:=.c) $(COMMAND:=.c) $(USENNS:=.c) $(DATA:=.c) $(CLIENT:=.h) $(PARSE:=.h) $(ACT:=.h) $(BEHAVE:=.h) $(MEMORY:=.h) $(UTILS:=.h) $(POSITION:=.h) $(COMMAND:=.h) $(USENNS:=.h) $(DATA:=.h) $(BACKPROP:=.c) backprop.h communications.c communications.h train.c train.h $(CONSULT:=.c) $(CONSULT:=.h) $(TREES:=.c) $(TREES:=.h) $(USETREES:=.c) $(USETREES:=.h) $(GETNAMES:=.c) $(GETNAMES:=.h) $(USERINT:=.c) $(USERINT:=.h) $(KNOCKORPASS:=.c) $(KNOCKORPASS:=.h) $(ROLES:=.c) $(ROLES:=.h) $(MOVELEARN:=.c) $(MOVELEARN:=.h) $(FORMATION:=.c) $(FORMATION:=.h) $(SETPLAY:=.c) $(SETPLAY:=.h) $(ADVERSARIAL:=.c) $(ADVERSARIAL:=.h) $(RL:=.c) $(RL:=.h) $(GEOMETRY:=.c) $(GEOMETRY:=.h) 
	$(CC) -o $@ $(GPROF) $(OBJECT) $(LIBS)

$(SERVER) : $(SERVER:=.o)
	$(CC) -o $@ $(SERVER:=.o) $(LIBS)

parse.o:    parse.c parse.h
	$(CC) -DTEST $(CFLAGS) -c parse.c

act.o:    act.c act.h peterclient.h formation.h position.h memory.h
	$(CC) -DTEST $(CFLAGS) -c  act.c

behave.o:    behave.c behave.h peterclient.h act.h formation.h position.h memory.h rl.h
	$(CC) -DTEST $(CFLAGS) -c  behave.c

command.o:    command.c command.h peterclient.h
	$(CC) -DTEST $(CFLAGS) -c  command.c

utils.o:    utils.c utils.h
	$(CC) -DTEST $(CFLAGS) -c utils.c

memory.o:    memory.c memory.h peterclient.h position.c position.h formation.c formation.h
	$(CC) -DTEST $(CFLAGS) -c  memory.c

peterclient.o:    peterclient.c peterclient.h
	$(CC) -DTEST $(CFLAGS) -c  peterclient.c

communications.o:    communications.c communications.h peterclient.h
	$(CC) -DTEST $(CFLAGS) -c  communications.c

position.o: 	 position.c position.h peterclient.h
	$(CC) -DTEST $(CFLAGS) -c  position.c -o position.o

formation.o: 	 formation.c formation.h peterclient.h
	$(CC) -DTEST $(CFLAGS) -c  formation.c -o formation.o

data.o: 	 data.c data.h peterclient.h
	$(CC) -DTEST $(CFLAGS) -c  data.c -o data.o

backprop.o: 	 backprop.c backprop.h
	$(CC) -DTEST $(CFLAGS) -c  backprop.c -o backprop.o

usenns.o:    usenns.c usenns.h backprop.h peterclient.h
	$(CC) -DTEST $(CFLAGS) -c usenns.c

consult.o:       $(CONSULT:=.c) $(CONSULT:=.h)
	$(CC) -DTEST $(CFLAGS) -c  $(CONSULT:=.c) -o consult.o

trees.o:       $(TREES:=.c) $(TREES:=.h)
	$(CC) -DTEST $(CFLAGS) -c  $(TREES:=.c) -o trees.o

getnames.o:       $(GETNAMES:=.c) $(GETNAMES:=.h)
	$(CC) -DTEST $(CFLAGS) -c  $(GETNAMES:=.c) -o getnames.o

userint.o:       $(USERINT:=.c) $(USERINT:=.h)
	$(CC) -DTEST $(CFLAGS) -c  $(USERINT:=.c) -o userint.o

usetrees.o:    usetrees.c usetrees.h peterclient.h
	$(CC) -DTEST $(CFLAGS) -c usetrees.c

train.o: 	 train.c train.h
	$(CC) -DTEST $(CFLAGS) -c  train.c -o train.o

knockorpass.o: 	 knockorpass.c knockorpass.h rl.h
	$(CC) -DTEST $(CFLAGS) -c  knockorpass.c -o knockorpass.o

roles.o: 	 roles.c roles.h
	$(CC) -DTEST $(CFLAGS) -c  roles.c -o roles.o

move-learn.o: 	 move-learn.c move-learn.h peterclient.h
	$(CC) -DTEST $(CFLAGS) -c  move-learn.c -o move-learn.o

setplay.o: 	 setplay.c setplay.h
	$(CC) -DTEST $(CFLAGS) -c  setplay.c -o setplay.o

adversarial.o: 	 adversarial.c adversarial.h
	$(CC) -DTEST $(CFLAGS) -c  adversarial.c -o adversarial.o

rl.o: 	 rl.c rl.h
	$(CC) -DTEST $(CFLAGS) -c  rl.c -o rl.o

geometry.o: 	 geometry.c geometry.h
	$(CC) -DTEST $(CFLAGS) -c  geometry.c -o geometry.o

clean :
	rm -f $(CLIENT) $(SERVER) *.o *~

$(OBJECT) : 

