#!/usr/bin/make -f

# Uncomment this to turn on verbose mode.
export DH_VERBOSE=1

# magic debhelper rule
%:
	dh $@ --with python2,python3,autoreconf

include /usr/share/mpi-default-dev/debian_defaults
#ARCH_DEFAULT_MPI_IMPL=lam
MPI_INC=/usr/lib/$(ARCH_DEFAULT_MPI_IMPL)/include

ifeq ($(ARCH_DEFAULT_MPI_IMPL),lam)
  CC:=mpicc.lam
  CXX:=mpic++.lam
else
  CXX:=mpic++
  CC:=mpicc
endif

# QT version 4 or 5
QT:=qt5
QT_INCLUDES:=-I/usr/include/$(QT) -I/usr/include/$(QT)/QtGui -I/usr/include/$(QT)/QtCore -I/usr/include/$(QT)/QtWidgets

DEFAULT_PYTHON:=`pyversions -d`
PYVERS:= `pyversions -s`
PY3VERS:= 
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
QT_BINDIR=/usr/lib/$(DEB_HOST_MULTIARCH)/bin
LIBDIR=/usr/lib/$(DEB_HOST_MULTIARCH)

override_dh_autoreconf:
	libtoolize -c -f
	dh_autoreconf

# Note: Since QT headers now include C++ features, configure must be called with g++ as the C compiler.
# But use $(CC) as the C compiler later when actually building.

override_dh_auto_configure:
	dh_auto_configure -- \
		--enable-versioned-symbol --enable-pythonmodule \
		--with-hdf5=/usr/include,/usr/lib \
		--with-Qt-bin=$(QT_BINDIR) --with-Qt-include-dir=/usr/include/$(QT) -with-Qt-lib=Qt5Widgets \
		CC=$(CXX) CXX=$(CXX) CFLAGS="$(CFLAGS) -fPIC " CXXFLAGS="$(CXXFLAGS) -fPIC " \
		LIBS=" -lQt5Core " LDFLAGS="$(LDFLAGS) " \
		CPPFLAGS=" $(QT_INCLUDES) -I$(MPI_INC) $(CPPFLAGS)"  

# Iterate over some directories to avoid stepping into tools/silex, which doesn't build.
override_dh_auto_build:
	for d in src tools/browser tools/silock ; do \
		$(MAKE) -C $$d CC=$(CC) CXX=$(CXX) ; done
	set -e ; for p in $(PYVERS) $(PY3VERS) ; do   \
		$(MAKE) -C tools/python clean all check CC=$(CC) CXX=$(CXX) PYTHON=$$p; \
		mkdir -p  debian/tmp/usr/lib/pyshared/$$p ;  \
		cp tools/python/.libs/Silo.so debian/Silo.so.$$p  ; \
	done

# Need to avoid trying to building  tools/silex.
override_dh_auto_test:
	for d in src tools/browser tools/silock ; do \
                $(MAKE) -C $$d check; done
	
override_dh_auto_install:
	# move the python modules to where dh_python* will spot them ...
	set -e; for p in $(PYVERS) $(PY3VERS); do \
		mkdir -p debian/tmp/usr/lib/$$p/site-packages ; \
		chrpath -d debian/Silo.so.$$p ; \
		cp debian/Silo.so.$$p debian/tmp/usr/lib/$$p/site-packages/Silo.so ; \
	done
	$(MAKE) -C src install prefix=`pwd`/debian/tmp
	dh_install
	# cp src/.libs/libsiloh5.a debian/libsilo-dev/$(LIBDIR)
	mkdir -p debian/libsiloh5-0/$(LIBDIR)
	mv debian/tmp/lib/$(DEB_HOST_MULTIARCH)/libsiloh5.so.0.0.0 debian/libsiloh5-0/$(LIBDIR)
	dh_link -p libsiloh5-0 $(LIBDIR)/libsiloh5.so.0.0.0 $(LIBDIR)/libsiloh5.so.0
	dh_link -p libsilo-dev $(LIBDIR)/libsiloh5.so.0.0.0 $(LIBDIR)/libsiloh5.so
	mkdir -p debian/libsilo-dev/$(LIBDIR)/pkgconfig
	cp silo.pc debian/libsilo-dev/$(LIBDIR)/pkgconfig

override_dh_auto_clean:
	dh_clean
	rm -f debian/Silo.so.* config.log
	( [ -f Makefile ] && make distclean || echo "No Makefile present ; skipping make distclean" )
