#!/usr/bin/make -f

# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_BUILD_ARCH     ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH)

DEBIAN_NAME       = prism
DEBIAN_XUL_VER   := $(shell xulrunner-1.9.2 --gre-version)
DEBIAN_XUL_DEV   := /usr/lib/xulrunner-devel-$(DEBIAN_XUL_VER)
DEBIAN_PRISM_VER  = $(shell grep ^MOZ_APP_VERSION= prism/confvars.sh | cut -d= -f2)
DEBIAN_PRISM_DIR  = usr/lib/prism-$(DEBIAN_PRISM_VER)

DEB_AUTO_UPDATE_AUTOCONF = 2.13

MOZCLIENT_PROJECTNAME   := $(DEBIAN_NAME)
MOZCLIENT_PROJECTDIR    := $(CURDIR)/debian/mozclient
MOZ_XPI_BUILD_COMMAND	:= $(NULL)

include /usr/share/cdbs/1/rules/patchsys-quilt.mk
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/autotools.mk
include $(CURDIR)/debian/mozclient/$(DEBIAN_NAME).mk
include /usr/share/mozilla-devscripts/xpi.mk

DEB_CONFIGURE_USER_FLAGS = \
        --with-libxul-sdk=$(DEBIAN_XUL_DEV) \
        --enable-application=prism \
        --with-system-libxul \
        --with-system-nspr \
        --with-system-nss \
        --disable-debug \
        --disable-crashreporter \
        --with-distribution-id=com.ubuntu \
	$(NULL)

WEBAPPS = \
	"facebook@facebook@Facebook@http://www.facebook.com/@GTK;Network;" \
	"google-analytics@ganalytics@Google~Analytics@http://analytics.google.com/@GTK;Network;" \
	"google-calendar@gcalendar@Google~Calendar@https://www.google.com/calendar@GTK;Office;Calendar;" \
	"google-docs@gdocs@Google~Docs@https://docs.google.com/@GTK;Office;Spreadsheet;WordProcessor;" \
	"google-mail@gmail@Google~Mail~\(GMail\)@https://mail.google.com/@GTK;Network;Email;" \
	"google-reader@greader@Google~Reader@https://www.google.com/reader@GTK;Network;News;" \
	"google-groups@groups@Google~Groups@http://groups.google.com/groups/favorites@GTK;Network;News;" \
	"google-talk@gtalk@Google~Talk@http://talkgadget.google.com/talkgadget/popout@GTK;Network;InstantMessaging;" \
	"twitter@twitter@twitter@http://www.twitter.com/@GTK;Network;" \
	"qq@qq@QQ@http://web2.qq.com;" \
	$(NULL)

ALL_WEBAPPS = $(shell echo $(WEBAPPS) | sed -e 's/\([^@]*\)@[^ ]*\( *\)/\1\2/g')

clean::
	rm -rf testing tools
	rm -rf prism/install/profiles/qq.webapp

build/prism::
	cp -f debian/webapp/qq.webapp prism/install/profiles/
	cp -f dist/xpi-stage/refractor.xpi .

binary-install/prism::
	mv debian/tmp/usr/bin/prism debian/tmp/usr/bin/prism-bin
	install -m 755 debian/prism.sh debian/tmp/usr/bin/prism
	dh_install -pprism debian/tmp/usr/bin

	dh_installdirs -pprism usr/lib/prism-addons/extensions
	dh_link -pprism usr/lib/prism-addons/extensions $(DEBIAN_PRISM_DIR)/extensions
	dh_link -pprism $(DEBIAN_PRISM_DIR) /usr/share/prism/prism
	# Icons
	install -m 644 debian/tmp/$(DEBIAN_PRISM_DIR)/chrome/icons/default/install-shortcut48.png \
	               debian/tmp/$(DEBIAN_PRISM_DIR)/chrome/icons/default/app.png
	install -d -m 755 debian/tmp/usr/share/pixmaps
	install -m 644 debian/tmp/$(DEBIAN_PRISM_DIR)/chrome/icons/default/install-shortcut48.png \
	               debian/tmp/usr/share/pixmaps/prism.png
	dh_install -pprism debian/tmp/usr/share/pixmaps/prism.png
	for size in 48 ; do \
	 install -d -m 755 debian/tmp/usr/share/icons/gnome/$${size}x$${size}/mimetypes ; \
	 install -m 644 debian/tmp/$(DEBIAN_PRISM_DIR)/chrome/icons/default/install-shortcut$$size.png \
			debian/tmp/usr/share/icons/gnome/$${size}x$${size}/mimetypes/gnome-mime-application-vnd.mozilla.webapp.png ; \
	done
	dh_install -pprism debian/tmp/usr/share/icons

	touch debian/prism/$(DEBIAN_PRISM_DIR)/.autoreg

