#!/usr/bin/make -f
# -*- makefile -*-
# debian/rules for icewm

SHELL=/bin/bash

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

LDFLAGS += -lm -Wl,--as-needed
CXXFLAGS += $(CPPFLAGS)

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	MAKEFLAGS += -j$(NUMJOBS)
	export MAKEFLAGS
endif

ifeq (linux,$(DEB_TARGET_ARCH_OS))
	 CXXFLAGS += -DUSE_SIGNALFD
endif

CXXFLAGS += -DXTERMCMD=x-terminal-emulator

ICEWM_COMMON=$(CURDIR)/debian/icewm-common
ICEWM=$(CURDIR)/debian/icewm
ICEWM_LITE=$(CURDIR)/debian/icewm-lite
ICEWM_EXP=$(CURDIR)/debian/icewm-experimental
DOCDIR=/usr/share/doc/icewm-common
BDIR=builddir

confflags += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) \
	     --prefix=/usr --with-cfgdir=/etc/X11/icewm \
	     --datadir=/usr/share --disable-debug \
	     --enable-i18n --enable-nls \
	     --docdir=$(DOCDIR) \
	     EXTRA_LIBS="-lsupc++"

ICONS=$(CURDIR)/debian/icons
FDO=$(CURDIR)/debian/fdo
CUSTOM=$(CURDIR)/debian/custom

# DEBVERSION=$(shell dpkg-parsechangelog -SVersion)
# that one also works with wheezy
DEBVERSION=$(shell dpkg-parsechangelog |grep ^Version | sed -e s,Version:.,,)
ORIGVERSION=$(shell echo $(DEBVERSION) | sed -e 's,-[^-]*$$,,' )

modconfig = sed -e 's,\(.*\)VERSION.*,\1VERSION "$(DEBVERSION)",' \
						-e 's,ICEHELPIDX.*,ICEHELPIDX "$(DOCDIR)/html/icewm.html",' \
						< $(BDIR)$(1)/config.h \
						> $(BDIR)$(1)/config.h.mod && mv $(BDIR)$(1)/config.h.mod $(BDIR)$(1)/config.h

build-lite: stamp-build-lite
stamp-build-lite: autofoo-update-stamp
	mkdir -p $(BDIR)-lite
	cd $(BDIR)-lite && ../configure $(confflags) \
		 --disable-menus-gnome2 \
		 --disable-menus-fdo \
		 --enable-lite --disable-xfreetype \
		 --enable-corefonts \
		 --disable-taskbar  --disable-xrandr
	$(call modconfig,-lite)
	$(MAKE) -C $(BDIR)-lite EXEEXT=-lite
	touch $@

build-normal: stamp-build-normal
stamp-build-normal: autofoo-update-stamp
	mkdir -p $(BDIR)-normal
	cd $(BDIR)-normal && ../configure $(confflags) \
		 --disable-menus-gnome2 \
		 --enable-menus-fdo \
		 --enable-antialiasing  --enable-shaped-decorations \
		 --enable-gradients \
		 --enable-guievents
	$(call modconfig,-normal)
	$(MAKE) -C $(BDIR)-normal
	touch $@

configure: configure.ac Makefile.am src/Makefile.am
	bash autogen.sh

autofoo-update-stamp: configure
	touch $@

build: build-arch build-indep

build-arch: build-stamp
build-indep: build-stamp

build-stamp: build-normal build-lite
	$(MAKE) -C $(BDIR)-normal/doc
	# make sure to build it with fullfeatured version
	$(BDIR)-normal/src/genpref > lib/preferences
	touch $@

