#!/usr/bin/make -f

package=xview
buildarch=$(shell dpkg --print-architecture)
gnuarch=$(shell dpkg --print-gnu-build-architecture)

tmpdir=debian/tmp
instdir=$(tmpdir)/inst
PKGLIST = xviewg xviewg-dev xview-clients xview-examples olwm olvwm


define clean
	-rm -f build-clean build-other build-stamp install-stamp
	OPENWINHOME=/usr/X11R6 bash Build-LinuxXView.bash clean
	dh_clean
	-rm -f debian/copyright
endef


build: build-stamp

build-stamp: build-clean build-other
	touch build-stamp

build-clean:
	$(clean)
	touch build-clean

build-other:
	dh_testdir
	OPENWINHOME=/usr/X11R6 bash Build-LinuxXView.bash libs
	OPENWINHOME=/usr/X11R6 bash Build-LinuxXView.bash clients
	OPENWINHOME=/usr/X11R6 bash Build-LinuxXView.bash contrib
	OPENWINHOME=/usr/X11R6 bash Build-LinuxXView.bash olvwm
	touch build-other

clean:
	dh_testdir
	dh_testroot
	$(clean)
	
install: install-stamp

install-stamp: install-clean install-other install-pkg-other
	touch install-stamp

install-clean:
	dh_testdir
	dh_testroot
	dh_clean