$(patsubst %,build/prism-%,$(ALL_WEBAPPS)):: WEBAPP = $(subst build/prism-,,$@)
$(patsubst %,build/prism-%,$(ALL_WEBAPPS)):: LINE   = $(filter "$(WEBAPP)%",$(WEBAPPS))
$(patsubst %,build/prism-%,$(ALL_WEBAPPS)):: APP    = $(firstword $(subst @, ,$(subst "$(WEBAPP)@,,$(LINE))))
$(patsubst %,build/prism-%,$(ALL_WEBAPPS))::
	install -d -m 755 debian/tmp/usr/share/prism/apps
	install -m 644 prism/install/profiles/$(APP).webapp debian/tmp/usr/share/prism/apps
	install -d -m 755 debian/tmp/usr/share/applications
	install -m 644 debian/prism-$(WEBAPP).desktop debian/tmp/usr/share/applications
	# Fetch the xpm icon from the webapp and turn it into a png for the desktop file
	cd debian && unzip tmp/usr/share/prism/apps/$(APP).webapp $(APP).xpm || test $$? = 11
	if [ -e debian/$(APP).xpm ] ; then \
	  convert debian/$(APP).xpm debian/$(APP).png ; \
	  ( cd debian ; zip tmp/usr/share/prism/apps/$(APP).webapp $(APP).png ) ; \
	  mv debian/$(APP).png debian/prism-$(WEBAPP).png ; \
	  rm -f debian/$(APP).xpm ; \
	else \
	  cp dist/bin/chrome/icons/default/install-shortcut48.png debian/prism-$(WEBAPP).png ; \
	fi
	install -d -m 755 debian/tmp/usr/share/pixmaps
	install -m 644 debian/prism-$(WEBAPP).png debian/tmp/usr/share/pixmaps
	# Fix webapp.ini if there's no 'name' field
	cd debian && unzip tmp/usr/share/prism/apps/$(APP).webapp webapp.ini
	if [ -e debian/webapp.ini ] && [ `grep -c ^name= debian/webapp.ini` -eq 0 ] ; then \
	  perl -i -pe 's/^(id=.*)/$$1\nname=$(APP)/' debian/webapp.ini ; \
	  ( cd debian ; zip -u tmp/usr/share/prism/apps/$(APP).webapp webapp.ini ) ; \
	  rm -f debian/webapp.ini ; \
	fi
	# Add an override.ini file if it's missing
	cd debian && unzip tmp/usr/share/prism/apps/$(APP).webapp override.ini || test $$? = 11
	if [ ! -e debian/override.ini ] ; then \
	  echo "[App]\nVendor=Prism\nName=$(APP)" > debian/override.ini ; \
	  ( cd debian ; zip -u tmp/usr/share/prism/apps/$(APP).webapp override.ini ) ; \
	  rm -f debian/override.ini ; \
	fi

clean::
	rm -f debian/prism-*.png
	rm -f refractor.xpi
	find -type f \( -name '*.a' -o -name '*.o' -o -name '*.xpt' -o -name Makefile -o -name '*.so' \) -delete
	rm -rf _leaktest
	rm -rf prism/components/public/.deps prism/components/public/_xpidlgen
	rm -rf prism/components/src/.deps
