#!/usr/bin/make -f

# If set, honour "parallel=N" option of DEB_BUILD_OPTIONS.  Comment
# out to never build in parallel, regardless of DEB_BUILD_OPTIONS.
#DEB_BUILD_PARALLEL = true

# Using install/fast bypasses the install->all dependency,
# avoiding a complete rebuild by "make install".
# See http://www.itk.org/pipermail/insight-users/2010-August/037827.html
#
# Override variable set in cmake.mk:
DEB_MAKE_INSTALL_TARGET = install/fast DESTDIR=$(DEB_DESTDIR)

include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/cmake.mk
include /usr/share/cdbs/1/class/javahelper.mk

VER_MAJOR = 3
VER_MINOR = 20
VER_PATCH = 0

PYVERS = $(shell pyversions -r debian/control)
TCLVERS = 8.5

VER_FULL = $(VER_MAJOR).$(VER_MINOR).$(VER_PATCH)
SOVERSION = $(VER_MAJOR).$(VER_MINOR)

UPSTREAM_SRC = InsightToolkit-$(VER_FULL)
DEBIAN_SRC_DIR = insighttoolkit-$(VER_FULL)
DEBIAN_SRC_TAR = insighttoolkit_$(VER_FULL).orig.tar.gz

pkg_lib = libinsighttoolkit$(SOVERSION)
pkg_dev = libinsighttoolkit$(VER_MAJOR)-dev
pkg_java = libinsighttoolkit$(VER_MAJOR)-java
pkg_jni = libinsighttoolkit$(VER_MAJOR)-jni
pkg_python = python-insighttoolkit$(VER_MAJOR)
pkg_tcl = tcl$(TCLVERS)-insighttoolkit$(VER_MAJOR)
pkg_examples = insighttoolkit$(VER_MAJOR)-examples

JAVA_HOME = /usr/lib/jvm/default-java
JAVA_JNIDIR = /usr/lib/jni

PYMODDIR = usr/lib/$(PYVERS)/dist-packages
PYEXTDIR = $(PYMODDIR)

TCLMODDIR = usr/share/tcltk/tcl$(TCLVERS)/insighttoolkit$(VER_MAJOR)

ifneq (,$(filter $(DEB_HOST_ARCH_CPU), amd64 i386))
  cmake_build_type=RELEASE
else
  cmake_build_type=RelWithDebInfo
endif

