# DON'T FORGET TO SET THE INSTALL VARIABLE WITH THE ROOT INSTALLATION
# DIRECTORY WHEN BUILDING
# ie 'make INSTALL=<installdir> all'

#C compiler
CC = gcc

#klic compiler
KLIC = klic

#build command
BUILD = make ROOT=$(INSTALL) CC=$(CC) INC_PATH="$(INC_PATH)" LIB_PATH="$(LIB_PATH)" 

#Installation path
INSTALL = $(BSSOLVE_DIR)

#include paths
INC_PATH = '-I$(HOME)/include  -I$(INSTALL)/include -I.'

#libraries paths
LIB_PATH = '-L$(HOME)/lib -L$(INSTALL)/lib -L.'

#Is this machine running Solaris (assuming it is a Sun) ?
whichsun:
	(echo "/* Is this machine running Solaris (assuming it is a Sun) ? */";\
	 if [ `uname -r|awk -F. '{print  $$1}'` -ge 5 ];\
	 then echo "#define SOLARIS";\
	 else echo "#define OLD_SUNOS";\
	 fi;\
	 echo "#ifdef OLD_SUNOS";\
	 echo "#define ieee_f( a, b, c, d) ieee_flags( a, b, c, d)";\
	 echo "#else";\
	 echo "#ifdef SOLARIS";\
	 echo "#define ieee_f( a, b, c, d) __set_ieee_flags( a, b, c, d)";\
	 echo "#endif";\
	 echo "#endif"\
	 echo "/* Is this machine an Ultra (assuming it is a Sun) ? */";\
	 if [ `uname -m|awk '{print substr($$0, length ($$0), 1)}'` = u ];\
	 then echo "#define ULTRA";\
	 else echo "#define OLD_SPARC";\
	 fi;\
	 )> $(INSTALL)/include/whichsun.h

all: installdir whichsun bssc newt groeb bssk 
	(cd $(INSTALL)/lib; ranlib *.a)

installdir:
	if [ ! -d $(INSTALL)/include ]; then\
	  mkdir $(INSTALL)/include;\
	fi;\
	if [ ! -d $(INSTALL)/lib ]; then\
	  mkdir $(INSTALL)/lib;\
	fi;\
	if [ ! -d ./bssolve/bin ]; then\
	  mkdir ./bssolve/bin;\
	fi;\

bssc: 
	cd ./bssolve; $(BUILD) bssc; cd ..

bssk: 
	cd ./bssolve; $(BUILD) KLIC=$(KLIC) bssk; cd ..

newt: 
	cd ./newton; $(BUILD) ; cd ..

groeb: 
	cd ./groebner; $(BUILD) ; cd ..

testw: 
	(cd ./bssolve/klic; $(BUILD)  KLIC=$(KLIC) testw; mv testbsw ../bin)

testw1: 
	(cd ./bssolve/klic; $(BUILD)  KLIC=$(KLIC) testw1; mv testbsw1 ../bin)

Bifurcation: 
	(cd ./bssolve/klic; $(BUILD)  KLIC=$(KLIC) Bifurcation; mv Bifurcation ../bin)

Cox: 
	(cd ./bssolve/klic; $(BUILD)  KLIC=$(KLIC) Cox; mv Cox ../bin)

Cyclo: 
	(cd ./bssolve/klic; $(BUILD)  KLIC=$(KLIC) Cyclo; mv Cyclo ../bin)

Griewank: 
	(cd ./bssolve/klic; $(BUILD) KLIC=$(KLIC)  Griewank; mv Griewank ../bin)

Parabola: 
	(cd ./bssolve/klic;$(BUILD) KLIC=$(KLIC)  Parabola; mv Parabola ../bin)

Sympa: 
	(cd ./bssolve/klic; $(BUILD) KLIC=$(KLIC)  Sympa; mv Sympa ../bin)

combine: 
	(cd ./bssolve/klic; $(BUILD)  KLIC=$(KLIC) combine; cp Combine ../bin; mv combine ../bin)

tex:	
	cd ./doc; make all; 

clean:
	for i in bssolve newton groebner doc;\
	do \
	  (cd $$i; make ROOT=$(INSTALL) clean;) \
	done;\
