#!/usr/bin/make -f

export BUILD_OFFICIAL=1
export INSTALL_SDK=1
export MAIL_PKG_SHARED=1

DEB_MOZ_NAME=icedove
DEB_MOZ_APPLICATION=$(DEB_MOZ_NAME)
MOZ_APPLICATION=mail
XUL_VERSION=1.9.1
MAIN_LDFLAGS := -Wl,--as-needed

ifeq ($(DEB_MOZ_NAME),icedove)
  DEBIAN_DIST := org.debian
  EXTRA_BRANDING_CONFIGURE_FLAGS = --with-branding=${MOZ_APPLICATION}/branding/$(DEB_MOZ_NAME)/
  TB_ICON = debian/icedove.xpm
  DEB_MOZ_NAME_FIRST_UPPER=Icedove
else
  DEBIAN_DIST := com.ubuntu
  TB_ICON = $(DEB_SRCDIR)/other-licenses/branding/thunderbird/content/icon64.png
  DEB_MOZ_NAME_FIRST_UPPER=Thunderbird
endif

ifeq ($(XUL_VERSION),1.9.1)
  TB_VERSION_FILE := version-191.txt
else
  TB_VERSION_FILE := version.txt
endif

DEBIAN_TB_DIR   = /usr/lib/$(DEB_MOZ_NAME)
DEBIAN_XUL_DEV := $(wildcard /usr/lib/xulrunner-devel-1.9*)

MOZCLIENT_PROJECTNAME   := $(DEB_MOZ_APPLICATION)
MOZCLIENT_PROJECTDIR    := $(CURDIR)/debian/mozclient

DEB_SRCDIR		:= .
# DEB_BUILDDIR		:= objdir-tb

EXTRA_SYSTEM_CONFIGURE_FLAGS = $(NULL)

USE_SYSTEM_XUL := 0

ifeq (1,$(USE_SYSTEM_XUL))
   EXTRA_SYSTEM_CONFIGURE_FLAGS += --with-libxul-sdk=$(DEBIAN_XUL_DEV)
endif

DEB_AUTO_UPDATE_AUTOCONF=2.13

include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/autotools.mk
include $(CURDIR)/debian/mozclient/$(DEB_MOZ_APPLICATION).mk

DEB_AUTO_UPDATE_DEBIAN_CONTROL=0

DEB_MOZ_EXTENSIONS=default
DEB_DBG_PACKAGES = $(DEB_MOZ_NAME)-dbg

DEB_DH_SHLIBDEPS_ARGS_ALL=-l $(DEB_DESTDIR)usr/lib/$(DEB_MOZ_APPLICATION) -Xlibmozgnome -Xlibdbusservice

DEB_DH_MAKESHLIBS_ARGS_ALL=-Xlibsystem-pref.so

# DEB_CONFIGURE_SCRIPT_ENV = \
# 	MOZ_OBJDIR=@TOPSRCDIR@/$(DEB_BUILDDIR) \
# 	$(NULL)

DEB_CONFIGURE_USER_FLAGS= \
	$(EXTRA_SYSTEM_CONFIGURE_FLAGS) \
	--enable-application=$(MOZ_APPLICATION) \
	--enable-extensions=$(DEB_MOZ_EXTENSIONS) \
	--enable-calendar \
	--with-default-mozilla-five-home=$(DEBIAN_TB_DIR) \
	--enable-startup-notification \
	--with-user-appdir=.mozilla \
	--with-system-jpeg=/usr \
	--with-system-zlib=/usr \
	--with-system-bz2 \
	--with-system-libvpx \
	--with-system-libevent \
	--with-system-nspr \
	--with-system-nss \
	--with-system-ply \
	--disable-javaxpcom \
	--disable-crashreporter \
	--disable-elf-dynstr-gc \
	--disable-installer \
	--disable-strip \
	--disable-strip-libs \
	--disable-install-strip \
	--disable-tests \
	--disable-mochitest \
	--disable-updater \
	--disable-gnomevfs \
	--enable-pango \
	--enable-xft \
	--enable-xinerama \
	--enable-svg \
	--enable-svg-renderer=cairo \
	--enable-gnomeui \
	--enable-gio \
	--enable-canvas \
	--enable-crypto \
	--enable-shared-js \
	--enable-system-cairo \
	--enable-system-sqlite \
	--enable-system-ffi \
	--enable-system-hunspell \
	--enable-readline \
	--with-distribution-id=$(DEBIAN_DIST) \
	--build=$(DEB_BUILD_GNU_TYPE) \
	--host=$(DEB_HOST_GNU_TYPE) \
	$(EXTRA_BRANDING_CONFIGURE_FLAGS) \
	$(NULL)

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
	DEB_CONFIGURE_USER_FLAGS += --disable-optimize