install-other: build-stamp
	dh_testdir
	dh_testroot
	DESTDIR="`pwd`/$(instdir)" OPENWINHOME=/usr/X11R6 bash Build-LinuxXView.bash instlibs
	mv $(instdir)/usr/X11R6/lib/help/clock.info $(instdir)/usr/X11R6/lib/help/clock.info.keep
	DESTDIR="`pwd`/$(instdir)" OPENWINHOME=/usr/X11R6 bash Build-LinuxXView.bash instclients
	DESTDIR="`pwd`/$(instdir)" OPENWINHOME=/usr/X11R6 bash Build-LinuxXView.bash instcontrib
	DESTDIR="`pwd`/$(instdir)" OPENWINHOME=/usr/X11R6 bash Build-LinuxXView.bash instolvwm
	mv $(instdir)/usr/X11R6/lib/help/clock.info.keep $(instdir)/usr/X11R6/lib/help/clock.info
	sh debian/fixinfo $(instdir)/usr/X11R6/lib/help/*.info

install-pkg-other: build-stamp
	dh_testdir
	dh_testroot
	set -e && for pkg in $(PKGLIST); do \
	  rm -fr $(tmpdir)/$$pkg; \
	  dh_installdirs -P$(tmpdir)/$$pkg -p$$pkg; \
	done
# xviewg
	set -e && for file in text_extras_menu textswrc ttyswrc; do \
	  mv $(instdir)/usr/X11R6/lib/.$$file $(tmpdir)/xviewg/etc/X11/xview/$$file; \
	  mv $(instdir)/usr/X11R6/lib/$$file $(tmpdir)/xviewg/usr/X11R6/lib; \
	  ln -s /etc/X11/xview/$$file $(tmpdir)/xviewg/usr/X11R6/lib/.$$file; \
	done
	mv $(instdir)/usr/X11R6/lib/lib*.so.*.*.* $(instdir)/usr/X11R6/lib/lib*.so.? $(tmpdir)/xviewg/usr/X11R6/lib
	mv $(instdir)/usr/X11R6/include/bitmaps/* $(tmpdir)/xviewg/usr/X11R6/include/bitmaps
	mv $(instdir)/usr/X11R6/include/images/* $(tmpdir)/xviewg/usr/X11R6/include/images
	set -e && for prog in capitalize insert_brackets remove_brackets shift_lines; do \
	  cp contrib/misc/$$prog $(tmpdir)/xviewg/usr/X11R6/bin; \
	  chmod +x $(tmpdir)/xviewg/usr/X11R6/bin/$$prog; \
	  cp contrib/misc/$$prog.1 $(tmpdir)/xviewg/usr/X11R6/man/man1; \
	done
	set -e && for info in textsw ttysw xview; do \
	  mv $(instdir)/usr/X11R6/lib/help/$$info.info $(tmpdir)/xviewg/usr/X11R6/lib/help; \
	done
	mv $(instdir)/usr/X11R6/man/man1/xview.1x $(tmpdir)/xviewg/usr/X11R6/man/man7/xview.7x
	ln -s X11R6 $(tmpdir)/xviewg/usr/openwin
	mv $(instdir)/usr/X11R6/share/doc/xview/whats_new.ps $(tmpdir)/xviewg/usr/share/doc/xviewg
	cat debian/xview-info.head $(instdir)/usr/X11R6/share/doc/xview/xview-info \
	  > $(tmpdir)/xviewg/usr/share/doc/xviewg/xview-info
# xviewg-dev
	mv $(instdir)/usr/X11R6/lib/lib*.a $(instdir)/usr/X11R6/lib/lib*.so $(tmpdir)/xviewg-dev/usr/X11R6/lib
	set -e && for file in xgettext msgfmt; do \
	  mv $(instdir)/usr/X11R6/bin/$$file $(tmpdir)/xviewg-dev/usr/X11R6/bin/xview_$$file; \
	  mv $(instdir)/usr/X11R6/man/man1/$$file.1 $(tmpdir)/xviewg-dev/usr/X11R6/man/man1/xview_$$file.1; \
	done
	set -e && for dir in olgx pixrect xview_private olgx_private xview; do \
	  mv $(instdir)/usr/X11R6/include/$$dir/* $(tmpdir)/xviewg-dev/usr/X11R6/include/$$dir; \
	done
	mv $(instdir)/usr/X11R6/lib/X11/config/* $(tmpdir)/xviewg-dev/usr/X11R6/lib/X11/config
	mv $(instdir)/usr/X11R6/share/doc/xview/*api* $(tmpdir)/xviewg-dev/usr/share/doc/xviewg
# xview-clients
	set -e && for file in clock cmdtool shelltool props textedit; do \
	  mv $(instdir)/usr/X11R6/bin/$$file $(tmpdir)/xview-clients/usr/X11R6/bin; \
	  mv $(instdir)/usr/X11R6/man/man1/$$file.1x $(tmpdir)/xview-clients/usr/X11R6/man/man1/$$file.1; \
	done
	cp contrib/misc/owplaces $(tmpdir)/xview-clients/usr/X11R6/bin
	set -e && for file in clock.info props.info textedit.info; do \
	  mv $(instdir)/usr/X11R6/lib/help/$$file $(tmpdir)/xview-clients/usr/X11R6/lib/help/$$file; \
	done
	cp contrib/misc/props-locale.C $(tmpdir)/xview-clients/usr/X11R6/share/locale/C/props/C
	cp contrib/misc/props-locale.basic_setting $(tmpdir)/xview-clients/usr/X11R6/share/locale/C/props/basic_setting
# xview-examples
	mv $(instdir)/usr/X11R6/share/src/xview/examples/bin/* $(tmpdir)/xview-examples/usr/lib/xview/examples
	rmdir $(instdir)/usr/X11R6/share/src/xview/examples/bin
	chmod +x $(tmpdir)/xview-examples/usr/lib/xview/examples/*
	mv $(instdir)/usr/X11R6/share/src/xview/examples/* $(tmpdir)/xview-examples/usr/share/doc/xviewg/examples
	ln -s ../../../../lib/xview/examples $(tmpdir)/xview-examples/usr/share/doc/xviewg/examples/bin
# olvwm
	mv $(instdir)/usr/X11R6/bin/olvwm $(tmpdir)/olvwm/usr/X11R6/bin
	mv $(instdir)/usr/X11R6/man/man1/olvwm.1x $(tmpdir)/olvwm/usr/X11R6/man/man1/olvwm.1
	mv $(instdir)/usr/X11R6/man/man1/olvwmrc.1x $(tmpdir)/olvwm/usr/X11R6/man/man1/olvwmrc.1
	cp $(instdir)/usr/X11R6/man/man1/olwm.1x $(tmpdir)/olvwm/usr/X11R6/man/man1/olwm.1olvwm
	mv $(instdir)/usr/X11R6/lib/help/olvwm.info $(tmpdir)/olvwm/usr/X11R6/lib/help
	cp debian/olvwm-x-window-manager $(tmpdir)/olvwm/usr/X11R6/bin
	chmod +x $(tmpdir)/olvwm/usr/X11R6/bin/olvwm-x-window-manager
	cp debian/olvwm.openwin-menu $(tmpdir)/olvwm/etc/X11/olvwm/openwin-menu
	cp debian/olvwm.changelog.old $(tmpdir)/olvwm/usr/share/doc/olvwm/changelog.Debian-old
	cp debian/olvwm.README $(tmpdir)/olvwm/usr/share/doc/olvwm/README.debian
# olwm
	mv $(instdir)/usr/X11R6/bin/olwm* $(tmpdir)/olwm/usr/X11R6/bin
	set -e && for file in olwm olwmslave; do \
	  mv $(instdir)/usr/X11R6/man/man1/$$file.1x $(tmpdir)/olwm/usr/X11R6/man/man1/$$file.1; \
	done
	set -e && for file in olwm.info workspace.info; do \
	  mv $(instdir)/usr/X11R6/lib/help/$$file $(tmpdir)/olwm/usr/X11R6/lib/help/$$file; \
	done
	cp debian/olwm-x-window-manager $(tmpdir)/olwm/usr/X11R6/bin
	chmod +x $(tmpdir)/olwm/usr/X11R6/bin/olwm-x-window-manager
	cp debian/olwm.openwin-menu $(tmpdir)/olwm/etc/X11/olwm/openwin-menu
	mv $(instdir)/usr/X11R6/lib/openwin-menu $(tmpdir)/olwm/etc/X11/olwm/openwin-menu.orig
	mv $(instdir)/usr/X11R6/lib/openwin-menu-programs $(tmpdir)/olwm/etc/X11/olwm
	cp debian/olwm.README $(tmpdir)/olwm/usr/share/doc/olwm/README.debian

binary:	binary-indep binary-arch

binary-indep: build
	dh_testdir
	dh_testroot

binary-arch: binary-other

binary-other: install
	install -d $(tmpdir)/xviewg/DEBIAN
	cp debian/shlibs.local $(tmpdir)/xviewg/DEBIAN/shlibs
# dh_installwm still uses the obsolete register-window-manager(8)
#	dh_installwm -P$(tmpdir)/olwm -polwm olwm
#	dh_installwm -P$(tmpdir)/olvwm -polvwm olvwm

	cat debian/copyright.head LEGAL_NOTICE > debian/copyright
# Don't compress source code/Makefiles in the examples directory, because having a
# mixture of compressed/uncompressed files there is really stupid.
# Concatenate olvwm's and XView's version number to make both dpkg and our users happy. :-)
	set -ex && for pkg in $(PKGLIST); do \
	  PKGARG="-P$(tmpdir)/$$pkg -p$$pkg"; \
	  dh_installdocs $$PKGARG; \
	  dh_installchangelogs $$PKGARG; \
	  dh_installmenu $$PKGARG; \
	  dh_strip $$PKGARG; \
	  dh_link $$PKGARG; \
	  [ $$pkg = xview-examples ] && dh_compress $$PKGARG -X/examples/; \
	  [ $$pkg != xview-examples ] && dh_compress $$PKGARG; \
	  dh_fixperms $$PKGARG; \
	  dh_installdeb $$PKGARG; \
	  dh_shlibdeps -l$(tmpdir)/xviewg/usr/X11R6/lib $$PKGARG; \
	  [ $$pkg = xviewg ] && sh debian/fixdeps xviewg debian/substvars; \
	  [ $$pkg = olvwm ] && dh_gencontrol $$PKGARG -u-v"4.4.`dpkg-parsechangelog | grep '^Version: ' | cut -d' ' -f2`"; \
	  [ $$pkg != olvwm ] && dh_gencontrol $$PKGARG; \
	  dh_md5sums $$PKGARG; \
	  dh_builddeb $$PKGARG; \
	done

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