#!/usr/bin/make -f

NULL  =
PKD   = $(word 1,$(abspath $(dir $(MAKEFILE_LIST))))
PKG   = $(word 2,$(shell dpkg-parsechangelog -l$(PKD)/changelog | grep ^Source))
UVER  = $(shell dpkg-parsechangelog -l$(PKD)/changelog | perl -ne 'print $$1 if m{^Version:\s+(?:\d+:)?(\d.*)(?:\-\d+.*)};')
DTYPE =
VER  ?= $(subst $(DTYPE),,$(UVER))

UURL = https://git.javispedro.com/topmenu-gtk.git
UREV = $(shell echo $(VER) | cut -d"." -f5)

export DEB_BUILD_MAINT_OPTIONS = hardening=+all
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk

include /usr/share/cdbs/1/class/autotools.mk
include /usr/share/cdbs/1/rules/autoreconf.mk
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/rules/utils.mk

DEB_DH_INSTALL_ARGS += --fail-missing

DEB_SRCDIR_topmenu-gtk3 := $(CURDIR)/debian/build/topmenu-gtk3
DEB_BUILDDIR_topmenu-gtk3 := $(CURDIR)/debian/build/topmenu-gtk3
DEB_DESTDIR_topmenu-gtk3 := $(CURDIR)/debian/topmenu-gtk3
DEB_DESTDIR_libtopmenu-client-gtk3-0 := $(CURDIR)/debian/libtopmenu-client-gtk3-0
DEB_DESTDIR_libtopmenu-server-gtk3-0 := $(CURDIR)/debian/libtopmenu-server-gtk3-0
DEB_DESTDIR_libtopmenu-client-gtk3-dev := $(CURDIR)/debian/libtopmenu-client-gtk3-dev
DEB_DESTDIR_libtopmenu-server-gtk3-dev := $(CURDIR)/debian/libtopmenu-server-gtk3-dev

DEB_DH_MAKESHLIBS_ARGS_topmenu-gtk2 += --no-act
DEB_DH_MAKESHLIBS_ARGS_topmenu-gtk3 += --no-act

DEB_DH_SHLIBDEPS_ARGS_lxpanel-plugin-topmenu += -l$(shell pkg-config --variable=pkglibdir lxpanel) --dpkg-shlibdeps-params=--ignore-missing-info

DEB_DBG_PACKAGE_topmenu-gtk2 = topmenu-gtk2-dbg
DEB_DBG_PACKAGE_libtopmenu-client-gtk2-0 = libtopmenu-client-gtk2-dbg
DEB_DBG_PACKAGE_libtopmenu-server-gtk2-0 = libtopmenu-server-gtk2-dbg
DEB_DBG_PACKAGE_mate-applet-topmenu = mate-applet-topmenu-dbg
DEB_DBG_PACKAGE_xfce4-topmenu-plugin = xfce4-topmenu-plugin-dbg
DEB_DBG_PACKAGE_lxpanel-plugin-topmenu = lxpanel-plugin-topmenu-dbg

DEB_DBG_PACKAGE_topmenu-gtk3 = topmenu-gtk3-dbg
DEB_DBG_PACKAGE_libtopmenu-client-gtk3-0 = libtopmenu-client-gtk3-dbg
DEB_DBG_PACKAGE_libtopmenu-server-gtk3-0 = libtopmenu-server-gtk3-dbg

DEB_CONFIGURE_EXTRA_FLAGS += \
	    --prefix=/usr \
	    --includedir=/usr/include/topmenu-gtk2 \
	    --with-gtk=2 \
	    --with-wnck=wnck1 \
	    --disable-static \
	    --enable-mate-applet=yes \
	    --libexecdir=/usr/lib/mate-applets \
	    --enable-xfce-applet=yes \
	    --enable-lxpanel-plugin=yes \
	    $(NULL)

configure/topmenu-gtk3:: $(DEB_BUILDDIR_topmenu-gtk3)/config.status

$(DEB_BUILDDIR_topmenu-gtk3)/config.status:
	cp -a `find . -maxdepth 1 -mindepth 1 -not -name debian` $(DEB_SRCDIR_topmenu-gtk3)/$*
	cd $(DEB_BUILDDIR_topmenu-gtk3) && \
	    $(DEB_CONFIGURE_SCRIPT_ENV) $(DEB_CONFIGURE_SCRIPT) \
	        $(DEB_CONFIGURE_NORMAL_ARGS) \
	        $(cdbs_configure_flags) \
	        --prefix=/usr \
	        --includedir=/usr/include/topmenu-gtk3 \
	        --with-gtk=3 \
	        --with-wnck=wnck3 \
	        --disable-static \
	        $(DEB_CONFIGURE_USER_FLAGS)

