#!/usr/bin/make -f
# -*- makefile -*-

# This has to be exported to make some magic below work.
export DH_OPTIONS

DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk
include /usr/share/dpkg/architecture.mk

export DEB_BUILD_MAINT_OPTIONS=hardening=+all

STATIC_BUILD_PATH=DEB_build_static
SHARED_BUILD_PATH=DEB_build_shared

# TODO: possibly consider enabling CIFTI code -- needed by AFNI: -DUSE_CIFTI_CODE=ON \

CMAKE_FLAGS=-DNIFTI_INSTALL_INCLUDE_DIR:PATH=include/nifti \
            -DNIFTI_INSTALL_LIBRARY_DIR:PATH=lib/$(DEB_HOST_MULTIARCH) \
            -DUSE_FSL_CODE:BOOL=OFF \
            -DUSE_CIFTI_CODE=OFF

# one ring to rule them all ...
%:
	dh $@ --buildsystem=cmake

override_dh_auto_clean:
	rm -rf $(STATIC_BUILD_PATH) $(SHARED_BUILD_PATH)
	rm -rf docs/html
	dh_clean

override_dh_auto_configure:
	dh_auto_configure --builddir=$(STATIC_BUILD_PATH) -- \
	    $(CMAKE_FLAGS) \
	    -DBUILD_SHARED_LIBS:BOOL=OFF \
	    -DNIFTI_BUILD_TESTING:BOOL=ON \
	    -DDOWNLOAD_TEST_DATA:BOOL=OFF
	dh_auto_configure --builddir=$(SHARED_BUILD_PATH) -- \
	    $(CMAKE_FLAGS) \
	    -DBUILD_SHARED_LIBS:BOOL=ON \
	    -DNIFTI_BUILD_TESTING:BOOL=OFF

override_dh_auto_build:
	# build static libs
	cd $(STATIC_BUILD_PATH) && $(MAKE) VERBOSE=1
	# build shared libs and binaries
	cd $(SHARED_BUILD_PATH) && $(MAKE) VERBOSE=1
	# build api reference
	cd docs && doxygen Doxy_nifti.txt
	# remove jquery (use from package dependency)
	rm -f docs/html/jquery.js

override_dh_auto_test:
ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
	# skip the tests that need downloaded data
	cd $(STATIC_BUILD_PATH) && ctest -LE NEEDS_DATA
endif

override_dh_auto_install:
	# install binaries and shared libs
	cd $(SHARED_BUILD_PATH) && $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp
	# install static libs
	cd $(STATIC_BUILD_PATH)/znzlib \
		&& $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp
	cd $(STATIC_BUILD_PATH)/niftilib \
		&& $(MAKE)	install DESTDIR=$(CURDIR)/debian/tmp
	cd $(STATIC_BUILD_PATH)/nifticdf \
		&& $(MAKE)	install DESTDIR=$(CURDIR)/debian/tmp
	cp -a DEB_build_static/*/lib*.a debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)
	# install manpage
	$(STATIC_BUILD_PATH)/nifti2/nifti_tool -help | \
		python3 debian/makeniftitoolmanpage.py > debian/tmp/nifti_tool.1
	# Remove unecessary header file
	rm -f $(CURDIR)/debian/tmp/usr/include/nifti/nifti_tool.h
	d-shlibmove --commit \
		    --multiarch \
		    --devunversioned \
		    --exclude-la \
		    --override s/libznz[0-9.]*-dev/libznz-dev/ \
		    --movedev debian/tmp/usr/include/* usr/include \
		    debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libnifti*.so
	d-shlibmove --commit \
		    --multiarch \
		    --devunversioned \
		    --exclude-la \
		    --movedev debian/libnifti2-dev/usr/include/nifti/znzlib.h usr/include/nifti \
		    debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libznz*.so
	d-shlibmove --commit \
		    --t64 \
		    --multiarch \
		    --devunversioned \
		    --exclude-la \
		    --override s/libznz[0-9.]*-dev/libznz-dev/ \
		    --movedev debian/libnifti2-dev/usr/include/nifti/nifti1_io.h usr/include/nifti \
		    --movedev debian/libnifti2-dev/usr/include/nifti/nifti2_io.h usr/include/nifti \
		    debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libniftiio*.so
	d-shlibmove --commit \
		    --multiarch \
		    --devunversioned \
		    --exclude-la \
		    --override s/libznz[0-9.]*-dev/libznz-dev/ \
		    --movedev debian/libnifti2-dev/usr/include/nifti/nifticdf.h usr/include/nifti \
		    debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libnifticdf*.so
	find debian -name "lib*.la" -delete

override_dh_installchangelogs:
	dh_installchangelogs -k Updates.txt
