export DIR_SHARED = ../../lib/
export DIR_HDR = ../../hdr/
export DIR_DYN = ../../dyn/

#compiler-dependent flags
include ver.var

INSTALL_EXE = /usr/local/bin/
INSTALL_LIB = /usr/local/lib/

.PHONY: core
core: shared cruncher grazer

ver.var: ver.2.7.x ver.2.8.0
	bash -c ' \
		if gcc --version|grep "^2.7"; \
		then cp ver.2.7.x ver.var; \
		else (cp ver.2.8.0 ver.var; \
			if [ "$(LOCUS_CURRENT_VERSION)" = "" ]; \
			then echo "VOLFLAG += -O2" >> ver.var; \
			else echo "VOLFLAG += -ggdb" >> ver.var; \
			fi); \
		fi \
	'

.PHONY: complete
complete: shared dyn cruncher grazer mvfile pstem

#does not add $(INSTALL_LIB) into /etc/ld.so.conf - it should
.PHONY: install
install: install_locus
	ldconfig
	cp ./bin/cruncher/cruncher $(INSTALL_EXE)
	cp ./bin/grazer/grazer $(INSTALL_EXE)

.PHONY: install_complete
install_complete: install_locus install_stem
	ldconfig
	cp ./bin/cruncher/cruncher $(INSTALL_EXE)
	cp ./bin/grazer/grazer $(INSTALL_EXE)
	cp ./bin/mvfile/mvfile $(INSTALL_EXE)
	cp ./bin/pstem/stem $(INSTALL_EXE)

.PHONY: install_locus
install_locus:
	cp ./lib/fbase/liblocus.so.$(LIBLOCUS_MAJOR).$(LIBLOCUS_MINOR) $(INSTALL_LIB)
	-cd $(INSTALL_LIB); rm liblocus.so.$(LIBLOCUS_MAJOR); rm liblocus.so
	cd $(INSTALL_LIB); ln -s liblocus.so.$(LIBLOCUS_MAJOR).$(LIBLOCUS_MINOR) liblocus.so.$(LIBLOCUS_MAJOR); ln -s liblocus.so.$(LIBLOCUS_MAJOR) liblocus.so

.PHONY: install_stem
install_stem:
	cp ./dyn/stem/libstem.so.1.0 $(INSTALL_LIB)
	-cd $(INSTALL_LIB); rm libstem.so.1; rm libstem.so
	cd $(INSTALL_LIB); ln -s libstem.so.1.0 libstem.so.1; ln -s libstem.so.1 libstem.so

.PHONY: clean
clean:
	cd lib; $(MAKE) clean
	cd bin; $(MAKE) clean
	cd dyn; $(MAKE) clean
	-rm ver.var

.PHONY: distclean
distclean:
	cd lib; $(MAKE) distclean
	cd bin; $(MAKE) distclean
	cd dyn; $(MAKE) distclean
	-rm ver.var doc/*~

.PHONY: shared
shared:
	cd lib; $(MAKE)

.PHONY: dyn
dyn:
	cd dyn; $(MAKE)

.PHONY: cruncher
cruncher:
	cd bin; $(MAKE) cruncher

.PHONY: grazer
grazer:
	cd bin; $(MAKE) grazer

.PHONY: mvfile
mvfile:
	cd bin; $(MAKE) mvfile

.PHONY: pstem
pstem:
	cd bin; $(MAKE) pstem

.PHONY: cut
cut:
	cd bin; $(MAKE) cut

