#!/usr/bin/make -f
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 to 1999 by Joey Hess.

# Uncomment this to turn on verbose mode.
# export DH_VERBOSE=1

export DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
export DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
export DEB_SOURCE_PACKAGE ?= $(strip $(shell egrep '^Source: ' debian/control | cut -f 2 -d ':'))
export DEB_VERSION ?= $(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2 -d ' ')
export DEB_NOEPOCH_VERSION ?= $(shell echo $(DEB_VERSION) | cut -d: -f2-)
export DEB_UPSTREAM_VERSION ?= $(shell echo $(DEB_NOEPOCH_VERSION) | sed 's/-[^-]*$$//')
export DEB_ISNATIVE ?= $(shell dpkg-parsechangelog | egrep '^Version:' | perl -ne 'print if not /^Version:\s*.*-/;')

export DEB_UPSTREAM_VERSION_DROPREVISION ?= $(shell echo $(DEB_UPSTREAM_VERSION) |  sed -r "s/(^.+)\..+$$/\1/g")
export DEB_UPSTREAM_VERSION_MAJOR ?= $(shell echo $(DEB_UPSTREAM_VERSION) | sed -r "s/(^[[:digit:]]+)\..+$$/\1/g")

DESTDIR="$(CURDIR)/debian/tmp"

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

# This is very hackish, but should do the trick. For some reason, the
# libtools wrapper scripts don't work.
# And for some reasons, the delegates are missing here.
# CONVERT = MAGICK_CONFIGURE_PATH=./config LD_LIBRARY_PATH=$(CURDIR)/magick/.libs:$(CURDIR)/wand/.libs $(CURDIR)/utilities/.libs/convert

# ARGH, we use graphicsmagick convert to avoid painful circular dependencies...
CONVERT = /usr/bin/convert

build: build-stamp
build-stamp: $(QUILT_STAMPFN)
	dh_testdir
        # NOTICE: remove EPL delegate lib gvc
	MagickDocumentPath="/usr/share/doc/imagemagick" ./configure \
	--prefix=/usr \
        --libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH) \
	--sysconfdir=/etc \
	--mandir=\$${prefix}/share/man \
	--infodir=\$${prefix}/share/info \
	$(shell dpkg-buildflags --export=configure) \
	--with-modules \
	--with-gs-font-dir=/usr/share/fonts/type1/gsfonts \
	--with-magick-plus-plus \
	--with-djvu \
        --with-wmf \
        --without-gvc \
	--enable-shared \
	--without-dps \
	--without-fpx \
	--with-perl-options='INSTALLDIRS=vendor' \
	--x-includes=/usr/include/X11 \
	--x-libraries=/usr/lib/X11 

	# Patch the generated libtool to avoid passing -rpath when linking,
	# and to explicitly link libraries against the libraries they
	# depend on.

	sed -i libtool \
		-e 's/^hardcode_libdir_flag_spec.*$$/hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/' \
		-e '/^archive_cmds="/s/"$$/ \\$$deplibs"/'

	$(MAKE)

	# Create Makefile after building main library, so it finds -lMagickCore (see #650417)
	cd "$(CURDIR)/PerlMagick" && \
		perl Makefile.PL INSTALLDIRS=vendor

	cd "$(CURDIR)/PerlMagick" && \
		$(MAKE) OPTIMIZE="-O2 -g -Wall"

	# build icons cache
	while read SIZE; do \
		mkdir -p $(CURDIR)/debian/icons/$$SIZE/apps/ ;\
		echo $$SIZE | sed "s/^\([[:digit:]]*\)x\([[:digit:]]*\)$$/-w \1 -h \2/g" \
		| xargs rsvg-convert $(CURDIR)/debian/display.im$(DEB_UPSTREAM_VERSION_MAJOR).svg > $(CURDIR)/debian/icons/$$SIZE/apps/display.im$(DEB_UPSTREAM_VERSION_MAJOR).png; \
	done < $(CURDIR)/debian/display.im$(DEB_UPSTREAM_VERSION_MAJOR).iconssize
	# make xpm
	$(CONVERT) $(CURDIR)/debian/display.im$(DEB_UPSTREAM_VERSION_MAJOR).svg -resize 32x32 \
		$(CURDIR)/debian/display.im$(DEB_UPSTREAM_VERSION_MAJOR).xpm
	mkdir -p $(CURDIR)/debian/icons/scalable/apps/
	gzip -c -n -9 $(CURDIR)/debian/display.im$(DEB_UPSTREAM_VERSION_MAJOR).svg \
		> $(CURDIR)/debian/icons/scalable/apps/display.im$(DEB_UPSTREAM_VERSION_MAJOR).svgz

	touch build-stamp

# This package does not currently split building of architecture dependent and independent packages
build-arch: build
build-indep: build

