#!/usr/bin/make -f

DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_BUILD_OPTIONS   ?= debug nostrip

ifeq ($(DEB_HOST_GNU_TYPE),m68k-linux-gnu) # m68k GCC 4.0 breakage
	CFLAGS = -Wall -Wno-non-virtual-dtor
else
	CFLAGS = -Wall
endif

ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -g
else
	CFLAGS += -DNDEBUG
endif

ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
	INSTALL_PROGRAM += -s
endif

ifeq ($(DEB_HOST_GNU_TYPE),m68k-linux-gnu) # m68k GCC 4.0 breakage
	CFLAGS += -O2
else ifeq ($(DEB_HOST_GNU_TYPE),alpha-linux-gnu) # alpha GCC 4.1/4.2 breakage
	CFLAGS += -O0
else
	CFLAGS += -O2
endif

# extract library major version from source build system
libver0 := $(shell egrep '^LIBDJVU_VER_COMPAT=[0-9]+$$' configure \
		   | head -1 \
		   | sed 's/LIBDJVU_VER_COMPAT=//')

# extract library major version expected by debian packaging
libver := $(shell egrep '^Package: libdjvulibre[0-9]+$$' debian/control \
		  | head -1 \
		  | sed 's/Package: libdjvulibre//')

ifneq ($(libver0),$(libver))
	error inconsistent debian/control library major version
endif

testlibver:
	@echo library major version: upstream $(libver0), debian $(libver) $(libver1) $(libver2)

config.status: configure
	dh_testdir
	dh_auto_configure -- --disable-desktopfiles --enable-static --enable-shared

build: build-stamp
build-stamp: config.status
	dh_testdir
	$(MAKE) -k depend	# otherwise a missing Makefile.dep blows up
	$(MAKE) OPTS="$(CFLAGS)" # hotwire compiler options
	touch build-stamp

clean:
	dh $@
	@echo push in latest config support files
	-test -r /usr/share/misc/config.sub && \
	  cp -f /usr/share/misc/config.sub config/config.sub
	-test -r /usr/share/misc/config.guess && \
	  cp -f /usr/share/misc/config.guess config/config.guess

plugsubdir=netscape/plugins-libc6
plug=$(plugsubdir)/nsdejavu.so

install: install-stamp
install-stamp: build-stamp
	dh_testdir
	dh_prep
	dh_installdirs
	$(MAKE) install	\
		DESTDIR=$(CURDIR)/debian/tmp \
		plugindir=/usr/lib/$(plugsubdir)
	chmod +x debian/tmp/usr/bin/any2djvu
	mkdir --parents debian/tmp/usr/lib/cgi-bin
	cp --preserve=timestamps debian/djvuserve.sh \
		debian/tmp/usr/lib/cgi-bin/djvuserve
	chmod +x debian/tmp/usr/lib/cgi-bin/djvuserve
	mkdir --parents      debian/tmp/usr/lib/mozilla/plugins
	ln -sf ../../$(plug) debian/tmp/usr/lib/mozilla/plugins/
	mkdir --parents      debian/tmp/usr/lib/mozilla-firefox/plugins
	ln -sf ../../$(plug) debian/tmp/usr/lib/mozilla-firefox/plugins/
	@echo "install djvu icon and mime types"
	for n in 22 32 48 64 ; do \
	  d="debian/tmp/usr/share/icons/hicolor/$${n}x$${n}/mimetypes"; \
	  mkdir --parents $${d}; \
	  install --mode=644 desktopfiles/hi$${n}-djvu.png \
	    $${d}/image-vnd.djvu.png; \
	  ln -sf image-vnd.djvu.png \
	    $${d}/djvu.png; \
	done
	mkdir --parents debian/tmp/usr/share/icons/hicolor/scalable/mimetypes
	install --mode=644 desktopfiles/hi-djvu.svgz \
	  debian/tmp/usr/share/icons/hicolor/scalable/mimetypes/image-vnd.djvu.svgz
	ln -sf image-vnd.djvu.svgz \
	  debian/tmp/usr/share/icons/hicolor/scalable/mimetypes/djvu.svgz
	mkdir --parents debian/tmp/usr/share/mimelnk/image
	install --mode=644 desktopfiles/vnd.djvu.desktop \
	  debian/tmp/usr/share/mimelnk/image/
	@echo "install djview3 icon and menu"
	mkdir --parents debian/tmp/usr/share/icons/hicolor/scalable/apps
	install --mode=644 desktopfiles/hi-djview3.svgz \
	  debian/tmp/usr/share/icons/hicolor/scalable/apps/djvulibre-djview3.svgz
	mkdir --parents debian/tmp/usr/share/icons/hicolor/32x32/apps
	install --mode=644 debian/djvulibre-djview3.xpm \
	  debian/tmp/usr/share/icons/hicolor/32x32/apps/
	mkdir --parents debian/tmp/usr/share/applications
	install --mode=755 desktopfiles/djvulibre-djview3.desktop \
	  debian/tmp/usr/share/applications/
	touch install-stamp

binary: binary-indep binary-arch

binary-indep:

binary-arch:
	dh $@ --before auto_configure
	dh $@ --after auto_test --before auto_install
	debian/rules install
	dh $@ --after auto_install --until dh_install
	@echo remove from djvulibre-bin, already in djview3
	find debian/djvulibre-bin -name djview3\* -print -delete
	@echo remove from djvulibre-bin, just links
	find debian/djvulibre-bin -name djview\* -print -delete
	@echo remove from djvulibre-bin, already in djvulibre-plugin
	find debian/djvulibre-bin -name nsdejavu\* -print -delete
	@echo remove from djvulibre-bin, already in djvuserve
	find debian/djvulibre-bin -name djvuserve\* -print -delete
# 	@echo "remove from djvulibre-bin, not in Debian: needs gsdjvu, direct complaints to AT&T"
# 	find debian/djvulibre-bin -name djvudigital\* -print -delete
	dh $@ --after dh_install --before compress
	dh_compress --exclude=.djvu
	dh $@ --after compress --before strip
	dh_strip --dbg-package=djvulibre-dbg
	dh $@ --after strip --before makeshlibs
	dh_makeshlibs --version-info --exclude=/plugins
	dh $@ --after makeshlibs

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