#!/usr/bin/make -f
# See debhelper(7) (uncomment to enable)
# output every command that modifies files on the build system.
#DH_VERBOSE = 1

# see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/*
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/default.mk


# see FEATURE AREAS in dpkg-buildflags(1)
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all

# see ENVIRONMENT in dpkg-buildflags(1)
# package maintainers to append CFLAGS
#export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic
# package maintainers to append LDFLAGS
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed

# remove python bindings for package builds.
PYTHON_FLAG="OFF"
BUILD_FOR_PACKAGE_SWITCH_FLAG="OFF"
PYTHON_EXE_PARAM=
PYTHON_INSTALL_PREFIX_PARAM=

major = $(shell dpkg-parsechangelog -S Version | sed -ne 's/^\([0-9]\+\)\..*$$/\1/p')
minor = $(shell dpkg-parsechangelog -S Version | sed -ne 's/^[0-9]\+\.\([0-9]\+\)\..*$$/\1/p')

# default to c++11
CPPSTD=c++11
# There's probably a better way to do this.
ifneq ($(filter build_cpp17,$(DEB_BUILD_PROFILES)), )
    CPPSTD=c++17
endif

# add python bindings for package builds using profile pkg_python
ifneq ($(filter pkg_python,$(DEB_BUILD_PROFILES)), )
    PYTHON_FLAG="ON"
    BUILD_FOR_PACKAGE_SWITCH_FLAG="ON"
    PYTHON_EXE_PARAM="-DPYTHON_EXECUTABLE=/usr/bin/python3"
    PYTHON_INSTALL_PREFIX_PARAM="-DPYTHON_INSTALL_PREFIX=$(CURDIR)/debian/python3-gnsstk$(major)"
    # Set python major version used in enable script
    PYVER = 3
endif

DEBUG_PKG_PARAM=
# add additional debug flags for package builds using profile debug_package
ifneq ($(filter debug_package,$(DEB_BUILD_PROFILES)), )
	DEBUG_PKG_PARAM="-DCMAKE_BUILD_TYPE=relwithdebinfo"
endif

builddir="./build"

gen_control:
	@echo "$@ Generated $(major) $(minor)."
	sed -e 's/__VER__/$(major)/g' -e 's/__FULLVER__/$(major).$(minor)/g' debian/control.in >debian/control
# Update install files for co-installation of major pkg versions
	sed -e 's/__VER__/$(major)/g' -i debian/python3-gnsstk$(major).install
	sed -e 's/__VER__/$(major)/g' -i debian/gnsstk$(major)-bin.install
	sed -e 's/__VER__/$(major)/g;s/__DEBHOSTGNUTYPE__/$(DEB_HOST_GNU_TYPE)/g' -i debian/libgnsstk$(major).install
	sed -e 's/__VER__/$(major)/g;s/__DEBHOSTGNUTYPE__/$(DEB_HOST_GNU_TYPE)/g' -i debian/libgnsstk$(major)-dev.install
	sed -e 's/__DEBHOSTGNUTYPE__/$(DEB_HOST_GNU_TYPE)/g;s/__PYVER__/$(PYVER)/g' -i debian/enable
	sed -e 's/__VER__/$(major)/g' -i debian/gnsstk_enable.sh
	sed -e 's/__VER__/$(major)/g' -i debian/postinst
	sed -e 's/__VER__/$(major)/g' -i debian/prerm

# main packaging script based on dh7 syntax
%:
	dh $@ --builddirectory $(builddir) --parallel --with python3

override_dh_auto_build: gen_control
ifeq ($(PYTHON_FLAG), "ON")
	doxygen ./Doxyfile > $(builddir)/Doxygen.log
	mkdir -p $(builddir)/swig/doc
    # Second argument must be an absolute path
	/usr/bin/python3 ./swig/docstring_generator.py ./docs $$(realpath $(builddir)/swig/doc)
	# Clean up generated html/xml from doxygen
	rm -r ./docs
endif
	dh_auto_build

override_dh_auto_configure: gen_control
	debian/check_versions_match.sh
	dh_auto_configure -- \
	 -DBUILD_EXT=ON \
	 -DBUILD_PYTHON=$(PYTHON_FLAG) \
	 $(PYTHON_EXE_PARAM) \
	 $(PYTHON_INSTALL_PREFIX_PARAM) \
	 -DBUILD_FOR_PACKAGE_SWITCH=$(BUILD_FOR_PACKAGE_SWITCH_FLAG) \
	 -DUSE_RPATH=OFF \
	 -DVERSIONED_HEADER_INSTALL=ON \
	 -DCPPSTD=$(CPPSTD) \
	 $(DEBUG_PKG_PARAM)

override_dh_auto_clean: gen_control
	dh_auto_clean

# The python package tries to install files to user local.  Allow it for now.
override_dh_usrlocal:

.PHONY: override_dh_strip
override_dh_strip:
	dh_strip --dbg-package=$(shell grep -o "Package: libgnsstk[0-9.]\+-dbg" debian/control | cut -d " " -f 2)

override_dh_shlibdeps:
	dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info

override_dh_python3: gen_control
	dh_python3
	mkdir -p $(CURDIR)/debian/python3-gnsstk$(major)/usr/share/gnsstk$(major)/lib
	mv $(CURDIR)/debian/python3-gnsstk$(major)/usr/lib/python3 $(CURDIR)/debian/python3-gnsstk$(major)/usr/share/gnsstk$(major)/lib/
	mv $(CURDIR)/debian/python3-gnsstk$(major)/usr/local/* $(CURDIR)/debian/python3-gnsstk$(major)/usr/share/gnsstk$(major)/
	rmdir $(CURDIR)/debian/python3-gnsstk$(major)/usr/lib $(CURDIR)/debian/python3-gnsstk$(major)/usr/local

override_dh_install: gen_control
# Need to update gnsstk-config and GNSSTKConfig.cmake to point private share locations for co-installs
	sed -e 's/BIN_DIR=.*/BIN_DIR=\/usr\/share\/gnsstk$(major)\/bin/g' -i debian/tmp/usr/bin/gnsstk-config
	sed -e 's/PACKAGE_PREFIX_DIR}\/bin/PACKAGE_PREFIX_DIR}\/share\/gnsstk$(major)\/bin/g' -i debian/tmp/usr/share/cmake/GNSSTK/GNSSTKConfig.cmake
	sed -e 's/\/lib\/python.*\/site-packages/\/share\/gnsstk$(major)\/lib\/python$(PYVER)\/\dist-packages/g' -i debian/tmp/usr/share/cmake/GNSSTK/GNSSTKConfig.cmake
	sed -e 's/\/cmake\/GNSSTK/\/cmake\/GNSSTK$(major)/g' -i debian/tmp/usr/share/cmake/GNSSTK/GNSSTKConfig.cmake
# Recreate DEV linker library name to point to global SONAME library
	ln -sf /usr/lib/$(DEB_HOST_GNU_TYPE)/libgnsstk.so.$(major) $(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_GNU_TYPE)/libgnsstk.so
	dh_install