#
#	optimization programs
#

now : svd-t.out

CC=gcc -w

inc = opt.h
lib = opt.a
objects = mat.o rank.o svd.o lp.o feas.o bfgs.o multi.o neldermead.o multisimp.o int.o eqs.o rungekutta.o

opt.a : $(objects)
	ar rv $@ $?
#	ranlib $@

mat.o		: mat.c $(inc)
rank.o		: rank.c $(inc)
svd.o		: svd.c $(inc)
lp.o		: lp.c $(inc)
feas.o		: feas.c $(inc)
bfgs.o		: bfgs.c $(inc)
multi.o		: multi.c $(inc)
int.o		: int.c $(inc)
eqs.o		: eqs.c $(inc)
neldermead.o	: neldermead.c $(inc)
multisimp.o	: multisimp.c $(inc)
rungekutta.o	: rungekutta.c $(inc)

#	test programs

mat-t0.o	: mat-t0.c $(inc)
mat-t0.out : mat-t0.o $(lib)
	$(CC) mat-t0.o $(lib) -o $@
rank-t.o   :	rank-t.c $(inc)
rank-t.out :	rank-t.o $(lib)
	$(CC) rank-t.o $(lib) -lm -o $@
svd-t.o   :	svd-t.c $(inc)
svd-t.out :	svd-t.o $(lib)
	$(CC) svd-t.o $(lib) -lm -o $@

lp-t0.o		: lp-t0.c $(inc)
lp-t1.o		: lp-t1.c $(inc)
lp-t0.out : lp-t0.o $(lib)
	$(CC) lp-t0.o $(lib) -o $@
lp-t1.out : lp-t1.o $(lib)
	$(CC) lp-t1.o $(lib) -o $@

feas-t0.o	: feas-t0.c $(inc)
feas-t1.o	: feas-t1.c $(inc)
feas-t2.o	: feas-t2.c $(inc)
feas-t3.o	: feas-t3.c $(inc)
feas-t0.out : feas-t0.o $(lib)
	$(CC) feas-t0.o $(lib) -o $@
feas-t1.out : feas-t1.o $(lib)
	$(CC) feas-t1.o $(lib) -o $@
feas-t2.out : feas-t2.o $(lib)
	$(CC) feas-t2.o $(lib) -o $@
feas-t3.out : feas-t3.o $(lib)
	$(CC) feas-t3.o $(lib) -o $@

bfgs-t0.o	: bfgs-t0.c $(inc)
bfgs-t1.o	: bfgs-t1.c $(inc)
bfgs-t2.o	: bfgs-t2.c $(inc)
bfgs-t0.out : bfgs-t0.o $(lib)
	$(CC) bfgs-t0.o $(lib) -o $@
bfgs-t1.out : bfgs-t1.o $(lib)
	$(CC) bfgs-t1.o $(lib) -o $@
bfgs-t2.out : bfgs-t2.o $(lib)
	$(CC) bfgs-t2.o $(lib) -o $@

multi-t0.o	: multi-t0.c $(inc)
multi-t1.o	: multi-t1.c $(inc)
multi-t0.out : multi-t0.o $(lib)
	$(CC)  multi-t0.o $(lib) -o $@
multi-t1.out : multi-t1.o $(lib)
	$(CC)  multi-t1.o $(lib) -o $@

int-t0.o	: int-t0.c $(inc)
int-t1.o	: int-t1.c $(inc)
int-t0.out  : int-t0.o $(lib)
	$(CC) int-t0.o $(lib) -lm -o $@
int-t1.out  : int-t1.o $(lib)
	$(CC) int-t1.o $(lib) -lm -o $@

eqs-t0.o	: eqs-t0.c $(inc)
eqs-t0.out  : eqs-t0.o $(lib)
	$(CC) eqs-t0.o $(lib) -lm -o $@

neldermead-t0.o	: neldermead-t0.c $(inc)
neldermead-t1.o	: neldermead-t1.c $(inc)
neldermead-t0.out : neldermead-t0.o $(lib)
	$(CC)	    neldermead-t0.o $(lib) -lm -o $@
neldermead-t1.out : neldermead-t1.o $(lib)
	$(CC)	    neldermead-t1.o $(lib) -lm -o $@

multisimp-t0.o	: multisimp-t0.c $(inc)
multisimp-t0.out : multisimp-t0.o $(lib)
	$(CC)	   multisimp-t0.o $(lib) -lm -o $@
multisimp-t1.o	: multisimp-t1.c $(inc)
multisimp-t1.out : multisimp-t1.o $(lib)
	$(CC)	   multisimp-t1.o $(lib) -lm -o $@

#	clean

clean :
	rm *.out *-t?.o core
allclean :
	rm *.o *.out opt.a *.c~ *.h~ Makefile~ core
