#!/usr/bin/make -f
# debian/rules file - for GNUPG (1.4.6)
# Based on sample debian/rules file - for GNU Hello (1.3).
# Copyright 1994,1995 by Ian Jackson.
# Copyright 1998-2006 by James Troup.
# I hereby give you perpetual unlimited permission to copy,
# modify and relicense this file, provided that you do not remove
# my name from the file itself.  (I assert my moral right of
# paternity under the Copyright, Designs and Patents Act 1988.)
# This file may have to be extensively modified

################################## variables #################################

#VERSION := $(shell dpkg-parsechangelog | grep ^Version: | cut -d' ' -f2)

DEB_BUILD_GNU_TYPE = $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_HOST_GNU_TYPE  = $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_ARCH    := $(shell dpkg-architecture -qDEB_BUILD_ARCH)
DEB_HOST_ARCH_OS  := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)

CONFARGS  = --prefix=/usr --libexecdir=/usr/lib/ \
            --enable-mailto --with-mailprog=/usr/sbin/sendmail \
            --enable-noexecstack --enable-large-secmem

ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
HOSTARG += --host=$(DEB_HOST_GNU_TYPE)
endif

ifneq (,$(filter $(DEB_BUILD_ARCH),ppc64 ppc64el))
CONFARGS += --disable-asm
endif

LDFLAGS += -Wl,--as-needed
LDFLAGS += `dpkg-buildflags --get LDFLAGS`

CPPFLAGS_DEF = `dpkg-buildflags --get CPPFLAGS`
CFLAGS_DEF = `dpkg-buildflags --get CFLAGS`

################################### configure ################################

auto-stamp:
	dh_testdir
	dh_autoreconf
	touch $@

build-deb/config.status: auto-stamp
	dh_testdir
	(mkdir -p $(@D); cd $(@D); \
	    ../configure LDFLAGS="$(LDFLAGS)" CPPFLAGS="$(CPPFLAGS_DEF)" CFLAGS="$(CFLAGS_DEF)" $(CONFARGS) $(HOSTARG) --without-libcurl)

build-deb-curl/config.status: auto-stamp
	dh_testdir
	(mkdir -p $(@D); cd $(@D); \
	    ../configure LDFLAGS="$(LDFLAGS)" CPPFLAGS="$(CPPFLAGS_DEF)" CFLAGS="$(CFLAGS_DEF)" $(CONFARGS) $(HOSTARG))

build-udeb/config.status: auto-stamp
	dh_testdir
	(mkdir -p $(@D); cd $(@D); CFLAGS="-g -Os" \
	    ../configure $(CONFARGS) $(HOSTARG) \
	    --without-bzip2 --without-readline --without-libcurl)

build-win32/config.status: auto-stamp
	dh_testdir
	(mkdir -p $(@D); cd $(@D); CFLAGS="-g -Os" \
	    ../configure $(CONFARGS) --host i686-w64-mingw32 \
	    --disable-gnupg-iconv --without-bzip2 --without-readline --without-libcurl --disable-ldap)

##################################### build ##################################

build-deb-stamp: build-deb/config.status
	dh_testdir
	$(MAKE) -C build-deb/
ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
	make -C build-deb/checks check || exit 1
endif
	touch $@

build-deb-curl-stamp: build-deb-curl/config.status
	dh_testdir
	$(MAKE) -C build-deb-curl/
ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
	make -C build-deb-curl/checks check || exit 1
endif
	touch $@

build-udeb-stamp: build-udeb/config.status
	dh_testdir
	$(MAKE) -C build-udeb/
	touch $@

build-win32-stamp: build-win32/config.status
	dh_testdir
	$(MAKE) -C build-win32/
	touch $@

build: build-arch
build-arch: build-deb-stamp build-deb-curl-stamp build-udeb-stamp
build-indep:

##################################### clean ##################################

clean: 
	dh_testdir
	dh_testroot
	rm -rf build-udeb/ build-deb-curl/ build-deb/ build-win32/
	# find . -name \*~ | xargs rm -vf
	dh_autoreconf_clean
	dh_clean build-deb-stamp build-deb-curl-stamp build-udeb-stamp build-win32-stamp

#################################### install #################################

install: build
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs
	$(MAKE) -C build-deb install DESTDIR=$(CURDIR)/debian/gnupg
	: # Move localized manpages to FHS compliant locations
	mv debian/gnupg/usr/share/man/man1/gpg.ru.1 debian/gnupg/usr/share/man/ru/man1/gpg.1
	: # Remove from /usr/share/gnupg what we install into /usr/share/doc/gnupg/
	$(RM) debian/gnupg/usr/share/gnupg/FAQ 
	$(RM) debian/gnupg/usr/share/info/dir*
	find debian/gnupg/ -type d -empty | xargs rmdir
	$(MAKE) -C build-deb-curl/keyserver install DESTDIR=$(CURDIR)/debian/gnupg-curl
	$(RM) debian/gnupg-curl/usr/lib/gnupg/gpgkeys_finger \
	      debian/gnupg-curl/usr/lib/gnupg/gpgkeys_ldap \
	      debian/gnupg-curl/usr/lib/gnupg/gpgkeys_mailto

#################################### binary ##################################

binary-indep: build-indep
	dh_testdir -i
	dh_testroot -i
	dh_installchangelogs -i NEWS
	dh_installdocs -i
	dh_install -i
	dh_link -i
	dh_strip -i
	dh_compress -i
	dh_fixperms -i
	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

binary-arch: build install
	dh_testdir -a
	dh_testroot -a
	dh_installchangelogs -a NEWS ChangeLog
	dh_installdocs -a
	dh_installexamples -a
	dh_movefiles -a -pgpgv --sourcedir=debian/gnupg
	dh_install -a
	dh_installinfo -a doc/gnupg1.info
	dh_installman -a
	dh_installudev -a
	if which dh_bugfiles ; then dh_bugfiles -a ; fi
	dh_link -a
	dh_strip -a
	dh_compress -a
	dh_fixperms -a
ifeq ($(DEB_HOST_ARCH_OS),kfreebsd)
	# see http://www.gnupg.org/faq.html#q6.1
	chown root:root	debian/gnupg/usr/bin/gpg
	chmod 4755	debian/gnupg/usr/bin/gpg
endif
	dh_installdeb -a
	dh_shlibdeps -a -X debian/gnupg/usr/lib/gnupg/gpgkeys_ldap -- -dRecommends $(CURDIR)/debian/gnupg/usr/lib/gnupg/gpgkeys_ldap -dDepends
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

binary: binary-indep binary-arch

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