##############################################################################
#
#	Makefile --- makefile for GNU Make Utility to build the library and
#		other programs from the Arageli Package and run some tests and
#		examples.
#
##############################################################################


### Names ###

ARAGELINAME = arageli
TESTSNAME = tests
ARAGELIDIR = arageli_Inters
TESTSDIR = tests_Inters
TSNAME = ts


### Compilers ###

CPPCOMPILER = g++


### Files ###

ARAGELISOURCES :=	$(wildcard ../../src/arageli/*.cpp)				\
					$(wildcard ../../src/arageli/hermite/*.cpp)		\
					$(wildcard ../../src/arageli/smith/*.cpp)		\
					$(wildcard ../../src/arageli/submatrix/*.cpp)	\
					$(wildcard ../../src/arageli/subvector/*.cpp)

ARAGELIHEADERS :=	$(wildcard ../../src/arageli/*.hpp)				\
					$(wildcard ../../src/arageli/hermite/*.hpp)		\
					$(wildcard ../../src/arageli/smith/*.hpp)		\
					$(wildcard ../../src/arageli/submatrix/*.hpp)	\
					$(wildcard ../../src/arageli/subvector/*.hpp)

TESTSSOURCES :=		$(wildcard ../../tests/*.cpp)					\
					$(wildcard ../../tests/ITLab-produced/*.cpp)

TESTSHEADERS :=		$(wildcard ../../tests/*.hpp)					\
					$(wildcard ../../tests/ITLab-produced/*.hpp)


### Rules ###

.PHONY : all arageli tests clean ts runtests
#examples runexamples runtests

arageli : ../../bin/lib$(ARAGELINAME).a
tests : ../../bin/$(TESTSNAME)

all: arageli tests runtests
#runexamples runtests


../../bin/lib$(ARAGELINAME).a : $(ARAGELISOURCES) $(ARAGELIHEADERS)
	cd ../../bin && mkdir -p $(ARAGELIDIR)
	cd ../../bin/$(ARAGELIDIR) && $(CPPCOMPILER) -c $(CXXFLAGS) $(ARAGELICXXFLAGS) -DARAGELI_SOURCE $(ARAGELISOURCES)
	cd ../../bin/$(ARAGELIDIR) && ar -r ../lib$(ARAGELINAME).a *.o


../../bin/$(TESTSNAME) : ts arageli $(TESTSSOURCES) $(TESTSHEADERS)
	cd ../../bin && mkdir -p $(TESTSDIR)
	cd ../../bin/$(TESTSDIR) && $(CPPCOMPILER) -o ../$(TESTSNAME) $(CXXFLAGS) $(TESTSCXXFLAGS)	\
		-I"../../src/" -I"../../tools/ts/src/" -L"../" -L"../../tools/ts/bin/"	\
		$(TESTSSOURCES) -l$(ARAGELINAME) -l$(TSNAME)


#WARNING! TODO: Make dependences from ts sources.

ts :
	#cd ../../tools/ts/build/linux-gcc
	cd ../../tools/ts/build/linux-gcc && make CXXFLAGS=$(CXXFLAGS) TSCXXFLAGS=$(TSCXXFLAGS) ts
	#cd ../../../../build/linux-gcc
	
	
runtests : tests
	cd ../../bin && ./$(TESTSNAME) > ../status/tests.log
	#cd ../build/linux-gcc


clean:
	rm -rf ../../bin/$(ARAGELIDIR) ../../bin/lib$(ARAGELINAME).a
	cd ../../tools/ts/build/linux-gcc && make clean
	#cd ../../../../build/linux-gcc
	rm -rf ../../bin/$(TESTSDIR)
	rm -f ../../bin/$(TESTSNAME)
	rm -f ../../status/tests.log

