mobile/installer/Makefile.in
author Ehsan Akhgari <ehsan@mozilla.com>
Wed, 10 Aug 2011 01:36:00 -0400
changeset 74937 89bbee4ec270fadde04578b2b8765a588535e0fc
parent 74917 838b538e5b4a5ee97912957d2f1100dc785620b2
child 75125 56eaf58dc5fba57e88eb8991cafd1abb19ef17f3
permissions -rw-r--r--
Bug 677661 - Remove nsTPtrArray and add a SafeElementAt(index_type) API to nsTArray when it's instantiated with a pointer type; r=sicking

# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
#
# The Original Code is Mozilla.
#
# The Initial Developer of the Original Code is
# the Mozilla Foundation <http://www.mozilla.org/>.
# Portions created by the Initial Developer are Copyright (C) 2007
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#   Mark Finkle <mfinkle@mozilla.com>
#   Ben Combee <bcombee@mozilla.com>
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****

DEPTH     = ../..
topsrcdir = @top_srcdir@
srcdir    = @srcdir@
VPATH     = @srcdir@

include $(DEPTH)/config/autoconf.mk

# overwrite mobile-l10n.js with a matchOS=true one for multi-locale builds
ifeq ($(AB_CD),multi)
PREF_JS_EXPORTS = $(srcdir)/mobile-l10n.js
endif

include $(topsrcdir)/config/rules.mk

MOZ_PKG_REMOVALS = $(srcdir)/removed-files.in

MOZ_PKG_MANIFEST_P = $(srcdir)/package-manifest.in

MOZ_NONLOCALIZED_PKG_LIST = \
	xpcom \
	browser \
	mobile \
	$(NULL)

MOZ_LOCALIZED_PKG_LIST = $(AB_CD) multilocale

DEFINES += \
	-DAB_CD=$(AB_CD) \
	-DMOZ_APP_NAME=$(MOZ_APP_NAME) \
	-DPREF_DIR=$(PREF_DIR) \
	$(NULL)

ifeq ($(MOZ_CHROME_FILE_FORMAT),jar)
JAREXT=.jar
else
JAREXT=
endif
DEFINES += -DJAREXT=$(JAREXT)

include $(topsrcdir)/ipc/app/defs.mk
DEFINES += -DMOZ_CHILD_PROCESS_NAME=$(MOZ_CHILD_PROCESS_NAME)

ifdef MOZ_PKG_MANIFEST_P
MOZ_PKG_MANIFEST = package-manifest
endif

MOZ_POST_STAGING_CMD = find chrome -type f -name *.properties -exec sed -i '/^\#/d' {} \;

include $(topsrcdir)/toolkit/mozapps/installer/packager.mk

ifeq (bundle, $(MOZ_FS_LAYOUT))
BINPATH = $(_BINPATH)
DEFINES += -DAPPNAME=$(_APPNAME)
else
# Every other platform just winds up in dist/bin
BINPATH = bin
endif
DEFINES += -DBINPATH=$(BINPATH)

ifdef MOZ_PKG_MANIFEST_P
$(MOZ_PKG_MANIFEST): $(MOZ_PKG_MANIFEST_P) FORCE
	$(PYTHON) $(topsrcdir)/config/Preprocessor.py $(DEFINES) $(ACDEFINES) $< > $@
ifdef MOZ_CHROME_MULTILOCALE
	printf "\n[multilocale]\n" >> $@
	for LOCALE in en-US $(MOZ_CHROME_MULTILOCALE) ;\
	do \
	  printf "$(BINPATH)/chrome/$$LOCALE$(JAREXT)\n" >> $@; \
	  printf "$(BINPATH)/chrome/$$LOCALE.manifest\n" >> $@; \
	done
endif

GARBAGE += $(MOZ_PKG_MANIFEST)
endif

ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
PACKAGE_XULRUNNER =
UNPACKAGE =
else
PACKAGE_XULRUNNER = package-xulrunner
UNPACKAGE = $(LIBXUL_DIST)/xulrunner*$(PKG_SUFFIX)
endif

