#!/usr/bin/make -f

export DEB_BUILD_MAINT_OPTIONS=hardening=+all

DEB_BUILD_OPTIONS := nocheck

# DH_VERBOSE := 1

include /usr/share/dpkg/default.mk

OS := $(shell dpkg-architecture -qDEB_BUILD_ARCH_OS)
CPU := $(shell dpkg-architecture -qDEB_BUILD_GNU_CPU)
MULTIARCH := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
# since build-results are not ending up in the proper dir its saver to use "*" instead of "$(CPU)"
SODIR := $(DEB_SOURCE)/$(DEB_SOURCE)/$(OS)/gcc
VDB_ARCH := $(word 1, $(subst -, ,$(DEB_HOST_MULTIARCH)))
LIBINSTALLDIR := debian/tmp/usr/$(DEB_SOURCE)/$(OS)/gcc/$(VDB_ARCH)/dbg/lib
LIBPKG := libncbi-vdb2
SCHEMADIR := debian/$(LIBPKG)/usr/lib/$(DEB_SOURCE)

%:
	dh $@

override_dh_auto_clean:
	if [ -e ngs-sdk/Makefile.config.$(OS).$(CPU) ] ; then \
		dh_auto_clean ; \
	fi
	rm -rf $(DEB_SOURCE)/$(MULTIARCH)

override_dh_auto_configure:
	# that's no standard configure script lacking support of default options
	# The build system shamelessly ignores those options like
	#    --with-ngs-java-prefix=/usr/share/java
	# so we need to go with patches.  The options are specified anyway.
	ln -s /usr/lib/jvm/default-java/include/jni.h		libs/ngs-jni
	ln -s /usr/lib/jvm/default-java/include/linux/jni_md.h	libs/ngs-jni
	./configure --build=$(MULTIARCH) --prefix=/usr --build-prefix=$(CURDIR)/debian/tmp/usr --with-ngs-sdk-prefix=/usr --with-debug --with-ngs-java-prefix=/usr/share/java
	# no idea how to convince configure script to use the correct include dir so patching result afterwards
	sed -i 's?HDF5_INCDIR = /usr/include?&/hdf5/serial?' build/Makefile.config*

override_dh_auto_test:
ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
	# FIXME: some tests keep on failing despite debian/patches/skip_failing_test.patch - needs to be sorted out later
	dh_auto_test || true
else
	echo "Skip testing which takes a long time"
endif

override_dh_auto_install:
	dh_auto_install
	find $(LIBINSTALLDIR) -name "*-static.a" -delete
	# upstream installs versioned *.a libs - we only want a single version
	for slib in $(LIBINSTALLDIR)/*.a ; do \
	    mv $(LIBINSTALLDIR)/`readlink $$slib` $$slib ; \
	    mv $(LIBINSTALLDIR)/`readlink $$slib` $$slib ; \
	done
	d-shlibmove --commit \
		    --multiarch \
		    --devunversioned \
		    --exclude-la \
		    --override s/libmbedcrypto0-dev/libmbedtls-dev/ \
		    --override s/libmbedtls10-dev/libmbedtls-dev/ \
		    --override s/libmbedx509-0-dev/libmbedtls-dev/ \
		    --movedev debian/tmp/usr/$(DEB_SOURCE)/$(OS)/gcc/*/dbg/lib/libncbi-ngs-c++.a usr/lib/$(MULTIARCH) \
		    --movedev debian/tmp/usr/$(DEB_SOURCE)/$(OS)/gcc/*/dbg/ilib/libkapp.a usr/lib/$(MULTIARCH) \
		    --movedev debian/tmp/usr/$(DEB_SOURCE)/$(OS)/gcc/*/dbg/ilib/libkapp-norsrc.a usr/lib/$(MULTIARCH) \
		    --movedev debian/tmp/usr/$(DEB_SOURCE)/$(OS)/gcc/*/dbg/ilib/libkff.a usr/lib/$(MULTIARCH) \
		    --movedev debian/tmp/usr/$(DEB_SOURCE)/$(OS)/gcc/*/dbg/ilib/libktst.a usr/lib/$(MULTIARCH) \
		    --movedev debian/tmp/usr/$(DEB_SOURCE)/$(OS)/gcc/*/dbg/ilib/libkxfs.a usr/lib/$(MULTIARCH) \
		    --movedev debian/tmp/usr/$(DEB_SOURCE)/$(OS)/gcc/*/dbg/ilib/libkxml.a usr/lib/$(MULTIARCH) \
                    --movedev debian/tmp/usr/$(DEB_SOURCE)/$(OS)/gcc/*/dbg/ilib/libload.a usr/lib/$(MULTIARCH) \
		    --movedev debian/tmp/usr/$(DEB_SOURCE)/$(OS)/gcc/*/dbg/ilib/libtui.a usr/lib/$(MULTIARCH) \
                    --movedev debian/tmp/usr/$(DEB_SOURCE)/$(OS)/gcc/*/dbg/ilib/libtui_cpp.a usr/lib/$(MULTIARCH) \
		    --movedev interfaces usr/include \
		    debian/tmp/usr/$(DEB_SOURCE)/$(OS)/gcc/*/dbg/lib/libncbi-vdb.so
	mv debian/libncbi-vdb-dev/usr/include/interfaces debian/libncbi-vdb-dev/usr/include/$(DEB_SOURCE)
	d-shlibmove --commit \
		    --multiarch \
		    --devunversioned \
		    --exclude-la \
		    --override s/libhdf5_serial[0-9]*-dev/libhdf5-dev/ \
		    --override s/libmbedcrypto0-dev/libmbedtls-dev/ \
		    --override s/libmbedtls10-dev/libmbedtls-dev/ \
		    --override s/libmbedx509-0-dev/libmbedtls-dev/ \
		    debian/tmp/usr/$(DEB_SOURCE)/$(OS)/gcc/*/dbg/lib/libkdf5.so
	d-shlibmove --commit \
		    --multiarch \
		    --devunversioned \
		    --exclude-la \
		    debian/tmp/usr/$(DEB_SOURCE)/$(OS)/gcc/*/dbg/lib/libncbi-wvdb.so
	find debian/lib* -name .gitignore -delete
	# move schemata from development packages to library packages since these are used in executables
	mkdir -p $(SCHEMADIR)
	set -x ; \
	for schema in `find debian/libncbi-vdb-dev/usr/include/$(DEB_SOURCE) -name "*.vschema"` ; do \
	    schemafile=`basename $${schema}` ; \
	    schemadir=`basename $$(dirname $${schema})` ; \
	    mkdir -p $(SCHEMADIR)/$${schemadir} ; \
	    sed -i "s:^include ':&/usr/lib/ncbi-vdb/:" $${schema} ; \
	    mv $${schema} $(SCHEMADIR)/$${schemadir} ; \
	done
