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

export DEB_BUILD_MAINT_OPTIONS = hardening=+all
include /usr/share/dpkg/default.mk

# compute current and next Eigen version and add it to d/control
# Needed because CeresConfig.cmake sets it in CERES_EIGEN_VERSION
# also see #868355
eigenvercurr := $(shell dpkg-query -W -f '$${Source:Upstream-Version}' libeigen3-dev | awk -F. '{print $$1"."$$2"."$$3}')
eigenvernext := $(shell dpkg-query -W -f '$${Source:Upstream-Version}' libeigen3-dev | awk -F. '{print $$1"."$$2"."$$3+1}')

build: build-arch build-indep
build-arch: build-process
build-indep: build-process

build-process:
	# Build static library
	dh_testdir
	dh_auto_configure -- \
		-DBUILD_SHARED_LIBS=OFF \
		-DBUILD_EXAMPLES=OFF \
		-DSUITESPARSE_LIBRARY_DIR_HINTS=/usr/lib/${DEB_HOST_MULTIARCH}/ \
		-DSUITESPARSE_INCLUDE_DIR_HINTS=/usr/include/suitesparse/ \
		-DCXSPARSE_LIBRARY_DIR_HINTS=/usr/lib/${DEB_HOST_MULTIARCH}/ \
		-DCXSPARSE_INCLUDE_DIR=/usr/include/suitesparse/ \
		-DBUILD_DOCUMENTATION=OFF \
		-DCMAKE_BUILD_TYPE=Release
	dh_auto_build
	dh_auto_test
	mv -v ${CURDIR}/obj-*/lib/libceres.a ${CURDIR}/debian/
	mv -v ${CURDIR}/obj-*/config/ceres/internal/config.h ${CURDIR}/debian/
	# Build shared library + documentation
	dh_testdir
	dh_auto_configure -- \
		-DBUILD_SHARED_LIBS=ON \
		-DBUILD_EXAMPLES=OFF \
		-DSUITESPARSE_LIBRARY_DIR_HINTS=/usr/lib/${DEB_HOST_MULTIARCH}/ \
		-DSUITESPARSE_INCLUDE_DIR_HINTS=/usr/include/suitesparse/ \
		-DCXSPARSE_LIBRARY_DIR_HINTS=/usr/lib/${DEB_HOST_MULTIARCH}/ \
		-DCXSPARSE_INCLUDE_DIR=/usr/include/suitesparse/ \
		-DBUILD_DOCUMENTATION=ON \
		-DCMAKE_BUILD_TYPE=Release
	dh_auto_build
	dh_auto_test
	# Create build stamp
	touch ${CURDIR}/build-process

%:
	dh $@

override_dh_clean:
	rm -vf ${CURDIR}/build-process ${CURDIR}/debian/libceres.a
	dh_clean

execute_before_dh_gencontrol:
	echo 'eigen:Upstream-Version=$(eigenvercurr)' >> debian/libceres-dev.substvars
	echo 'eigen:Upstream-Version-Next=$(eigenvernext)' >> debian/libceres-dev.substvars

override_dh_compress:
	dh_compress -X.cc -X.h

override_dh_install:
	mkdir -vp ${CURDIR}/debian/libceres-dev/usr/lib ${CURDIR}/debian/libceres-dev/usr/include/ceres/internal
	mv -v ${CURDIR}/debian/libceres.a ${CURDIR}/debian/libceres-dev/usr/lib/
	mv -v ${CURDIR}/debian/config.h ${CURDIR}/debian/libceres-dev/usr/include/ceres/internal/
	dh_install

override_dh_installdocs:
	# make lintian happy
	# https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0 -> /usr/share/javascript/mathjax
	sed -i 's/https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/mathjax\/2.7.1/\/usr\/share\/javascript\/mathjax/g' $(CURDIR)/debian/tmp/usr/share/doc/ceres/html/*.html
	rm debian/tmp/usr/share/doc/ceres/html/_static/doctools.js
	ln -s /usr/share/javascript/sphinxdoc/1.0/doctools.js debian/tmp/usr/share/doc/ceres/html/_static/doctools.js
	rm debian/tmp/usr/share/doc/ceres/html/_static/jquery.js
	ln -s /usr/share/javascript/jquery/jquery.js debian/tmp/usr/share/doc/ceres/html/_static/jquery.js
	rm -f debian/tmp/usr/share/doc/ceres/html/_static/js/html5shiv-printshiv.min.js
	ln -s /usr/share/javascript/html5shiv/html5shiv-printshiv.min.js debian/tmp/usr/share/doc/ceres/html/_static/js/html5shiv-printshiv.min.js
	rm -f debian/tmp/usr/share/doc/ceres/html/_static/js/html5shiv.min.js
	ln -s /usr/share/javascript/html5shiv/html5shiv.min.js debian/tmp/usr/share/doc/ceres/html/_static/js/html5shiv.min.js
	rm -f debian/tmp/usr/share/doc/ceres/html/_static/language_data.js
	ln -s /usr/share/javascript/sphinxdoc/1.0/language_data.js debian/tmp/usr/share/doc/ceres/html/_static/language_data.js
	rm -f debian/tmp/usr/share/doc/ceres/html/_static/searchtools.js
	ln -s /usr/share/javascript/sphinxdoc/1.0/searchtools.js debian/tmp/usr/share/doc/ceres/html/_static/searchtools.js
	rm -f debian/tmp/usr/share/doc/ceres/html/_static/underscore.js
	ln -s /usr/share/javascript/underscore/underscore.js debian/tmp/usr/share/doc/ceres/html/_static/underscore.js
	rm -rf debian/tmp/usr/share/doc/ceres/html/_static/fonts
	ln -s /usr/share/fonts/truetype/lato debian/tmp/usr/share/doc/ceres/html/_static/fonts
	dh_installdocs


.PHONY: build
