#!/usr/bin/make -f

export DH_VERBOSE=1

# Cope with lam not providing mpicc.
include /usr/share/mpi-default-dev/debian_defaults 
ifeq ($(ARCH_DEFAULT_MPI_IMPL),lam)
  CC:=mpicc.lam
  CXX:=mpicc.lam
else
  CC:=mpicc
  CXX:=mpic++
endif

ARCH:=$(shell dpkg --print-architecture)
WITH_LUSTRE := 
WITH_IBVERBS:= --with-ibverbs=/usr
DO_TEST:= true

# Do tests on little-endian only for the moment;
# lustre currently not provided in Debian sid

ifeq ($(ARCH), i386) 
#  WITH_LUSTRE:= --with-lustre=/usr
endif
ifeq ($(ARCH), amd64)
#  WITH_LUSTRE:= --with-lustre=/usr
endif
ifeq ($(ARCH), powerpc) 
#  WITH_LUSTRE:= --with-lustre=/usr
   DO_TEST:= false
endif
ifeq ($(ARCH), ia64) 
#  WITH_LUSTRE:= --with-lustre=/usr
endif
ifeq ($(ARCH), sparc)
   DO_TEST:= false
endif
ifeq ($(ARCH), mips)
   DO_TEST:= false
endif
ifeq ($(ARCH),hurd-i386)
  WITH_IBVERBS:=
endif
ifeq ($(ARCH),kfreebsd-amd64)
  WITH_IBVERBS:=
endif
ifeq ($(ARCH),kfreebsd-i386)
  WITH_IBVERBS:=
endif

DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed

