CPPC    = g++ -std=c++98
LIBS    = -lgfortran -L/gpfs/mrc0/projects/Research_Project-MRC158833/programs/R-2.15.3/src/nmath/standalone -lRmath -llapack -L/gpfs/mrc0/projects/Research_Project-MRC158833/rnb203/libraries/lapack-3.6.1 -lblas -lz -lm -Lstandalone # TODO return to this set of libs?
#STATLIBS = -static -lRmath -llapack -lblas -lgfortran -lg2c -lz -lm
STATLIBS = -static -L/gpfs/mrc0/projects/Research_Project-MRC158833/programs/R-2.15.3/src/nmath/standalone -lRmath -llapack -L/gpfs/mrc0/projects/Research_Project-MRC158833/rnb203/libraries/lapack-3.6.1 -lblas -lz -lm -Llib64 -Lstandalone -Lzlib-1.2.7
# may need to add/remove -lgfortran and/or -lg2c depending on your system

XERBLAFIX = -Xlinker -z -Xlinker muldefs -I include
# it seems that xerbla has multiple conflicting definitions in Debian
# lapack/blas.  since this is the error handler for invalid function
# input arguments, we assume that this is okay and will not cause any
# numerical errors in our calculations

# warning options
WOPTS :=        -pedantic         -Wall -W -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wno-deprecated -Wextra -Wl,-rpath,/gpfs/mrc0/projects/Research_Project-MRC158833/rnb203/libraries/lapack-3.6.1 -Wl,-rpath,/gpfs/mrc0/projects/Research_Project-MRC158833/programs/R-2.15.3/src/nmath/standalone
# WOPTS := ${WOPTS} -Werror
WOPTS := ${WOPTS} -Wno-unused-variable
#WOPTS := ${WOPTS} -Wno-maybe-uninitialized
WOPTS := ${WOPTS} -Wno-sign-compare
WOPTS := ${WOPTS} -Wno-unused-parameter
WOPTS := ${WOPTS} -Wno-unused-but-set-variable
# options recommended by GSL documentation but not used are:
# -Wshadow, seems to cause problems with gcc version 2
# -Wtraditional -Wnested-externs, not valid for c++

# optimisation
OOPTS   = -O3  -I include -I zlib-1.2.7 -I /gpfs/mrc0/projects/Research_Project-MRC158833/programs/R-2.15.3/src/include -I/gpfs/mrc0/projects/Research_Project-MRC158833/rnb203/libraries/BLAS-3.7.0 #-I/mnt/Data2/programs/r_installation/R-2.12.2/include/ -L/mnt/Data2/programs/r_installation/R-2.12.2/include/

# debugging and profiling options
DOPTS	= -g

all:	quicktest

rebuild: clean all

gzstream.o:	gzstream.cpp
	$(CPPC) $(WOPTS) $(OOPTS) $(DOPTS) -c gzstream.cpp
	@echo done.

snphwe.o:	snphwe.cpp
	$(CPPC) $(WOPTS) $(OOPTS) $(DOPTS) -c snphwe.cpp
	@echo done.

stats.o:	stats.h stats.cpp
	$(CPPC) $(WOPTS) $(OOPTS) $(DOPTS) -c stats.cpp
	@echo done.

as.o:	as.cpp
	$(CPPC) $(WOPTS) $(OOPTS) $(DOPTS) -c as.cpp
	@echo done.

quicktest.o:	quicktest.h stats.h quicktest.cpp
	$(CPPC) $(WOPTS) $(OOPTS) $(DOPTS) -c quicktest.cpp
	@echo done.

quicktest:	gzstream.o snphwe.o quicktest.o as.o stats.o
	$(CPPC) $(WOPTS) $(DOPTS) gzstream.o snphwe.o as.o quicktest.o stats.o $(LIBS) -o quicktest
	@echo done.

static:	gzstream.o snphwe.o quicktest.o as.o stats.o
	$(CPPC) $(XERBLAFIX) gzstream.o snphwe.o as.o quicktest.o stats.o $(STATLIBS) -o quicktest-static
	@echo done.

clean:
	rm -f *.o *.tmp *.aux *.log *.toc

doc:	quicktest.pod
	pod2man -c "Quick association testing, with genotype uncertainty" -r "Version 0.95" quicktest.pod >quicktest.1
	groff -man -Tps quicktest.1 | ps2pdf - quicktest.pdf
	pod2html --noindex --title="Quick association testing, with genotype uncertainty" quicktest.pod >quicktest.html
	pdflatex quicktest-guide; pdflatex quicktest-guide
	@echo done.

tar:	Makefile quicktest.cpp quicktest.pod
	tar cjf quicktest.tar.bz2 Makefile quicktest.h quicktest.cpp gzstream.h gzstream.cpp as.h as.cpp stats.h stats.cpp quicktest.pod ex.gen.gz ex.sample ex-run.sh
	@echo done.
