#!/usr/bin/make -f

PACKAGE=openigtlink

DEB_SOURCE_PACKAGE:=$(PACKAGE)
include /usr/share/quilt/quilt.make

# set the number of build jobs
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
        JOBS := -j$(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
endif

DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU 2>/dev/null)
DEB_HOST_ARCH_OS  := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS 2>/dev/null)
DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)

# Uncomment this to turn on verbose mode.
export DH_VERBOSE=0

STATIC_BUILD_PATH = DEB_build_static
SHARED_BUILD_PATH = DEB_build_shared

CMAKE_FLAGS = -DCMAKE_INSTALL_PREFIX:PATH=/usr \
              -DCMAKE_CXX_FLAGS="-Wno-deprecated" \
              -DCMAKE_VERBOSE_MAKEFILE=$(DH_VERBOSE) \
              -DCMAKE_SHARED_LINKER_FLAGS="-Wl,--as-needed" \
              -DCMAKE_EXE_LINKER_FLAGS="-Wl,--as-needed" \
              -DCMAKE_SKIP_RPATH:BOOL=ON \
              -DBUILD_DOCUMENTATION:BOOL=ON \
              -DBUILD_TESTING:BOOL=ON \
              -DBUILD_EXAMPLES:BOOL=OFF \

get-orig-source:
	/bin/sh $(CURDIR)/debian/get-orig-source

configure: configure-stamp

configure-stamp: $(QUILT_STAMPFN)
	dh_testdir

        # Add here commands to configure the package.
	echo DEB_HOST_ARCH_CPU = ${DEB_HOST_ARCH_CPU}
	echo DEB_HOST_ARCH_OS  = ${DEB_HOST_ARCH_OS}
	echo DEB_HOST_ARCH     = ${DEB_HOST_ARCH}


	if [ ! -d $(STATIC_BUILD_PATH) ]; then mkdir $(STATIC_BUILD_PATH); fi

	cd $(STATIC_BUILD_PATH) \
            && cmake $(CURDIR) $(CMAKE_FLAGS) -DBUILD_SHARED_LIBS:BOOL=OFF


	if [ ! -d $(SHARED_BUILD_PATH) ]; then mkdir $(SHARED_BUILD_PATH); fi

	cd $(SHARED_BUILD_PATH) \
            && cmake $(CURDIR) $(CMAKE_FLAGS) -DBUILD_SHARED_LIBS:BOOL=ON

	touch $@


build: build-arch

build-arch: build-arch-stamp
build-arch-stamp: configure-stamp
	dh_testdir

	# Add here commands to compile the package.

        # build static libs
	$(MAKE) $(JOBS) -C $(STATIC_BUILD_PATH)

	# perform tests ('-' ignores return values)
	- cd $(STATIC_BUILD_PATH) && ctest -VV

	# build shared libs and binaries
	$(MAKE) $(JOBS) -C $(SHARED_BUILD_PATH)

	touch $@

build-indep: build-indep-stamp
build-indep-stamp: configure-stamp
	dh_testdir

#	$(MAKE) $(JOBS) DoxygenDoc -C $(STATIC_BUILD_PATH)
	doxygen -u $(STATIC_BUILD_PATH)/doxygen.config
	doxygen $(STATIC_BUILD_PATH)/doxygen.config

	touch $@


clean: clean-patched unpatch

clean-patched:
	dh_testdir
	dh_testroot

	# Add here commands to clean up after the build process.
	rm -rf $(STATIC_BUILD_PATH)
	rm -rf $(SHARED_BUILD_PATH)

	dh_clean

install: install-indep install-arch

install-arch: build-arch
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs

	# Add here commands to install the package into debian/tmp
	
	# install binaries and shared libs
	$(MAKE) $(JOBS) -C $(SHARED_BUILD_PATH) install DESTDIR=$(CURDIR)/debian/tmp


        # install static libs
	cd $(STATIC_BUILD_PATH)/bin/ \
                && cp lib*.a $(CURDIR)/debian/tmp/usr/lib/


	# install development files
	dh_install -plibopenigtlink1-dev  debian/tmp/usr/include/openigtlink/*            usr/include/openigtlink


	# install libs and *cmake files
	dh_install -plibopenigtlink1-dev  debian/tmp/usr/lib/*.a                   usr/lib
	dh_install -plibopenigtlink1-dev  debian/tmp/usr/lib/*.so                  usr/lib
	dh_install -plibopenigtlink1-dev  debian/tmp/usr/lib/openigtlink/*.cmake   usr/lib/openigtlink

	dh_install -plibopenigtlink1      debian/tmp/usr/lib/*.so.*                usr/lib



install-indep: build-indep
	dh_install -popenigtlink-doc       $(STATIC_BUILD_PATH)/Documents/Doxygen/html    usr/share/doc/openigtlink-doc
	dh_installexamples -popenigtlink-examples Examples/*



# Build architecture-dependent files here.
binary-common:
	dh_testdir
	dh_testroot
	dh_installchangelogs 
	dh_installdocs
	dh_installexamples
	dh_install --sourcedir=$(CURDIR)/debian/tmp
#	dh_install
#	dh_installmenu
	dh_installman
	dh_link
	dh_strip
	dh_compress -X"openigtlink-examples/examples"
	dh_fixperms
	dh_makeshlibs
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb


# Build architecture independant packages using the common target.
binary-indep: build-indep install-indep
	$(MAKE) -f debian/rules DH_OPTIONS=-i binary-common


# Build architecture dependant packages using the common target.
binary-arch: build-arch install-arch
	$(MAKE) -f debian/rules DH_OPTIONS=-s binary-common


binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install install-indep install-arch configure
