#!/usr/bin/make -f
TOPDIR=$(shell pwd)

#export DH_VERBOSE=1
CFLAGS=-Wall -g
ifeq ($(findstring noopt,$(DEB_BUILD_OPTIONS)),)
	CFLAGS+=-O2
endif
CXXFLAGS=$(CFLAGS)

export JAVA_HOME=/usr/lib/jvm/default-java
export CFLAGS
export CXXFLAGS

#ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
#	NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
#else
NUMJOBS = 1
#endif

stampdir:
	mkdir stampdir

clean:
	dh_testdir
	dh_testroot
	# Clean out 2.6
	[ ! -f $(CURDIR)/_src/beid-2.6/Makefile ] || cd $(CURDIR)/_src/beid-2.6/ $(MAKE) distclean
	-rm -Rf stampdir
	-rm -Rf _src/beid-2.6/.sconf_temp
	-find _src/beid-2.6/ -name *.pyc -exec rm -f {} \;
	-find _src/beid-2.6/ -type d -name cache -exec rm -Rf {} \;
	-rm _src/beid-2.6/config.log
	# Clean out 3.5
	[ ! -f $(CURDIR)/_src/eidmw/Makefile ] || $(MAKE) -f $(CURDIR)/_src/eidmw/Makefile distclean
	find _src/eidmw/eidlibJava -name '*.class' -exec rm -f {} \;
	-rm _src/eidmw/bin/eidmw_*.qm
	[ ! -f $(CURDIR)/_src/eidmw/jar/beid35libJava.jar.orig ] || mv -f $(CURDIR)/_src/eidmw/jar/beid35libJava.jar.orig $(CURDIR)/_src/eidmw/jar/beid35libJava.jar
	-rm -Rf _src/eidmw/_DocsExternal/*
	dh_clean

HOSTNAME=$(shell hostname --fqdn)
build: build-arch build-indep
build-arch: stampdir/build-arch-stamp
stampdir/build-arch-stamp: stampdir
	dh_testdir
	[ -f $(CURDIR)/_src/eidmw/jar/beid35libJava.jar.orig ] || cp -a $(CURDIR)/_src/eidmw/jar/beid35libJava.jar $(CURDIR)/_src/eidmw/jar/beid35libJava.jar.orig
	# Build 2.6 version of middleware
	cd _src/beid-2.6 && scons --cache-disable prefix=/usr confdir=/etc/
	# Build 3.5 version of middleware
	# needed for libxerces with -p because be unhappy if exists.
	mkdir -p  _src/eidmw/eidlibJava/class
	cd _src/eidmw && chmod +x configure && ./configure --prefix=/usr CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)"
	cd _src/eidmw && $(MAKE) -j$(NUMJOBS)
	# Done. Hopefully.
	touch stampdir/build-arch-stamp

build-indep: stampdir/build-indep-stamp
stampdir/build-indep-stamp: stampdir
	dh_testdir
	mkdir -p _src/eidmw/_DocsExternal/C++_Api
	cd _src/eidmw/_DocsInternal/API && doxygen DoxySDK.cfg
	cd _src/eidmw/_DocsInternal/API && doxygen DoxySDK_java.cfg
	touch stampdir/build-indep-stamp

install: stampdir/install-stamp
stampdir/install-stamp: stampdir build
	dh_testdir
	dh_testroot
	dh_installdirs
	# Install 2.6. This needs to be done manually, since SCons' DESTDIR
	# support is non-existent.
	install -d debian/tmp/usr/lib debian/tmp/usr/bin debian/tmp/usr/include/beid/opensc debian/tmp/usr/share/locale debian/tmp/usr/share/beid/certs debian/tmp/usr/share/beid/crl debian/tmp/etc debian/tmp/usr/share/applications debian/tmp/usr/share/icons debian/tmp/usr/lib/pkcs11
	cp -a _src/beid-2.6/src/newpkcs11/src/pkcs11/libbeidpkcs11.so* _src/beid-2.6/src/beidcommlib/libbeidcomm.so* _src/beid-2.6/src/winscarp/libbeidpcsclite.so* _src/beid-2.6/src/eidlib/libbeid.so* _src/beid-2.6/src/eidlibjni/libbeidlibjni.so* _src/beid-2.6/src/beidcommon/libbeidcommon.so* _src/beid-2.6/src/newpkcs11/src/libopensc/libbeidlibopensc.so* debian/tmp/usr/lib
	cp -a _src/beid-2.6/src/newpkcs11/src/tools/beid-pkcs11-tool _src/beid-2.6/src/newpkcs11/src/tools/beid-tool _src/beid-2.6/src/Belpic\ PCSC\ Service/beidpcscd _src/beid-2.6/src/beidservicecrl/beidcrld debian/tmp/usr/bin
	cp -a _src/beid-2.6/src/newpkcs11/config.h _src/beid-2.6/src/eidlib/eidlib.h _src/beid-2.6/src/eidlib/eiddefines.h _src/beid-2.6/src/eidlib/eiderrors.h debian/tmp/usr/include/beid
	cp -a _src/beid-2.6/src/newpkcs11/etc/beidbase.conf debian/tmp/etc
	# The following are symlinks, which we do *not* want to see persisting.
	cp -pR _src/beid-2.6/src/newpkcs11/src/include/opensc/* debian/tmp/usr/include/beid/opensc
	cp -a _src/beid-2.6/src/newpkcs11/etc/Belgian_eID_PKCS11_java.cfg debian/tmp/usr/lib/pkcs11
	# Install 3.5
	cd _src/eidmw && $(MAKE) INSTALL_ROOT=$(CURDIR)/debian/tmp install
	# Why does this build system suck so much?
	cp -a _src/eidmw/misc/beid/beid-pkcs11-*.html debian/tmp/usr/share/beid/
	cp -a _src/eidmw/install/beid.conf.3.5 debian/tmp/etc/beid.conf
	cp -a _src/eidmw/install/beidgui35.desktop debian/tmp/usr/share/applications
	cp -a _src/eidmw/install/eid35.png debian/tmp/usr/share/icons
	mkdir -p debian/tmp/usr/share/doc/beid-docs
	cp -a _src/eidmw/_DocsExternal/C++_Api/html debian/tmp/usr/share/doc/beid-docs/C++
	cp -a _src/eidmw/_DocsExternal/Java_Api/html debian/tmp/usr/share/doc/beid-docs/Java
	cp -a _src/eidmw/bin/beidgui debian/tmp/usr/bin
	cp -a _src/eidmw/bin/eidmw_*.qm debian/tmp/usr/share/beid
	cp -a _src/eidmw/bin/beiddialogsQTsrv debian/tmp/usr/bin
	cp -a _src/eidmw/lib/lib* debian/tmp/usr/lib
	#Strip rpath from executables
	find debian/tmp/usr/bin -type f -perm /111 -print0 | xargs -0 chrpath -d
	dh_lintian
	dh_install --sourcedir=debian/tmp
	dh_installmenu
	dh_installman -p beid-tools _src/beid-2.6/src/newpkcs11/docs/beid-tool.1 _src/beid-2.6/src/newpkcs11/docs/beid-pkcs11-tool.1
	touch stampdir/install-stamp

binary: stampdir/binary-stamp
stampdir/binary-stamp: stampdir install
	dh_testdir -a
	dh_testroot -a
	dh_installman -a
	dh_installchangelogs -a
	dh_installinit -p beid-tools --name=beid
	dh_strip -p libbeidlibopensc2 --dbg-package=libbeidlibopensc2-dbg
	dh_strip -p libbeid2 --dbg-package=libbeid2-dbg
	# The upstream build system either already strips these, or does
	# not provide debugging symbols to begin with. Will investigate
	# later.
	#dh_strip -p libbeidlib3 --dbg-package=libbeidlib3-dbg
	dh_strip -a
	dh_link -a
	dh_installdocs -a
	dh_compress -a
	dh_fixperms -a
	dh_makeshlibs -V -p libbeidlibopensc2 -Pdebian/libbeidlibopensc2
	dh_makeshlibs -V -p libbeid2 -Pdebian/libbeid2
	dh_makeshlibs -V -p libbeidlib3 -Pdebian/libbeidlib3
	dh_installdeb -a
	dh_shlibdeps -ldebian/tmp/usr/lib -Llibeid2 -Llibbelpic2 -Llibbeidlib3
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a
	touch stampdir/binary-stamp

binary-arch: stampdir/binary-stamp
binary-indep: stampdir/binary-stamp
.PHONY: belpic-build belpic-binary binary install belpic-install build binary-arch
