all: MP_INTERFACE lib examples_ 

CXX		= g++
CC 		= gcc
CXXFLAGS	= -O2 -Wall $(OPTION)
CFLAGS		= -O2 -Wall $(OPTION)


LR: clean LR_INTERFACE all

GMP: clean GMP_INTERFACE all

LRGMP: clean LRGMP_INTERFACE all

MPFR: clean MPFR_INTERFACE all

LR_INTERFACE:
	echo "MP_INTERFACE LR" > MP_version
	@echo -e "\n*** Using LR multiple precision package***\n"
	( cd backend/LR; make )
	ln -sf  backend/LR backend_includes
	cp backend/LR/LR_interface.h MP_interface.h 
	cp backend/LR/libLR.a libREALS.a

LRGMP_INTERFACE:
	echo "MP_INTERFACE LRGMP" > MP_version
	@echo -e "\n*** Using LR MP package with lowlevel GMP routines***\n"
	cp ../GMP/gmp.h backend/LRGMP
	( cd backend/LRGMP; make )
	ln -sf backend/LRGMP  backend_includes
	cp backend/LRGMP/LRGMP_interface.h MP_interface.h 
	cp backend/LRGMP/libLR.a libREALS.a

GMP_INTERFACE:
	@echo "MP_INTERFACE GMP" > MP_version
	@echo -e "\n*** Using GMP multiple precision package***\n"
	cp ../GMP/gmp.h backend/GMP
	( cd backend/GMP; make )
	ln -sf backend/GMP  backend_includes
	cp backend/GMP/GMP_interface.h MP_interface.h 
	cp backend/GMP/libLR.a libREALS.a

MPFR_INTERFACE:
	@echo "MP_INTERFACE MPFR" > MP_version
	@echo -e "\n*** Using MPFR multiple precision package ***\n"
	@echo -e "\n*** Interface might be very buggy!!!!!!!! ***\n"
	cp ../GMP/gmp.h backend/MPFR
	cp ../GMP/mpfr.h backend/MPFR
	( cd backend/MPFR; make )
	ln -sf backend/MPFR  backend_includes
	cp backend/MPFR/MPFR_interface.h MP_interface.h 
	cp backend/MPFR/libLR.a libREALS.a

clean:
	rm -f libREALS.a *.o *.rpo MP_version gmon.out backend_includes
	( cd backend/LR; make clean )
	( cd backend/LRGMP; make clean )
	( cd backend/GMP; make clean )
	( cd backend/MPFR; make clean )
	( cd examples; make clean )
	( cd src; make clean )

dist: clean
	echo \#define REALS_VERSION \"`date +%Y-%b-%d`\"  > REALversion.h
	cd ..
	tar czvf ../realram-`date +%Y-%m-%d`.taz -C .. realram --exclude realram/tests

examples_:
	( cd examples; make )

lib:
	( cd src; make )

MP_INTERFACE:
	@if [ ! -e MP_version ]; then \
	echo ;\
	echo "MP_version not set" ;\
	echo "Start with 'make LR', 'make LRGMP', 'make GMP', or 'make MPFR'" ;\
	echo ;\
	exit 1 ;\
	fi