check: check-stamp
check-stamp: build-stamp
	dh_testdir

ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
	# Only run the testsuite to get more info in the build logs for now,
	# but don't make a failing testsuite fail the whole build. Change it
	# to a fatal error only once we've got an estimate on how harmful
	# that would be.
	@if test "$(DEB_HOST_GNU_TYPE)" = "$(DEB_BUILD_GNU_TYPE)"; then \
		unset DISPLAY; \
		LD_LIBRARY_PATH="$(CURDIR)/magick/.libs:$(CURDIR)/wand/.libs:$(CURDIR)/Magick++/lib/.libs:$$LD_LIBRARY_PATH" \
		$(MAKE) check LD_RUN_PATH= && echo "*** Testsuite succeeded ***" || echo "*** Testsuite failed ***"; \
		cat test-suite.log; \
	else \
		echo "Skipping regression tests because we appear to be cross-compiling"; \
	fi
endif

	touch check-stamp
clean:
	dh_testdir
	dh_testroot
	rm -f build-stamp

	# Commands to clean up after the build process
	[ ! -f PerlMagick/Makefile ] || (cd PerlMagick && $(MAKE) distclean)
	[ ! -f Makefile ] || $(MAKE) distclean
	[ ! -f Magick++/Makefile ] || (cd Magick++ && $(MAKE) distclean)
	rm -f "$(CURDIR)/utilities/.libs/*" "$(CURDIR)/_configs.sed" #\
#		"$(CURDIR)/magick/magick-config.h"

	# remove icons cache
	[ ! -d $(CURDIR)/debian/icons ] || rm -rf $(CURDIR)/debian/icons
	[ ! -f $(CURDIR)/debian/display.im$(DEB_UPSTREAM_VERSION_MAJOR).xpm ] || rm -rf $(CURDIR)/debian/display.im$(DEB_UPSTREAM_VERSION_MAJOR).xpm

	dh_clean build-stamp

install: build check
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs

	$(MAKE) install \
		DESTDIR="$(CURDIR)/debian/tmp" \
		pkgdocdir=/usr/share/doc/imagemagick

	cd "$(CURDIR)/PerlMagick" && \
		$(MAKE) install \
		DESTDIR="$(CURDIR)/debian/tmp" \
		pkgdocdir=/usr/share/doc/imagemagick

	-find "$(CURDIR)/debian" -type f -name .packlist | xargs rm -f

	# Fix HTML location inside manpages
	sed -i 's/doc\/ImageMagick-$(DEB_UPSTREAM_VERSION_DROPREVISION)/doc\/imagemagick/' \
		$(DESTDIR)/usr/share/man/man*/*
	sed -i 's/doc\/ImageMagick\\-$(DEB_UPSTREAM_VERSION_DROPREVISION)/doc\/imagemagick/' \
		$(DESTDIR)/usr/share/man/man*/*

	# Use x-terminal emulator for editing (Bug #132947)
	sed -i 's/xterm/\/etc\/alternatives\/x-terminal-emulator/' \
		$(DESTDIR)/etc/ImageMagick/delegates.xml

        # Add a suffix to binaries, and to the corresponding manual
        # page
	while read FILE; do \
		if echo $$FILE | grep usr/bin > /dev/null; then \
			filename=`echo "$$FILE"|sed s/*//g`; \
			basename=`basename $$filename`; \
	    		mv $(CURDIR)/debian/tmp/$$filename $(CURDIR)/debian/tmp/$$filename.im$(DEB_UPSTREAM_VERSION_MAJOR); \
			mv $(CURDIR)/debian/tmp/usr/share/man/man1/$$basename.1 \
			  $(CURDIR)/debian/tmp/usr/share/man/man1/$$basename.im$(DEB_UPSTREAM_VERSION_MAJOR).1 ;\
		else \
			true; \
		fi \
	done < debian/imagemagick.install

	# Remove empty directories in debian/tmp
	-find $(DESTDIR) -type d -empty | xargs -r rmdir -p

	# Remove RPATH from Magick.so
	chrpath -d $(DESTDIR)/usr/lib/perl5/auto/Image/Magick/Magick.so

	# empties dependency_libs from .la files
	# http://lists.debian.org/debian-devel/2009/08/msg00783.html
	find $(DESTDIR)/usr/lib -name '*.la' -exec \
		sed -i "s,^dependency_libs=.*,dependency_libs=''," {} \;


# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.

# Build architecture-dependent files here.
binary-arch: build check install
	dh_testdir
	dh_testroot
	dh_installdocs
	dh_installexamples
	dh_install
	# Remove extra coders
	while read FILE; do \
		rm -f debian/libmagickcore5/$$FILE; \
	done < debian/libmagickcore5-extra.install
	dh_installmenu
	dh_installman
	dh_installmime
	dh_installinfo
	dh_installchangelogs
	dh_link
	dh_strip --dbg-package=imagemagick-dbg
# fix #611125
	dh_compress -X/usr/share/doc/imagemagick/www
	dh_fixperms
	dh_perl
	dh_makeshlibs -V
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

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