ifdef LIBXUL_SDK
MOZ_GRE_PKG_DIR=$(MOZ_PKG_DIR)/xulrunner
else
MOZ_GRE_PKG_DIR=$(MOZ_PKG_DIR)
endif

package-xulrunner:
ifdef LIBXUL_SDK
ifndef SYSTEM_LIBXUL
	@echo "Packaging xulrunner..."
	@rm -rf $(LIBXUL_DIST)/xulrunner*
	@$(MAKE) -C $(LIBXUL_DIST)/.. package || echo "Perhaps you're trying to package a prebuilt SDK. See 'https://wiki.mozilla.org/Mobile/Build/Fennec#Build' for more information."
	@cd $(DIST)/$(MOZ_PKG_DIR); $(UNMAKE_PACKAGE)
	@echo "Removing unpackaged files... (the ones xulrunner/installer keeps)"
	@cd $(DIST)/$(MOZ_PKG_DIR)/xulrunner; rm -rf $(NO_PKG_FILES)
else
	@echo "Using system xulrunner..."
endif
endif

ifeq ($(OS_TARGET),Linux)
GRE_MILESTONE = $(shell $(PYTHON) $(topsrcdir)/config/printconfigsetting.py $(LIBXUL_DIST)/bin/platform.ini Build Milestone)
GRE_BUILDID = $(shell $(PYTHON) $(topsrcdir)/config/printconfigsetting.py $(LIBXUL_DIST)/bin/platform.ini Build BuildID)
ABS_OBJDIR=`cd $(DEPTH); pwd`
ABS_TOPSRCDIR=$(shell cd $(topsrcdir); pwd)
BASE64_ICON = dist/branding/fennec_maemo_icon26.txt
MOZ_DEB_TIMESTAMP = "$(shell date  +"%a, %d  %b %Y %T %z" )"

DEB_PKG_VERSION = $(shell echo $(MOZ_APP_VERSION) | $(PERL) -pe 's/pre/~$(GRE_BUILDID)/; s/^([0-9.]+)([a-z][0-9]+)/$$1~$$2/')

DEB_BUILD_ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH)
# package name should match mobile/installer/debian/changelog.in
DEB_PKG_NAME = $(MOZ_PKG_APPNAME)_$(DEB_PKG_VERSION)_$(DEB_BUILD_ARCH).deb

DEFINES += \
	-DGRE_MILESTONE=$(GRE_MILESTONE) \
	-DGRE_BUILDID=$(GRE_BUILDID) \
	-Dinstalldir=$(installdir) \
	-DMOZ_APP_DISPLAYNAME="$(MOZ_APP_DISPLAYNAME)" \
	-DMOZ_APP_VERSION=$(MOZ_APP_VERSION) \
	-DABS_OBJDIR=$(ABS_OBJDIR) \
	-DBASE64_ICON=$(BASE64_ICON) \
	-DMOZ_DEB_TIMESTAMP=$(MOZ_DEB_TIMESTAMP) \
	-DDEB_PKG_VERSION=$(DEB_PKG_VERSION) \
	$(NULL)

DEBDESTDIR=debian/$(MOZ_APP_NAME)

PP_DEB_FILES =	debian/control \
		debian/changelog \
		debian/$(MOZ_APP_NAME).desktop \
		debian/$(MOZ_APP_NAME).links \
		debian/$(MOZ_APP_NAME).service \
		debian/compat \
		debian/files \
		debian/menu \
		debian/fennec.preinst \
		debian/fennec.prerm \
		debian/fennec.postinst \
		$(NULL)

ifdef MOZ_ENABLE_CONTENTMANAGER
PP_DEB_FILES += debian/fennec.aegis \
               $(NULL)
endif

$(PP_DEB_FILES):
	@$(EXIT_ON_ERROR) \
	for f in $(PP_DEB_FILES); do \
           src=$(srcdir)/debian/`basename $$f`.in; \
	   echo $$src ">" $$f ;\
           $(RM) -f $$f; \
           mkdir -p debian;  \
           $(PYTHON) $(topsrcdir)/config/Preprocessor.py \
             $(AUTOMATION_PPARGS) $(DEFINES) $(ACDEFINES) $$src > $$f; \
         done