DEB_CMAKE_EXTRA_FLAGS = \
	-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
	-DBUILD_EXAMPLES:BOOL=OFF \
	-DBUILD_SHARED_LIBS:BOOL=ON \
	-DBUILD_TESTING:BOOL=OFF \
	-DCMAKE_BUILD_TYPE:STRING=$(cmake_build_type) \
	-DBUILD_DOXYGEN:BOOL=OFF \
	-DCMAKE_CXX_FLAGS:STRING=-Wno-deprecated \
	-DCMAKE_SKIP_RPATH:BOOL=ON \
	-DITK_DATA_ROOT:PATH=ITK_DATA_ROOT_NOTFOUND \
	-DITK_USE_REVIEW:BOOL=ON \
	-DITK_USE_REVIEW_STATISTICS:BOOL=ON \
	-DITK_USE_OPTIMIZED_REGISTRATION_METHODS:BOOL=ON \
	-DITK_USE_TRANSFORM_IO_FACTORIES:BOOL=ON \
	-DITK_USE_SYSTEM_GDCM:BOOL=ON \
	-DITK_USE_SYSTEM_JPEG:BOOL=ON \
	-DITK_USE_SYSTEM_PNG:BOOL=ON \
	-DITK_USE_SYSTEM_TIFF:BOOL=ON \
	-DITK_USE_SYSTEM_ZLIB:BOOL=ON \
	-DITK_USE_SYSTEM_VXL:BOOL=OFF \
	-DUSE_FFTWD:BOOL=ON \
	-DUSE_FFTWF:BOOL=ON \
	-DITK_USE_CONCEPT_CHECKING:BOOL=ON \
	-DITK_USE_STRICT_CONCEPT_CHECKING:BOOL=ON \
	-DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$(PYVERS) \
	-DPYTHON_INCLUDE_PATH:PATH=/usr/include/$(PYVERS) \
	-DPYTHON_NUMPY_INCLUDE_PATH:PATH=/usr/include/$(PYVERS)/numpy \
	-DPYTHON_LIBRARY:FILEPATH=/usr/lib/lib$(PYVERS).so \
	-DTCL_INCLUDE_PATH:PATH=/usr/include/tcl$(TCLVERS) \
	-DTCL_LIBRARY:FILEPATH=/usr/lib/libtcl$(TCLVERS).so \
	-DTCL_TCLSH:FILEPATH=/usr/bin/tclsh$(TCLVERS) \
	-DTK_INCLUDE_PATH:PATH=/usr/include/tcl$(TCLVERS) \
	-DTK_LIBRARY:FILEPATH=/usr/lib/libtk$(TCLVERS).so \
	-DUSE_WRAP_ITK:BOOL=ON \
	-DWRAP_ITK_JAVA:BOOL=ON \
	-DWRAP_ITK_PYTHON:BOOL=ON \
	-DWRAP_ITK_TCL:BOOL=ON \
	-DWRAP_ITK_DIMS:STRING='2;3' \
	-DWRAP_complex_float:BOOL=ON \
	-DWRAP_covariant_vector_float:BOOL=ON \
	-DWRAP_float:BOOL=ON \
	-DWRAP_rgb_unsigned_char:BOOL=ON \
	-DWRAP_rgb_unsigned_short:BOOL=ON \
	-DWRAP_signed_short:BOOL=ON \
	-DWRAP_unsigned_char:BOOL=ON \
	-DWRAP_unsigned_short:BOOL=ON \
	-DWRAP_vector_float:BOOL=ON

pre-build::
	test -d Code/Review || mv review Code/Review

build/$(pkg_dev)::
	sed -i -e "s#/usr/lib/\(`dpkg-architecture -qDEB_HOST_MULTIARCH`/\)\?lib\([^;]*\)\.so#\2#g" \
		$(DEB_BUILDDIR)/ITKLibraryDepends.cmake

common-build-arch::
	echo "$(pkg_tcl): non-dev-pkg-with-shlib-symlink" > debian/$(pkg_tcl).lintian-overrides
	echo "$(pkg_tcl): package-name-doesnt-match-sonames" >> debian/$(pkg_tcl).lintian-overrides
	echo "$(pkg_python): non-dev-pkg-with-shlib-symlink" > debian/$(pkg_python).lintian-overrides
	echo "$(pkg_python): package-name-doesnt-match-sonames" >> debian/$(pkg_python).lintian-overrides
	echo "$(pkg_lib): package-name-doesnt-match-sonames" > debian/$(pkg_lib).lintian-overrides
	echo "$(pkg_lib): embedded-library usr/lib/libitkjpeg8.so.3.20.0: libjpeg" >> debian/$(pkg_lib).lintian-overrides
	echo "$(pkg_lib): embedded-library usr/lib/libitkjpeg12.so.3.20.0: libjpeg" >> debian/$(pkg_lib).lintian-overrides
	echo "$(pkg_lib): embedded-library usr/lib/libitkjpeg16.so.3.20.0: libjpeg" >> debian/$(pkg_lib).lintian-overrides
	echo "$(pkg_lib): embedded-library usr/lib/libitkopenjpeg.so.3.20.0: openjpeg" >> debian/$(pkg_lib).lintian-overrides
	echo "$(pkg_jni): postinst-has-useless-call-to-ldconfig" >> debian/$(pkg_jni).lintian-overrides
	echo "$(pkg_jni): postrm-has-useless-call-to-ldconfig" >> debian/$(pkg_jni).lintian-overrides
	dh_lintian

