# ***** 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 . # Portions created by the Initial Developer are Copyright (C) 2007 # the Initial Developer. All Rights Reserved. # # Contributor(s): # Mark Finkle # Ben Combee # # 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 ifdef MOZ_ENABLE_LIBXUL MOZ_PKG_MANIFEST_P = $(srcdir)/package-manifest.in else define message You need to build with --enable-libxul (the default, unless you specify --disable-libxul or --enable-shared or --enable-debug) to package a build. endef default libs installer:: $(error $(message)) endif 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 libs:: find $(DIST)/bin/chrome -type f -name *.dtd -exec sed -i '//d' {} \; find $(DIST)/bin/chrome -type f -name *.dtd -exec sed -i '//d' {} \; find $(DIST)/bin/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) $(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 $(MOZILLA_VERSION).$(MOZ_APP_NAME).conf: $(topsrcdir)/config/milestone.txt Makefile printf "[%s]\nGRE_PATH=%s\nxulrunner=true\nabi=%s" \ $(MOZILLA_VERSION) $(installdir)/xulrunner $(TARGET_XPCOM_ABI)> $@ # to register xulrunner per-user, override this with $HOME/.gre.d regdir = /etc/gre.d 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 \ $(MOZILLA_VERSION).$(MOZ_APP_NAME).conf rm -rf $(DEBDESTDIR)/$(installdir)/* $(NSINSTALL) -D $(DEBDESTDIR)/$(installdir) cp -pRL $(DIST)/$(MOZ_APP_NAME)/* $(DEBDESTDIR)/$(installdir) $(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 $(NSINSTALL) -D $(DEBDESTDIR)$(regdir) $(SYSINSTALL) $(MOZILLA_VERSION).$(MOZ_APP_NAME).conf $(DEBDESTDIR)$(regdir)/ dh_link; fakeroot dh_fixperms; fakeroot dh_installdeb; dh_shlibdeps; fakeroot dh_gencontrol; fakeroot dh_md5sums; dh_builddeb echo $(DEB_PKG_NAME) > $(DIST)/deb_name.txt installer: deb @echo Installer DEB created! # relative to $(DIST) UPLOAD_EXTRA_FILES += ../mobile/$(DEB_PKG_NAME) endif ifeq ($(OS_ARCH),WINCE) VSINSTALLDIR ?= $(error VSINSTALLDIR not set, must be set to the Visual Studio install directory) UNPACKAGE = $(LIBXUL_DIST)/xulrunner*$(PKG_SUFFIX) cab: stage-package package-xulrunner cd $(DIST) && $(PYTHON) $(ABS_TOPSRCDIR)/build/package/wince/make_wince_cab.py $(CABARGS) "$(VSINSTALLDIR)/SmartDevices/SDK/SDKTools/cabwiz.exe" "$(MOZ_PKG_DIR)" "$(MOZ_APP_DISPLAYNAME)" "$(PKG_PATH)$(PKG_BASENAME).cab" && echo "Installer $(PKG_PATH)$(PKG_BASENAME).cab created!" installer: 7zip-installer zip zip: cd $(DIST) && $(ZIP) -r9D $(PACKAGE) $(MOZ_PKG_DIR) 7zip-installer: stage-package package-xulrunner $(NSINSTALL) -D $(DIST)/$(PKG_PATH) cd $(DIST) && $(PYTHON) $(ABS_TOPSRCDIR)/build/package/wince/make_wince_cab.py -setupdll -s "$(VSINSTALLDIR)/SmartDevices/SDK/SDKTools/cabwiz.exe" "$(MOZ_PKG_DIR)" "$(MOZ_APP_DISPLAYNAME)" "$(MOZ_PKG_DIR)/setup.cab" $(NSINSTALL) $(DIST)/$(MOZ_PKG_DIR)/setup.ini $(DIST) ifdef LIBXUL_SDK mv $(DIST)/$(MOZ_GRE_PKG_DIR)/uninstall.exe $(DIST)/$(MOZ_PKG_DIR)/ endif cd $(DIST) && \ 7z a $(PKG_PATH)$(PKG_BASENAME).7z $(MOZ_PKG_DIR) setup.ini \ -x!$(MOZ_GRE_PKG_DIR)/xulrunner-stub-installer.sfx \ -x!$(MOZ_PKG_DIR)/setup.ini && \ cat $(MOZ_GRE_PKG_DIR)/xulrunner-stub-installer.sfx \ $(PKG_PATH)$(PKG_BASENAME).7z>$(PKG_PATH)$(PKG_BASENAME).exe && \ rm $(PKG_PATH)$(PKG_BASENAME).7z && \ rm setup.ini endif