deb: $(PP_DEB_FILES) $(DIST)/branding/$(MOZ_APP_NAME)_scalable.png \
	$(DIST)/branding/$(MOZ_APP_NAME)_26x26.png \
	$(DIST)/branding/$(MOZ_APP_NAME)_40x40.png
	rm -rf $(DEBDESTDIR)/$(installdir)/*
	$(NSINSTALL) -D $(DEBDESTDIR)/$(installdir)
	cp -pRL $(DIST)/$(MOZ_APP_NAME)/* $(DEBDESTDIR)/$(installdir)
ifeq ($(MOZ_PLATFORM_MAEMO),6)
	$(NSINSTALL)  debian/$(MOZ_APP_NAME).desktop $(DEBDESTDIR)/usr/share/applications/
	$(NSINSTALL) -D $(DEBDESTDIR)/usr/share/dbus-1/services/
	cp debian/$(MOZ_APP_NAME).service $(DEBDESTDIR)/usr/share/dbus-1/services/org.mozilla.$(MOZ_APP_NAME).service
	$(NSINSTALL) -D $(DEBDESTDIR)/usr/share/themes/blanco/meegotouch/icons/
	cp $(DIST)/branding/$(MOZ_APP_NAME)_scalable.png $(DEBDESTDIR)/usr/share/themes/blanco/meegotouch/icons/$(MOZ_APP_NAME).png
else
	$(NSINSTALL)  debian/$(MOZ_APP_NAME).desktop $(DEBDESTDIR)/usr/share/applications/hildon/
	$(NSINSTALL) -D $(DEBDESTDIR)/usr/share/dbus-1/services/
	cp debian/$(MOZ_APP_NAME).service $(DEBDESTDIR)/usr/share/dbus-1/services/org.mozilla.$(MOZ_APP_NAME).service
	$(NSINSTALL) -D $(DEBDESTDIR)/usr/share/icons/hicolor/scalable/hildon/
	cp $(DIST)/branding/$(MOZ_APP_NAME)_scalable.png $(DEBDESTDIR)/usr/share/icons/hicolor/scalable/hildon/$(MOZ_APP_NAME).png
	$(NSINSTALL) -D $(DEBDESTDIR)/usr/share/icons/hicolor/26x26/hildon/
	cp $(DIST)/branding/$(MOZ_APP_NAME)_26x26.png $(DEBDESTDIR)/usr/share/icons/hicolor/26x26/hildon/$(MOZ_APP_NAME).png
	$(NSINSTALL) -D $(DEBDESTDIR)/usr/share/icons/hicolor/40x40/hildon/
	cp $(DIST)/branding/$(MOZ_APP_NAME)_40x40.png $(DEBDESTDIR)/usr/share/icons/hicolor/40x40/hildon/$(MOZ_APP_NAME).png
endif
	fakeroot dh_link; fakeroot dh_fixperms; fakeroot dh_installdeb; fakeroot dh_shlibdeps; fakeroot dh_gencontrol; fakeroot dh_md5sums; fakeroot dh_builddeb;

# a defined CONTENTMANAGER implicitly means MOZ_PLATFORM_MAEMO is equals 6
# in case you use CONTENTMANGER you need to sign your package to gain tracker access.
ifdef MOZ_ENABLE_CONTENTMANAGER
	if test -e "/usr/bin/aegis-deb-add"; then \
	   fakeroot aegis-deb-add -control $(DEBDESTDIR)/DEBIAN/control .. debian/fennec.aegis=_aegis; \
	else \
	   echo aegis-builder not found, security signing failed!; \
	fi
endif

	echo $(DEB_PKG_NAME) > $(DIST)/deb_name.txt

installer: deb
	@echo Installer DEB created!

# relative to $(DIST)
UPLOAD_EXTRA_FILES += ../mobile/$(DEB_PKG_NAME) deb_name.txt
endif