# makefile for testing the GNUSSL C++ classes

# defaults reset by recursive make
CC = g++
CFLAGS = -fhandle-exceptions
LIBS = -lm

# local variables
CTARGS = c_gj_test 
TARGS = gj_test svd_test eigen_test overdet_test fft_test lstsq_test trans_test vp_test
INCLUDE = -I. -I../array_include -I../include -I../src
LIB_PATH = -L../src

all: $(CTARGS) $(TARGS)

C-check: $(CTARGS)

C++-check: $(TARGS)

err_test: err_test.C
	$(CC) $(CFLAGS) $(INCLUDE) -o err_test err_test.C $(LIBS)
	./err_test 5 > output/err_test.out

gj_test: gj_test.C
	$(CC) $(CFLAGS) $(INCLUDE) -o gj_test gj_test.C $(LIBS)
	./gj_test 5 > output/gj_test.out
	./gj_test 20 >> output/gj_test.out
	./gj_test 40 >> output/gj_test.out

svd_test: svd_test.C
	$(CC) $(CFLAGS) $(INCLUDE) -o svd_test svd_test.C $(LIBS)
	./svd_test 5 > output/svd_test.out
	./svd_test 20 >> output/svd_test.out
	./svd_test 40 >> output/svd_test.out

eigen_test: eigen_test.C
	$(CC) $(CFLAGS) $(INCLUDE) -o eigen_test eigen_test.C $(LIBS)
	./eigen_test 5 > output/eigen_test.out
	./eigen_test 20 >> output/eigen_test.out
	./eigen_test 40 >> output/eigen_test.out

overdet_test: overdet_test.C
	$(CC) $(CFLAGS) $(INCLUDE) -o overdet_test overdet_test.C $(LIBS)
	./overdet_test 10 5 > output/overdet_test.out
	./overdet_test 50 10 >> output/overdet_test.out

vp_test: vp_test.C
	$(CC) $(CFLAGS) $(INCLUDE) -o vp_test vp_test.C $(LIBS)
	./vp_test 20 > output/vp_test.ps

lstsq_test: lstsq_test.C
	$(CC) $(CFLAGS) $(INCLUDE) -o lstsq_test lstsq_test.C $(LIBS)
	./lstsq_test 20 > output/lstsq_test.ps

fft_test: fft_test.C
	$(CC) $(CFLAGS) $(INCLUDE) -o fft_test fft_test.C $(LIBS)
	./fft_test 8 > output/fft_test.out
	./fft_test 32 >> output/fft_test.out
	./fft_test 128 >> output/fft_test.out
	./fft_test 512 >> output/fft_test.out

trans_test: trans_test.C
	$(CC) $(CFLAGS) $(INCLUDE) -o trans_test trans_test.C $(LIBS)
	./trans_test 9 > output/trans_test.out
	./trans_test 33 >> output/trans_test.out
	./trans_test 127 >> output/trans_test.out

c_gj_test: c_gj_test.c 
	$(cc) $(CFLAGS) $(INCLUDE) -c c_gj_test.c
	$(CC) $(LIB_PATH) -o c_gj_test c_gj_test.o -lgnussl -lm
	./c_gj_test > output/c_gj_test.out

clean:
	rm -f $(CTARGS) $(TARGS) *.o output/*
