#!/usr/bin/make -f

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

include /usr/share/quilt/quilt.make

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,--no-add-needed" \
              -DCMAKE_EXE_LINKER_FLAGS="-Wl,--as-needed,--no-add-needed" \
              -DCMAKE_SKIP_RPATH:BOOL=ON \
              -DIGSTK_WITH_LIBRARY_VERSION:BOOL=ON \
              -DIGSTK_DEVELOPMENT_VERSION:BOOL=ON \
              -DIGSTK_BUILD_EXAMPLES:BOOL=OFF \
              -DIGSTK_BUILD_TESTING:BOOL=ON \
              -DCMAKE_BUILD_TYPE:STRING=Release \
              -DIGSTK_USE_Qt:BOOL=ON \
              -DIGSTK_USE_FLTK:BOOL=ON \
              -DIGSTK_USE_OpenIGTLink:BOOL=ON \
              -DIGSTK_USE_OpenCV:BOOL=OFF \
              -DIGSTK_USE_MicronTracker:BOOL=OFF \
              -DQT_MOC_EXECUTABLE:PATH=/usr/bin/moc-qt4 \
              -DQT_UIC_EXECUTABLE:PATH=/usr/bin/uic-qt4 \
              -DQT_QMAKE_EXECUTABLE:PATH=/usr/bin/qmake
              

# if using precompiled static library provided by Claron Tech.:
#              -DIGSTK_USE_MicronTracker:BOOL=ON \
#              -DMTC_INCLUDE_DIRECTORY:PATH=/tmp/MTC/Dist \
#              -DMTC_LIBRARY:PATH=/tmp/MTC/Dist \ 
# TODO: /usr/bin/ld: cannot find -lMTC \

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

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


configure: configure-stamp
configure-stamp: $(QUILT_STAMPFN)
	dh_testdir

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

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

	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 configure-stamp


build: build-arch

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

	# Add here commands to compile the package.

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

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

        # perform tests ('-' ignores return values)
#       cd $(STATIC_BUILD_PATH) && ctest -S ../debian/ctest_config.cmake -VV
#       - cd $(STATIC_BUILD_PATH) && ctest -D Nightly -VV
	- cd $(STATIC_BUILD_PATH) && ctest

	touch $@

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

	# build documentation
	mkdir -p $(STATIC_BUILD_PATH)/Utilities/Doxygen/doc/html
	$(MAKE) $(JOBS) Documentation -C $(STATIC_BUILD_PATH)

	# remove zero byte files
	find $(STATIC_BUILD_PATH)/Utilities/Doxygen/doc/ -depth -empty | xargs rm -rf

	touch $@


clean: clean-patched unpatch

clean-patched:
	dh_testdir
	dh_testroot
	rm -f build-stamp configure-stamp build-arch-stamp

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

	dh_clean 


install-arch: build-arch
	dh_testdir
	dh_testroot
	dh_installdirs

        # install binaries and static libs
	cd $(STATIC_BUILD_PATH) && $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp
	cd $(SHARED_BUILD_PATH) && $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp2


	# install development files
	dh_install -plibigstk4-dev    debian/tmp/usr/include/IGSTK/*                       usr/include/IGSTK
#	dh_install -plibigstk4-dev    ../../Utilities/SceneGraphVisualization/igstk*.h     usr/include/IGSTK

	# install libs and *cmake files
	dh_install -plibigstk4-dev  debian/tmp/usr/lib/IGSTK/*.a      usr/lib
	dh_install -plibigstk4-dev  $(SHARED_BUILD_PATH)/bin/*.so     usr/lib
	dh_install -plibigstk4-dev  debian/tmp/usr/lib/IGSTK/*.cmake  usr/lib/IGSTK

	dh_install -plibigstk4      $(SHARED_BUILD_PATH)/bin/*.so.*   usr/lib


install-indep: build-indep
	dh_install -pigstk-doc      $(STATIC_BUILD_PATH)/Utilities/Doxygen/doc/html       usr/share/doc/igstk-doc
	dh_installexamples -pigstk-examples Examples/*

	# remove executable file mode bit
	find debian/igstk-examples/usr/share/doc/igstk-examples/examples \
            -type f -print0 | xargs -0 chmod 644


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


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


# Build architecture-dependent files here.
binary-common:
	dh_testdir
	dh_testroot
	dh_install
	dh_installchangelogs 
	dh_installdocs
	dh_installman
	dh_link
	dh_strip
	dh_compress -X"igstk-examples/examples"
	dh_fixperms
	dh_makeshlibs
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

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