DESTDIR:=$(shell pwd)/debian/tmp
DEB_HOST_MULTIARCH:=$(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
LIBDIR:=/usr/lib/$(DEB_HOST_MULTIARCH)
BINDIR:=$(DESTDIR)/usr/bin
PY2:=python2.7
PY3VERS:= $(shell py3versions -s)

TOP:=$(shell pwd)

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

override_dh_auto_clean:
	dh_clean
	find . -name '*.pyc' -delete
	rm -fr wrappers/numpy/build_* wrappers/java/build
	rm -f debian/python3-adios.install

override_dh_auto_configure:
	dh_auto_configure --  $(WITH_LUSTRE) $(WITH_IBVERBS) --enable-shared \
		--with-hdf5=/usr --with-bzip2=/usr  --with-zlib=/usr --prefix=$(DESTDIR) MPIFC=mpif77 CC=$(CC) CFLAGS='-fPIC'
	# Prep python wrapper. Cache these for cmake otherwise it will get 2.7, 3.* confused
	mkdir -p wrappers/numpy/build_${PY2}
	echo "PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python" > wrappers/numpy/build_${PY2}/CMakeCache.txt
	echo "PYTHON_INCLUDE_DIR:PATH=/usr/include/${PY2}" >> wrappers/numpy/build_${PY2}/CMakeCache.txt
	echo "PYTHON_INCLUDE_DIR2:PATH=/usr/include/${DEB_HOST_MULTIARCH}/${PY2}" >> wrappers/numpy/build_${PY2}/CMakeCache.txt
	echo "PYTHON_LIBRARY:FILEPATH=/usr/lib/${DEB_HOST_MULTIARCH}/lib${PY2}.so" >> wrappers/numpy/build_${PY2}/CMakeCache.txt
	echo "CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/${CXX}" >> wrappers/numpy/build_${PY2}/CMakeCache.txt
	echo "PYTHON_MPI4PY_INCLUDE_DIR=/usr/lib/${PY2}/dist-packages/mpi4py/include/mpi4py" >> wrappers/numpy/build_$${p}/CMakeCache.txt ;\
	echo "ADIOS_COMPILE_FLAGS:STRING=-fPIC " >> wrappers/numpy/build_${PY2}/CMakeCache.txt
	echo "wrappers/numpy/build_${PY2}/adios.so	/usr/lib/${PY2}/dist-packages" > debian/python-adios.install
	# And repeat for python3*
	for p in ${PY3VERS} ; do \
	mkdir -p wrappers/numpy/build_$${p} ; \
		echo "PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python" > wrappers/numpy/build_$${p}/CMakeCache.txt ;\
		echo "PYTHON_INCLUDE_DIR:PATH=/usr/include/$${p}" >> wrappers/numpy/build_$${p}/CMakeCache.txt ;\
		echo "PYTHON_INCLUDE_DIR2:PATH=/usr/include/${DEB_HOST_MULTIARCH}/$${p}" >> wrappers/numpy/build_$${p}/CMakeCache.txt ;\
		echo "PYTHON_LIBRARY:FILEPATH=/usr/lib/${DEB_HOST_MULTIARCH}/lib$${p}m.so" >> wrappers/numpy/build_$${p}/CMakeCache.txt ;\
		echo "CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/${CXX}" >> wrappers/numpy/build_$${p}/CMakeCache.txt ;\
		echo "ADIOS_COMPILE_FLAGS:STRING=-fPIC " >> wrappers/numpy/build_$${p}/CMakeCache.txt ;\
		echo "PYTHON_MPI4PY_INCLUDE_DIR=/usr/lib/python3/dist-packages/mpi4py/include/mpi4py" >> wrappers/numpy/build_$${p}/CMakeCache.txt ;\
		echo "wrappers/numpy/build_$$p/*.so	/usr/lib/python3/dist-packages" >> debian/python3-adios.install ; \
	done
		

override_dh_auto_build:
	# First do a build shared, with -fPIC, for the python lib.
	$(MAKE) -C src CFLAGS='-fPIC' VERBOSE=1 install
	# Need to hack the libs into the right place, to match adios_configs view
	mv debian/tmp/lib/*/*.a debian/tmp/lib
	# Now build Python wrapper. Uses adios_config and the debian/tmp install.
	for p in ${PY2} ${PY3VERS} ; do \
		( cd wrappers/numpy/build_$${p} && PATH=$(TOP):$(PATH) cmake .. && $(MAKE) VERBOSE=1 ) ; done
	for p in $(PY3VERS); do \
		v=`echo $$p | cut -c7,9` ;\
		mv wrappers/numpy/build_$${p}/adios.so wrappers/numpy/build_$${p}/adios.cpython-$${v}m-${DEB_HOST_MULTARCH}.so ;\
	done
	# Clean up.
	rm -r debian/tmp/*
	# Now do the static build we want.
	dh_auto_build
	
override_dh_auto_install:
	find . -name .gitignore -delete
	$(MAKE) install prefix=$(DESTDIR)/usr
	# remove due to it not working in multi-arch;
	rm -f  $(BINDIR)/adios_config.flags
	# renamed as per Adios CCS issue #118716, Debbug #639257
	mv $(BINDIR)/gpp.py $(BINDIR)/adiosxml2h
	mv $(BINDIR)/ad_config.py $(BINDIR)/ad_config
	mv $(BINDIR)/skel_cat.py $(BINDIR)/skel_cat
	mv $(BINDIR)/skel_extract.py $(BINDIR)/skel_extract
	cp debian/adios_config $(BINDIR)/adios_config
	# mv $(DESTDIR)/bin/xmlparser.py $(DESTDIR)/bin/xmlparser

override_dh_auto_test:
	$(DO_TEST) && $(MAKE) check || echo "Tests disabled on bigendian systems for the moment"

override_dh_installexamples:
	dh_installexamples
	find debian/libadios-dev/usr/share/doc/libadios-dev/examples -name '*.o' -delete 
	find debian/libadios-dev/usr/share/doc/libadios-dev/examples/C -type f -exec chmod -x {} \;

override_dh_fixperms:
	dh_fixperms
	chmod +x  debian/libadios-bin/etc/adios/skel/skel/templates/*
	chmod -x  debian/libadios-bin/etc/adios/skel/skel/templates/Makefile.default.tpl