cleanbuilddir/topmenu-gtk3::
	rm -Rf $(DEB_BUILDDIR_topmenu-gtk3)

build/topmenu-gtk3::
	make -C $(DEB_BUILDDIR_topmenu-gtk3)

install/topmenu-gtk3::
	make -C $(DEB_BUILDDIR_topmenu-gtk3) install DESTDIR=$(DEB_DESTDIR_topmenu-gtk3)
	rm -Rf  $(DEB_DESTDIR_topmenu-gtk3)/usr/include/
	rm -f   $(DEB_DESTDIR_topmenu-gtk3)/usr/lib/*.so*
	rm -f   $(DEB_DESTDIR_topmenu-gtk3)/usr/lib/*.la
	rm -f   $(DEB_DESTDIR_topmenu-gtk3)/usr/lib/*/gtk-3.0/modules/*.la
	rm -Rf  $(DEB_DESTDIR_topmenu-gtk3)/usr/share/icons/
	mkdir -p $(DEB_DESTDIR_topmenu-gtk3)/usr/share/doc/topmenu-gtk3/
	cp         README.md $(DEB_DESTDIR_topmenu-gtk3)/usr/share/doc/topmenu-gtk3/
	gzip -9 -n $(DEB_DESTDIR_topmenu-gtk3)/usr/share/doc/topmenu-gtk3/README.md

install/libtopmenu-client-gtk3-0::
	make -C $(DEB_BUILDDIR_topmenu-gtk3) install DESTDIR=$(DEB_DESTDIR_libtopmenu-client-gtk3-0)
	rm -Rf  $(DEB_DESTDIR_libtopmenu-client-gtk3-0)/usr/include/
	rm -Rf  $(DEB_DESTDIR_libtopmenu-client-gtk3-0)/usr/lib/*/gtk-3.0/
	rm -f   $(DEB_DESTDIR_libtopmenu-client-gtk3-0)/usr/lib/*server*
	rm -f   $(DEB_DESTDIR_libtopmenu-client-gtk3-0)/usr/lib/*.so
	rm -f   $(DEB_DESTDIR_libtopmenu-client-gtk3-0)/usr/lib/*.la
	rm -Rf  $(DEB_DESTDIR_libtopmenu-client-gtk3-0)/usr/lib/$(shell dpkg-architecture -qDEB_BUILD_MULTIARCH)/
	rm -Rf  $(DEB_DESTDIR_libtopmenu-client-gtk3-0)/usr/share/icons/

install/libtopmenu-server-gtk3-0::
	make -C $(DEB_BUILDDIR_topmenu-gtk3) install DESTDIR=$(DEB_DESTDIR_libtopmenu-server-gtk3-0)
	rm -Rf  $(DEB_DESTDIR_libtopmenu-server-gtk3-0)/usr/include/
	rm -f   $(DEB_DESTDIR_libtopmenu-server-gtk3-0)/usr/lib/*client*
	rm -f   $(DEB_DESTDIR_libtopmenu-server-gtk3-0)/usr/lib/*.so
	rm -f   $(DEB_DESTDIR_libtopmenu-server-gtk3-0)/usr/lib/*.la
	rm -Rf  $(DEB_DESTDIR_libtopmenu-server-gtk3-0)/usr/lib/$(shell dpkg-architecture -qDEB_BUILD_MULTIARCH)/
	rm -Rf  $(DEB_DESTDIR_libtopmenu-server-gtk3-0)/usr/share/icons/

install/libtopmenu-client-gtk3-dev::
	make -C $(DEB_BUILDDIR_topmenu-gtk3) install DESTDIR=$(DEB_DESTDIR_libtopmenu-client-gtk3-dev)
	rm -Rf  $(DEB_DESTDIR_libtopmenu-client-gtk3-dev)/usr/lib/*/gtk-3.0/
	rm -f   $(DEB_DESTDIR_libtopmenu-client-gtk3-dev)/usr/lib/*server*.so
	rm -f   $(DEB_DESTDIR_libtopmenu-client-gtk3-dev)/usr/lib/*.so.*
	rm -f   $(DEB_DESTDIR_libtopmenu-client-gtk3-dev)/usr/lib/*.la
	rm -Rf  $(DEB_DESTDIR_libtopmenu-client-gtk3-dev)/usr/lib/$(shell dpkg-architecture -qDEB_BUILD_MULTIARCH)/
	rm -Rf  $(DEB_DESTDIR_libtopmenu-client-gtk3-dev)/usr/share/icons/
	rm -Rf  $(DEB_DESTDIR_libtopmenu-client-gtk3-dev)/usr/include/topmenu-gtk3/topmenu-server.h
	rm -Rf  $(DEB_DESTDIR_libtopmenu-client-gtk3-dev)/usr/include/topmenu-gtk3/topmenu-widget.h

install/libtopmenu-server-gtk3-dev::
	make -C $(DEB_BUILDDIR_topmenu-gtk3) install DESTDIR=$(DEB_DESTDIR_libtopmenu-server-gtk3-dev)
	rm -Rf  $(DEB_DESTDIR_libtopmenu-server-gtk3-dev)/usr/lib/*/gtk-3.0/
	rm -f   $(DEB_DESTDIR_libtopmenu-server-gtk3-dev)/usr/lib/*client*.so
	rm -f   $(DEB_DESTDIR_libtopmenu-server-gtk3-dev)/usr/lib/*.so.*
	rm -f   $(DEB_DESTDIR_libtopmenu-server-gtk3-dev)/usr/lib/*.la
	rm -Rf  $(DEB_DESTDIR_libtopmenu-server-gtk3-dev)/usr/lib/$(shell dpkg-architecture -qDEB_BUILD_MULTIARCH)/
	rm -Rf  $(DEB_DESTDIR_libtopmenu-server-gtk3-dev)/usr/share/icons/
	rm -f   $(DEB_DESTDIR_libtopmenu-server-gtk3-dev)/usr/include/topmenu-gtk3/topmenu-client.h
	rm -f   $(DEB_DESTDIR_libtopmenu-server-gtk3-dev)/usr/include/topmenu-gtk3/topmenu-monitor.h
	rm -f   $(DEB_DESTDIR_libtopmenu-server-gtk3-dev)/usr/include/topmenu-gtk3/topmenu-appmenubar.h

common-install-indep:: remove-cruft
common-install-arch:: remove-cruft

remove-cruft::
	rm -f  debian/tmp/usr/lib/*.la
	rm -f  debian/tmp/usr/lib/*/gtk-2.0/modules/*.la
	rm -f  debian/tmp/usr/lib/xfce4/panel-plugins/libtopmenu.la
	rm -f  debian/tmp/usr/lib/*/lxpanel/plugins/libtopmenu.la