install/$(pkg_lib)::
	dh_install -p$(pkg_lib) -XJava -XPython -XTcl debian/tmp/usr/lib/InsightToolkit/lib*.so.* usr/lib
	cp CMake/InsightValgrind.supp Insight$(SOVERSION)Valgrind.supp
	cp Utilities/vxl/config/valgrind.supp Insight$(SOVERSION)VxlValgrind.supp
	dh_install -p$(pkg_lib) Insight$(SOVERSION)*.supp usr/lib/valgrind

install/$(pkg_dev)::
	dh_installman -p$(pkg_dev) debian/insighttoolkit.3
	dh_installdocs -p$(pkg_dev) Documentation/*
	dh_install -p$(pkg_dev) -XJava -XPython -XTcl debian/tmp/usr/lib/InsightToolkit/lib*.so usr/lib
	dh_install -p$(pkg_dev) --autodest debian/tmp/usr/include/InsightToolkit/*
	dh_install -p$(pkg_dev) --autodest debian/tmp/usr/lib/InsightToolkit/*.cmake 

install/$(pkg_java)::
	jh_installlibs -p$(pkg_java) debian/tmp/usr/lib/InsightToolkit/WrapITK/Java/*.jar

install/$(pkg_jni)::
	dh_install -p$(pkg_jni) -XlibSwig debian/tmp/usr/lib/InsightToolkit/WrapITK/lib/*Java.so* $(JAVA_JNIDIR)
	dh_install -p$(pkg_jni)           debian/tmp/usr/lib/InsightToolkit/WrapITK/lib/libSwigRuntimeJava.so* usr/lib

install/$(pkg_python)::
	dh_install -p$(pkg_python) -XlibSwig debian/tmp/usr/lib/InsightToolkit/WrapITK/lib/*Python.so* $(PYEXTDIR)
	dh_install -p$(pkg_python)           debian/tmp/usr/lib/InsightToolkit/WrapITK/lib/libSwigRuntimePython.so* usr/lib
	dh_install -p$(pkg_python)           debian/tmp/usr/lib/InsightToolkit/WrapITK/Python/* $(PYMODDIR)
	dh_install -p$(pkg_python)           debian/tmp/usr/lib/InsightToolkit/WrapITK/lib/*.py $(PYMODDIR)
	dh_python2 -p$(pkg_python)

install/$(pkg_tcl)::
	dh_install -p$(pkg_tcl) debian/tmp/usr/lib/InsightToolkit/WrapITK/bin/itkwish usr/bin
	dh_install -p$(pkg_tcl) debian/tmp/usr/lib/InsightToolkit/WrapITK/lib/*Tcl.so* usr/lib
	dh_install -p$(pkg_tcl) debian/tmp/usr/lib/InsightToolkit/WrapITK/Tcl/* $(TCLMODDIR)
	dh_installman -p$(pkg_tcl) debian/itkwish.1

install/$(pkg_examples)::
	dh_installexamples -p$(pkg_examples) Examples/*
	find debian/$(pkg_examples)/usr/share/doc/$(pkg_examples)/examples \
	    -type f -print0 | xargs -0 chmod 644

$(UPSTREAM_SRC).tar.gz:
	wget http://voxel.dl.sourceforge.net/sourceforge/itk/$@

get-orig-source: $(UPSTREAM_SRC).tar.gz
	tar xzf $(UPSTREAM_SRC).tar.gz
	find $(UPSTREAM_SRC) -name CVS -o -name Patented | xargs rm -rf
	rm -rf $(UPSTREAM_SRC)/Code/Review
	mv $(UPSTREAM_SRC) $(DEBIAN_SRC_DIR)
	GZIP="--best --no-name" tar czf $(DEBIAN_SRC_TAR) $(DEBIAN_SRC_DIR)

control-file:
	sed -e "s/@VER_MAJOR@/$(VER_MAJOR)/g" \
	    -e "s/@SOVERSION@/$(SOVERSION)/g" \
	    < debian/control.in > debian/control.tmp
	[ -e debian/control ] \
	  && cmp -s debian/control debian/control.tmp \
	  && rm -f debian/control.tmp && exit 0; \
	  mv debian/control.tmp debian/control
