
VERSION = 1.0

## Transputers (Bowes)
#CC = mcc
#CCOPT = -c -O 
#LNKOPT = -O -lm -lcs -lcsn
#STDLNKOPT = -O
#all: seq par back

## Multimax (Newton)
CC = gcc
CCOPT = -c -pedantic -Wall -O2
LNKOPT = -lm
STDLNKOPT = -r -nostdlib
all: seq back 

seq: encseq cntseq cmpseq
	echo "sequential genetic versions built"

par: encpar cntpar cmppar
	echo "parallel genetic versions built"

back: encback cntback cmpback
	echo "backpropagation versions built"

# executables

STDPAR = mainpar.o par.o gen.o back.o genback.o stdnet.o defs.o
STDSEQ = mainseq.o seq.o gen.o back.o genback.o stdnet.o defs.o
STDBACK = mainback.o sim.o back.o genback.o stdnet.o defs.o

stdpar.o: mainpar.o par.o gen.o back.o genback.o stdnet.o defs.o

stdseq.o: mainseq.o seq.o gen.o back.o genback.o stdnet.o defs.o

stdback.o: mainback.o sim.o back.o genback.o stdnet.o defs.o

encpar: enc.o stdpar.o
	$(CC) $(STDPAR) enc.o -o encpar $(LNKOPT)

encseq: enc.o stdseq.o
	$(CC) $(STDSEQ) enc.o -o encseq $(LNKOPT)

encback: enc.o stdback.o
	$(CC) $(STDBACK) enc.o -o encback $(LNKOPT)

cntpar: cnt.o stdpar.o
	$(CC) $(STDPAR) cnt.o -o cntpar $(LNKOPT)

cntseq: cnt.o stdseq.o
	$(CC) $(STDSEQ) cnt.o -o cntseq $(LNKOPT)

cntback: cnt.o stdback.o
	$(CC) $(STDBACK) cnt.o -o cntback $(LNKOPT)

cmppar: cmp.o stdpar.o
	$(CC) $(STDPAR) cmp.o -o cmppar $(LNKOPT)

cmpseq: cmp.o stdseq.o
	$(CC) $(STDSEQ) cmp.o -o cmpseq $(LNKOPT)

cmpback: cmp.o stdback.o
	$(CC) $(STDBACK) cmp.o -o cmpback $(LNKOPT)

# object files

mainpar.o: mainpar.c gen.h back.h genback.h par.h ind.h defs.h
	$(CC) mainpar.c -o mainpar.o $(CCOPT)

mainseq.o: mainseq.c gen.h back.h genback.h seq.h ind.h defs.h
	$(CC) mainseq.c -o mainseq.o $(CCOPT)

mainback.o: mainback.c back.h ind.h defs.h
	$(CC) mainback.c -o mainback.o $(CCOPT)

enc.o: enc.c stdnet.h ind.h defs.h
	$(CC) enc.c -o enc.o $(CCOPT)

cnt.o: cnt.c stdnet.h ind.h defs.h
	$(CC) cnt.c -o cnt.o $(CCOPT)

cmp.o: cmp.c stdnet.h ind.h defs.h
	$(CC) cmp.c -o cmp.o $(CCOPT)

gen.o: gen.c gen.h ind.h defs.h
	$(CC) gen.c -o gen.o $(CCOPT)

par.o: par.c par.h defs.h
	$(CC) par.c -o par.o $(CCOPT)

seq.o: seq.c seq.h defs.h
	$(CC) seq.c -o seq.o $(CCOPT)

sim.o: sim.c sim.h defs.h
	$(CC) sim.c -o sim.o $(CCOPT)

back.o: back.c back.h ind.h defs.h
	$(CC) back.c -o back.o $(CCOPT)

defs.o: defs.c defs.h
	$(CC) defs.c -o defs.o $(CCOPT)

stdnet.o: stdnet.c stdnet.h defs.h ind.h
	$(CC) stdnet.c -o stdnet.o $(CCOPT)

genback.o: genback.c genback.h back.h ind.h defs.h
	$(CC) genback.c -o genback.o $(CCOPT)

clean:
	rm -f *.o

clear: clean
	rm -f encpar encseq encback 
	rm -f cntpar cntseq cntback 
	rm -f cmppar cmpseq cmpback

dist-src:
	mkdir neurogen-$(VERSION)
	cp README COPYING Makefile *.h *.c neurogen-$(VERSION)
	tar czf neurogen-$(VERSION).tgz neurogen-$(VERSION) --owner=0 --group=0
	rm -r neurogen-$(VERSION)

dist-bin: all
	mkdir neurogen-$(VERSION)-bin
	cp README COPYING Makefile {enc,cnt,cmp}{seq,back} neurogen-$(VERSION)-bin
	tar czf neurogen-$(VERSION)-bin.tgz neurogen-$(VERSION)-bin --owner=0 --group=0
	rm -r neurogen-$(VERSION)-bin