else
	DEB_CONFIGURE_USER_FLAGS += --enable-optimize
endif

ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
	DEB_CONFIGURE_USER_FLAGS += --enable-debug
endif

ifneq (,$(filter kfreebsd-% hurd-%,$(DEB_BUILD_ARCH)))
	DEB_CONFIGURE_USER_FLAGS += --disable-necko-wifi
endif

ifeq ($(DEB_BUILD_ARCH),alpha)
	MAIN_LDFLAGS += -Wl,--no-relax
endif

ifeq ($(DEB_BUILD_ARCH),ia64)
	DEB_CONFIGURE_USER_FLAGS += --enable-optimize=-O2
endif

ifeq ($(DEB_BUILD_ARCH),armel)
	DEB_CONFIGURE_USER_FLAGS += --disable-methodjit
endif

ifeq ($(DEB_BUILD_ARCH),sparc)
	DEB_CONFIGURE_USER_FLAGS += --enable-optimize=-O1
endif

subst_files = \
	debian/$(DEB_MOZ_APPLICATION).postinst \
	debian/$(DEB_MOZ_APPLICATION).postrm \
	debian/$(DEB_MOZ_APPLICATION).preinst \
	debian/$(DEB_MOZ_APPLICATION).prerm \
	debian/$(DEB_MOZ_APPLICATION).install \
	debian/$(DEB_MOZ_APPLICATION)-dev.install \
	debian/$(DEB_MOZ_APPLICATION)-dev.links \
	debian/$(DEB_MOZ_APPLICATION).links \
	debian/$(DEB_MOZ_APPLICATION).menu \
	debian/$(DEB_MOZ_APPLICATION).desktop \
	debian/$(DEB_MOZ_APPLICATION).pc \
	$(NULL)

$(DEB_MOZ_APPLICATION)%: thunderbird%.in
	sed -e 's,@LIBDIR@,$(DEBIAN_TB_DIR),g' \
	    -e 's,@DEB_MOZ_APPLICATION@,$(DEB_MOZ_APPLICATION),g' \
		-e 's,@DEB_MOZ_NAME_FIRST_UPPER@,$(DEB_MOZ_NAME_FIRST_UPPER),g' \
	       < $< > $@

pre-build:: $(subst_files)

configure/$(DEB_MOZ_APPLICATION)::
	sed -i '/^OS_LDFLAGS/s|=|& $(MAIN_LDFLAGS)|' config/autoconf.mk mozilla/config/autoconf.mk mozilla/js/src/config/autoconf.mk ldap/sdks/c-sdk/config/autoconf.mk
# Ensure --{with,enable}-system options properly set expected variables
# according to the definitions in the mozconfig file.
	@awk -F' *# *| *$$' ' \
	BEGIN { "find $(CURDIR)/mozilla -name autoconf.mk -printf \"%p \"" | getline confs } \
	$$1 ~ /system/ { \
		if (! $$2) { \
			print FILENAME ": Missing variable for",$$1; \
			error=1; \
		} else { \
			split($$2,var,"="); \
			cmd = "grep -l " var[1] " " confs; \
			cmd | getline dir; \
			sub(/\/[^\/]*$$/, "", dir); \
			cmd = "$(MAKE) -C " dir " --no-print-directory echo-variable-" var[1]; \
			cmd | getline value; \
			if (value != var[2]) { print $$1, "triggered", var[1] "=" value,"instead of",$$2; error=1 } \
		} \
	} \
	END { if (error) { exit 1 }}' debian/icedove.configopts

makebuilddir/$(DEB_MOZ_APPLICATION):: debian/stamp-autotools-files-moz
debian/stamp-autotools-files-moz:
	if [ "Z$(DEB_AUTO_UPDATE_AUTOCONF)" != Z ] || [ ! -e $(DEB_SRCDIR)/mozilla/configure ]; \
	then cd $(DEB_SRCDIR)/mozilla && `which autoconf$(DEB_AUTO_UPDATE_AUTOCONF) || which autoconf`; fi
	if [ "Z$(DEB_AUTO_UPDATE_AUTOCONF)" != Z ] || [ ! -e $(DEB_SRCDIR)/mozilla/js/src/configure ]; \
	then cd $(DEB_SRCDIR)/mozilla/js/src && `which autoconf$(DEB_AUTO_UPDATE_AUTOCONF) || which autoconf`; fi
	if [ "Z$(DEB_AUTO_UPDATE_AUTOCONF)" != Z ] || [ ! -e $(DEB_SRCDIR)/ldap/sdks/c-sdk/configure ]; \
	then cd $(DEB_SRCDIR)/ldap/sdks/c-sdk && `which autoconf$(DEB_AUTO_UPDATE_AUTOCONF) || which autoconf`; fi
	touch $@

