#! /usr/bin/make -f
#export DH_VERBOSE=1

include /usr/share/dpkg/architecture.mk

DESTDIR = $(CURDIR)/debian/tmp
UPSTREAM_VERSION = $(shell dpkg-parsechangelog | awk '/^Version:/ { sub("-[^-]*$$", "", $$2); print $$2}')

%:
	dh $@ --buildsystem=cmake 

PY3VERS=$(shell py3versions -vr)
PY3DEF=$(shell py3versions -dv)

export LD_LIBRARY_PATH+=:$(CURDIR)/debian/paraview/usr/lib/paraview
export QT_SELECT=qt5

CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS)
CFLAGS:=$(shell dpkg-buildflags --get CFLAGS) $(CPPFLAGS) -Wall -pedantic 
CXXFLAGS:=$(shell dpkg-buildflags --get CXXFLAGS) $(CPPFLAGS) -O0
LDFLAGS:=$(shell dpkg-buildflags --get LDFLAGS) -Wl,--as-needed

# Investigate: Pixie Needs ADIOS1
#	-DPARAVIEW_PLUGIN_ENABLE_AdiosReaderPixie=ON 
#	-DPARAVIEW_PLUGIN_ENABLE_AdiosReaderStaging=ON 


# Explicit settings of MPI_* is required see
# http://www.vtk.org/Bug/view.php?id=12572
extra_flags += -Wno-dev \
	-DCMAKE_C_FLAGS="${CFLAGS}" -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \
	-DCMAKE_BUILD_TYPE=DEBUG \
	-DPARAVIEW_BUILD_DEVELOPER_DOCUMENTATION=ON \
	-DCMAKE_INSTALL_RPATH=/usr/lib/paraview \
	-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF  \
	-DCMAKE_SKIP_RPATH=OFF \
	-DPARAVIEW_ENABLE_FFMPEG=ON \
	-DPARAVIEW_ENABLE_WEB=ON \
	-DPARAVIEW_BUILD_SHARED_LIBS=ON \
	-DVTK_SOURCE_DIR=$(CURDIR)/VTK \
	-DHDF5_ROOT=/usr/lib/$(DEB_HOST_MULTIARCH)/hdf5/openmpi \
	-DVTK_MODULE_USE_EXTERNAL_VTK_mpi4py=ON  \
	-DPARAVIEW_PYTHON_SITE_PACKAGES_SUFFIX="lib/python3/dist-packages" \
	-DVTK_MODULE_USE_EXTERNAL_VTK_doubleconversion=ON \
	-DVTK_MODULE_USE_EXTERNAL_VTK_eigen=ON \
	-DVTK_MODULE_USE_EXTERNAL_VTK_theora=ON \
	-DVTK_MODULE_USE_EXTERNAL_VTK_hdf5=ON \
	-DVTK_MODULE_USE_EXTERNAL_VTK_lz4=ON \
	-DVTK_MODULE_USE_EXTERNAL_VTK_lzma=ON \
	-DVTK_MODULE_USE_EXTERNAL_VTK_utf8=ON \
	-DVTK_MODULE_USE_EXTERNAL_VTK_tiff=ON \
	-DVTK_MODULE_USE_EXTERNAL_VTK_zlib=ON \
	-DVTK_MODULE_USE_EXTERNAL_VTK_expat=ON \
	-DVTK_MODULE_USE_EXTERNAL_VTK_png=ON \
	-DVTK_MODULE_USE_EXTERNAL_VTK_glew=ON \
	-DVTK_MODULE_USE_EXTERNAL_VTK_freetype=ON \
	-DVTK_MODULE_USE_EXTERNAL_VTK_jpeg=ON \
	-DVTK_MODULE_USE_EXTERNAL_VTK_libxml2=ON \
	-DVTK_MODULE_USE_EXTERNAL_VTK_netcdf=ON \
	-DVTK_MODULE_USE_EXTERNAL_VTK_gl2ps=ON \
	-DPARAVIEW_USE_MPI=ON \
	-DPARAVIEW_USE_PYTHON=ON \
	-DPARAVIEW_ENABLE_VISITBRIDGE=OFF \
	-DPARAVIEW_ENABLE_GDAL=ON \
	-DPARAVIEW_ENABLE_XDMF3=ON \
	-DPARAVIEW_ENABLE_MOTIONFX=ON \
	-DPARAVIEW_PLUGIN_ENABLE_GmshIO=ON \
	-DDEB_HOST_MULTIARCH=$(DEB_HOST_MULTIARCH)

# Adios2 is only available on 64-bit systems
ifneq ($(DEB_HOST_ARCH_BITS),32)
extra_flags += -DPARAVIEW_ENABLE_ADIOS2=ON \
    -DCMAKE_PREFIX_PATH="$(CMAKE_PREFIX_PATH);/usr/lib/$(DEB_HOST_MULTIARCH)/cmake/adios2/mpi"
endif

override_dh_auto_clean:
	dh_auto_clean
	rm -fr build.*

my_configure_python%: pyver=$(patsubst my_configure_python%,%,$@)
my_configure_python%:
	dh_auto_configure -Bbuild.python$(pyver) -- $(extra_flags) -DPython3_EXECUTABLE=/usr/bin/python$(pyver) -DDEBIAN_PYTHON_VERSION=$(pyver)

override_dh_auto_configure: $(foreach pyver,$(PY3VERS), my_configure_python$(pyver))

my_build_python%: pyver=$(patsubst my_build_python%,%,$@)
my_build_python%:
	dh_auto_build -Bbuild.python$(pyver)

override_dh_auto_build: $(foreach pyver,$(PY3VERS), my_build_python$(pyver))

my_install_python%: pyver=$(patsubst my_install_python%,%,$@)
my_install_python%:
	dh_auto_install -Bbuild.python$(pyver)
	cd build.python$(pyver)/bin $(foreach exe,pvbatch pvpython,&& cp $(exe) $(DESTDIR)/usr/bin/$(exe)$(pyver))

override_dh_auto_install: $(foreach pyver,$(PY3VERS), my_install_python$(pyver))
	# Use the defaut python3 version for the tools
	cd debian/tmp/usr/bin $(foreach exe,pvbatch pvpython,&& ln -fs $(exe)$(PY3DEF) $(exe))
	# Drop unwanted mpi4py module
	rm -fr debian/tmp/usr/lib/python3*/dist-packages/mpi4py

my_test_python%: pyver=$(patsubst my_test_python%,%,$@)
my_test_python%:
	dh_auto_test -Bbuild.python$(pyver)

override_dh_python3:
	dh_python3 --no-ext-rename # Hack: Do not rename libraries from e.g. vtkClientServerPython.so to vtkClientServerPython.cpython-38-x86_64-linux-gnu.so!

override_dh_auto_test: $(foreach pyver,$(PY3VERS), my_test_python$(pyver))

override_dh_compress:
	dh_compress -X.qch

override_dh_makeshlibs:
	dh_makeshlibs -V'paraview (>= $(UPSTREAM_VERSION)), paraview (<< $(UPSTREAM_VERSION).)'