clean:
	dh_testdir
	dh_testroot
	rm -rf $(BDIR)*
	$(MAKE) -C po clean ||true
	rm -f stamp* *stamp config.guess config.sub Makefile config.log src/config.h
	rm -f po/*.mo po/*.gmo
	dh_clean

install: build
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs
	$(MAKE) -C $(BDIR)-normal install DESTDIR=$(ICEWM)
	$(MAKE) -C $(BDIR)-lite   install DESTDIR=$(ICEWM_LITE)  EXEEXT=-lite
	rm -rf $(ICEWM_LITE)/usr/{bin/*gnome*,share/{doc/*icewm*,locale,man,icewm}}
	mkdir -p $(ICEWM_COMMON)/usr/bin
	mv $(ICEWM)/usr/share $(ICEWM_COMMON)/usr/
	# get just one file back and drop non-session version
	mkdir -p $(ICEWM)/usr/share/xsessions
	mv $(ICEWM_COMMON)/usr/share/xsessions/icewm-session.desktop $(ICEWM)/usr/share/xsessions
	rm -rf $(ICEWM_COMMON)/usr/share/xsessions/*.desktop
	# XXX: fix the session file name and contents
	rm $(ICEWM_LITE)/usr/share/xsessions/*desktop
	sed -e 's,icewm-session,icewm-session-lite,g;s,^Name\(.*\),Name\1 [lite],' < lib/icewm-session.desktop > $(ICEWM_LITE)/usr/share/xsessions/IceWM-Lite.desktop
	# Install Debian custom files
	install -m 644 $(ICONS)/{mutt,mozilla,icewm}*.xpm $(ICEWM_COMMON)/usr/share/icewm/icons
	-mv $(ICEWM_COMMON)/usr/share/icewm/taskbar/icewm.xpm  $(ICEWM_COMMON)/usr/share/icewm/taskbar/icewm.orig.xpm
	install -m 644 $(ICONS)/debian.xpm $(ICEWM_COMMON)/usr/share/icewm/taskbar/icewm.xpm
	mkdir -p $(ICEWM_COMMON)/etc/X11/icewm $(ICEWM_COMMON)/usr/bin $(ICEWM_COMMON)/usr/share/doc/icewm-common/html/
	install -m 644 $(CUSTOM)/toolbar $(CUSTOM)/menu $(ICEWM_COMMON)/etc/X11/icewm/
	# Move files in the right package directory
	mv $(ICEWM)/usr/bin/*gnome* $(ICEWM_COMMON)/usr/share/icewm/
	mv $(ICEWM)/usr/bin/icewm-menu* $(ICEWM_COMMON)/usr/bin
	rm -rf $(ICEWM_COMMON)/usr/share/applications/*desktop
	# Install documentation
	mv $(ICEWM_COMMON)/usr/share/doc/icewm-common/*.html $(ICEWM_COMMON)/usr/share/doc/icewm-common/html/
	mkdir $(ICEWM_COMMON)/usr/share/doc/icewm-common/FAQ
	cd $(ICEWM_COMMON)/usr/share/doc/icewm-common/FAQ && sgml2html $(CURDIR)/debian/FAQ/source/*.sgml
	# and add our bits to fix the font insanity with xft2
	dh_installexamples -picewm-common $(CURDIR)/debian/examples/preferences.fonts $(CURDIR)/debian/examples/preferences.noClickToFocus $(CURDIR)/debian/examples/focus_mode.noClickToFocus
	# Remove doc directories since we will add links
	# to icewm-common instead.
	rm -rf $(ICEWM)/usr/share/doc/icewm
	## icewm-experimental ########################################
# making -experimental compat symlinks
	cd  $(ICEWM_EXP)/usr/bin && for x in icewm-session icewm icewmhint icehelp icewmtray icewmbg icesh icesound ; do ln -s $$x $$x-experimental ; done
	#; ln -sf genpref genpref-experimental
	# Remove doc directories since we will add links
	# to icewm-common instead.
	rm -rf $(ICEWM_EXP)/usr/share/doc/icewm-experimental
	cd debian ; for x in icewm icewm-lite icewm-experimental ; do mkdir -p $$x/usr/share/lintian/overrides ; cp $$x.lintian $$x/usr/share/lintian/overrides/$$x ; done

binary-indep:

binary-arch: build install
	dh_testdir
	dh_testroot
	cd debian ; for x in -lite -experimental ; do cp -lf icewm.postinst icewm$$x.postinst ; cp -lf icewm.prerm icewm$$x.prerm ; done
	#rm -r $(ICEWM_LITE)/usr/share/doc/icewm-lite $(ICEWM_EXP)/usr/share/doc/icewm-experimental
	dh_link -picewm usr/share/doc/icewm-common usr/share/doc/icewm
	dh_link -picewm-lite usr/share/doc/icewm-common usr/share/doc/icewm-lite
	dh_link -picewm-experimental usr/share/doc/icewm-common usr/share/doc/icewm-experimental
	dh_installdocs
	dh_installmenu
	dh_icons
	dh_installchangelogs -picewm-common CHANGES
	dh_strip
	dh_compress
	# Install undocumented manpages
	for v in "" -experimental -lite ; do \
		mkdir -p debian/icewm$$v/usr/share/man/man1 ; \
			for f in icewm icehelp icewmbg icewmhint icesh icewmtray icewm-session ; do \
				ln -sf icewm.gz debian/icewm$$v/usr/share/man/man1/$$f$$v.1x.gz ; \
		done ; \
	done
	ln -sf icewm.gz debian/icewm/usr/share/man/man1/icesound.1x.gz
	ln -sf icewm.gz debian/icewm-experimental/usr/share/man/man1/icesound-experimental.1x.gz
	ln -sf icewm.gz debian/icewm-common/usr/share/man/man1/icewm-menu-fdo.1x.gz
	dh_fixperms
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

binary:	binary-indep binary-arch

cleancruft:
	git clean -fdx -e .cproject -e .project -e .settings
	git checkout HEAD -- README.md configure.ac

get-orig-source:
	git archive icewm-1-3-BRANCH --prefix icewm-$(ORIGVERSION)/ | xz -9 > ../icewm_$(ORIGVERSION).orig.tar.xz

update-debian-mod:
	grep debian .git/HEAD
	sh autogen.sh
	git commit ChangeLog -m "Updating ChangeLog for a new Debian snapshot"
	# don't care
	git checkout HEAD -- README.md configure.ac

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