install/$(DEB_MOZ_APPLICATION)::
	install -d -m 755 debian/tmp/usr/share/pixmaps
	install -m 644 $(TB_ICON) debian/tmp/usr/share/pixmaps/$(DEB_MOZ_APPLICATION).xpm
ifeq ($(DEB_MOZ_NAME),icedove)
# Install icons
	install -d -m 755 debian/icedove/usr/share/icons/hicolor/16x16/apps
	install -m 644 debian/app-icons/icedove16.png \
		debian/icedove/usr/share/icons/hicolor/16x16/apps/icedove.png
	install -d -m 755 debian/icedove/usr/share/icons/hicolor/32x32/apps
	install -m 644 debian/app-icons/icedove32.png \
		debian/icedove/usr/share/icons/hicolor/32x32/apps/icedove.png
	install -d -m 755 debian/icedove/usr/share/icons/hicolor/64x64/apps
	install -m 644 debian/app-icons/icedove64.png \
		debian/icedove/usr/share/icons/hicolor/64x64/apps/icedove.png
	install -d -m 755 debian/icedove/usr/share/icons/hicolor/128x128/apps
	install -m 644 debian/app-icons/icedove128.png \
		debian/icedove/usr/share/icons/hicolor/128x128/apps/icedove.png
	install -d -m 755 debian/icedove/usr/share/icons/hicolor/scalable/apps
	install -m 644 debian/app-icons/icedovebig.svg \
		debian/icedove/usr/share/icons/hicolor/scalable/apps/icedove.svg
endif
# remove duplicate .so files in dev package
	rm debian/tmp/usr/lib/icedove-devel/sdk/lib/libmozalloc.so
	rm debian/tmp/usr/lib/icedove-devel/sdk/lib/libmozjs.so
	rm debian/tmp/usr/lib/icedove-devel/sdk/lib/libxpcom.so
	rm debian/tmp/usr/lib/icedove-devel/sdk/lib/libxul.so

install/$(DEB_MOZ_APPLICATION)-dev::
	find debian/tmp/usr/share/idl/icedove -type f -name '*.idl' -exec chmod a-x {} \;

binary-install/$(DEB_MOZ_APPLICATION)::
	touch debian/$(DEB_MOZ_NAME)$(DEBIAN_TB_DIR)/.autoreg
	dh_install -p$(DEB_MOZ_APPLICATION) debian/tmp/usr/share/pixmaps/$(DEB_MOZ_APPLICATION).xpm usr/share/pixmaps
	dh_link -p$(DEB_MOZ_APPLICATION) $(DEBIAN_TB_DIR)/$(DEB_MOZ_APPLICATION) usr/bin/$(DEB_MOZ_APPLICATION)

common-install-arch::
	set -e; mkdir -p debian/iceowl-extension/usr/lib/iceowl-extension \
		debian/calendar-google-provider/usr/lib/calendar-google-provider \
		debian/calendar-timezones/usr/lib/calendar-timezones; \
		sh -c "set -e; cd debian/iceowl-extension/usr/lib/iceowl-extension/; unzip $(CURDIR)/mozilla/dist/xpi-stage/lightning.xpi"; \
		sh -c "set -e; cd debian/calendar-google-provider/usr/lib/calendar-google-provider/; unzip $(CURDIR)/mozilla/dist/xpi-stage/gdata-provider.xpi"; \
		sh -c "set -e; cd debian/calendar-timezones/usr/lib/calendar-timezones/; unzip $(CURDIR)/mozilla/dist/xpi-stage/calendar-timezones.xpi"

binary-predeb/$(DEB_MOZ_APPLICATION)::
	LD_LIBRARY_PATH=$(DEB_DESTDIR)usr/lib/$(DEB_MOZ_APPLICATION) dpkg-shlibdeps -Tdebian/$(DEB_MOZ_APPLICATION).substvars -dDepends -pgnome $(foreach lib,dbusservice mozgnome,debian/$(DEB_MOZ_APPLICATION)/usr/lib/$(DEB_MOZ_APPLICATION)/components/lib$(lib).so)

clean::
	rm -f debian/stamp-autotools-files-moz debian/stamp-icedove-branding