## http://wiki.debian.org/onlyjob/get-orig-source
.PHONY: get-orig-source
get-orig-source: $(PKG)_$(VER)$(DTYPE).orig.tar.xz $(info I: $(PKG)_$(VER)$(DTYPE))
	@

$(PKG)_$(VER)$(DTYPE).orig.tar.xz: $(info I: GIT Revision=$(UREV))
	$(if $(wildcard $(PKG)-$(VER)),$(error $(PKG)-$(VER) exist, aborting..))
	@echo "# Downloading..."
	git clone $(UURL) $(PKG)-$(VER) \
	    || $(RM) -r $(PKG)-$(VER)
	cd $(PKG)-$(VER) \
	    && git checkout "$(UREV)" \
	    && ( echo "# Generating ChangeLog..." \
	   ; git --no-pager log --format="%ai %aN (%h) %n%n%x09*%w(68,0,10) %s%d%n" > ChangeLog \
	       ; touch -d "$$(git log -1 --format='%ci')" ChangeLog) \
	    && echo "# Setting times..." \
	    && for F in $$(git ls-tree -r --name-only HEAD); do touch --no-dereference -d "$$(git log -1 --format="%ai" -- $$F)" "$$F"; done \
	    && $(RM) -r .git .git*
#	    && echo "# Cleaning-up..." \
#	    && rm -rf \
#	        # NOTHING TO BE REMOVED
	@echo "# Packing..."
	find -L "$(PKG)-$(VER)" -xdev -type f -print | sort \
	    | XZ_OPT="-6v" tar -caf "../$(PKG)_$(VER)$(DTYPE).orig.tar.xz" -T- --owner=root --group=root --mode=a+rX \
	    && $(RM) -r "$(PKG)-$(VER)"
