# export variables to sub-makes by default
export

# set default PREFIX if not set yet
PREFIX?=$(HOME)/EventDisplay

SRCBASE=$(shell pwd)

IETL_DIR          :="$(SRCBASE)/dep/ietl"
UBLAS_BINDINGS_DIR:="$(SRCBASE)/dep/ublas_bindings"
OSG_DIR           :="$(SRCBASE)/dep/OpenSceneGraph"

# check if boost is available
have_boost := $(wildcard /usr/include/boost/config.hpp)
ifneq ($(strip $(have_boost)),)
	BOOST_DIR := /usr/include
else
	BOOST_DIR := $(SRCBASE)/dep
endif



all: config prepare-boost build-ietl build-EventDisplay
	@echo
	@echo "EventDisplay is built. Now you can install it by typing 'make install'."
	@echo

clean:
	-rm -rf $(SRCBASE)/dep/ietl-2.2
	-rm -rf $(SRCBASE)/ietl
	touch $(SRCBASE)/start.sh && rm $(SRCBASE)/start.sh
	cd $(SRCBASE)/EventDisplay && qmake
	make distclean -C $(SRCBASE)/EventDisplay
	make distclean -C $(SRCBASE)/doc/reference
	
config:
	@echo
	@echo "============================================================="
	@echo " Options to build and install CEDRIC EventDisplay"
	@echo "============================================================="
	@echo
	@echo "Path to ROOT and PHAST (*must* be set!)"
	@echo "  ROOTSYS           =$(ROOTSYS)"
	@echo "  PHASTSYS          =$(PHASTSYS)"
	@echo
	@echo "Path to used Qt (*must* be a version >= 4.3.0!)"
	@echo "  QTDIR             =$(QTDIR)"
	@echo
	@echo "Path where EventDisplay will be installed to:"
	@echo "  PREFIX            =$(PREFIX)"
	@echo
	@echo "Path of source-package:"
	@echo "  SRCBASE           =$(SRCBASE)"
	@echo
	@echo "Path to external libraries:"
	@echo "  BOOST_DIR         =$(BOOST_DIR)"
	@echo "  IETL_DIR          =$(IETL_DIR)"
	@echo "  UBLAS_BINDINGS_DIR=$(UBLAS_BINDINGS_DIR)"
	@echo "  OSG_DIR           =$(OSG_DIR)"
	@echo

build-ietl:
	@echo
	@echo "============================================================="
	@echo " Build Iterative Eigensolver Template library (IETL)"
	@echo "============================================================="
	cd $(SRCBASE)/dep && tar -xzvf ietl-2.2.tar.gz
	cd $(SRCBASE)/dep/ietl-2.2 && ./configure $(IETL_OPTIONS) --prefix=$(IETL_DIR) --with-boost=$(BOOST_DIR) --with-bindings=$(UBLAS_BINDINGS_DIR)
	make libs    -C $(SRCBASE)/dep/ietl-2.2
	make install -C $(SRCBASE)/dep/ietl-2.2

reference:
	@echo
	@echo "============================================================="
	@echo " Generate doxygen reference manual"
	@echo "============================================================="
	make -C $(SRCBASE)/doc/reference

build-EventDisplay:
	@echo
	@echo "============================================================="
	@echo " Build CEDRIC EventDisplay application"
	@echo "============================================================="
	cd $(SRCBASE)/EventDisplay && $(QTDIR)/bin/qmake
	make -C $(SRCBASE)/EventDisplay
	
build-start.sh:
	@echo
	@echo "============================================================="
	@echo " Create startup script start.sh"
	@echo "============================================================="
	@echo '#!/bin/bash'                                                    >  start.sh
	@echo '# Automatically generated start-script for CEDRIC EventDisplay' >> start.sh
	@echo 'L=$(PREFIX)/lib'                                                >> start.sh
	@echo 'export LD_LIBRARY_PATH=$$L/osg:$$L/osg/osgPlugins-2.0.0:$$LD_LIBRARY_PATH' >> start.sh
	@echo 'cd $(PREFIX) && ./EventDisplay "$$@"'                           >> start.sh
	@echo 'done'

install: build-start.sh
	@echo
	@echo "============================================================="
	@echo " Install CEDRIC EventDisplay to $(PREFIX)"
	@echo "============================================================="
	-mkdir $(PREFIX)
	cp    $(SRCBASE)/start.sh                  $(PREFIX)/.
	cp    $(SRCBASE)/EventDisplay/EventDisplay $(PREFIX)/.
	cp -r $(SRCBASE)/EventDisplay/data         $(PREFIX)/.
	cp -r $(SRCBASE)/EventDisplay/doc          $(PREFIX)/.
	-mkdir $(PREFIX)/lib
	-mkdir $(PREFIX)/lib/osg
	cp -r $(OSG_DIR)/lib/* $(PREFIX)/lib/osg/.
	chmod 755 $(PREFIX)/start.sh
	@echo "Installation finished!"
	@echo "EventDisplay can now be started via .$(PREFIX)/start.sh"
	@echo


#######
ifeq ($(strip $(have_boost)),)

prepare-boost:
	@echo "Preparing boost..."
	tar -xzf $(SRCBASE)/dep/boost.tgz
	@echo "done."
	
else

prepare-boost:
	@echo "Using boost installed in $(BOOST_DIR)"
	
endif
