summaryrefslogtreecommitdiff
path: root/data/xpi.mk
diff options
context:
space:
mode:
Diffstat (limited to 'data/xpi.mk')
-rw-r--r--data/xpi.mk142
1 files changed, 142 insertions, 0 deletions
diff --git a/data/xpi.mk b/data/xpi.mk
new file mode 100644
index 0000000..77b8720
--- /dev/null
+++ b/data/xpi.mk
@@ -0,0 +1,142 @@
+# -*- mode: makefile; coding: utf-8 -*-
+
+# Copyright (c) 2008-2009 Canonical Ltd.
+# Author(s): Alexander Sack <asac@ubuntu.com>
+# Fabien Tassin <fta@sofaraway.org>
+# Benjamin Drung <bdrung@debian.org>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2, or (at
+# your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+
+#
+# Usage: include this file in your CDBS debian/rules file and define the
+# following variables:
+#
+# MOZ_EXTENSION_PKG (OPTIONAL):
+# if defined the given binary package name is used to ship
+# this xpi; otherwise the first binary package listed in
+# debian/control is used
+#
+# MOZ_XPI_FILE (OPTIONAL):
+# if defined the given .xpi file is used; otherwise we try to
+# guess one using wildcard (*.xpi)
+#
+# MOZ_XPI_BUILD_COMMAND (OPTIONAL):
+# if defined the given command will be run _before_ the extension
+# gets packaged up the standard .xpi way. Thus, the build command
+# should produce an .xpi in top level directory. Note: If this
+# command is specified, MOZ_XPI_CLEAN_COMMAND (see below) will be
+# run during |clean|. If the .xpi file will not be build from
+# source, you have to set this variable to nothing.
+#
+# MOZ_XPI_CLEAN_COMMAND (OPTIONAL):
+# only has an effect if MOZ_XPI_BUILD_COMMAND (see above) is set.
+# It defaults to `rm -f *.xpi`.
+#
+# MOZ_XPI_MOZILLA_EXTRA_DIRS (OPTIONAL):
+# defines extra directories to link the extension in. Usually
+# xpi.mk creates the right links based on targetApplication
+# parsed in install.rdf; if you need more directories, use this.
+#
+# MOZ_XPI_DOCUMENTED_LICENSE_FILES (OPTIONAL):
+# defines extra license files which need to be excluded during
+# the installation of the XPI file to the packaging tree. When
+# using parameter, be sure that you documented _all_ excluded
+# license files in debian/copyright appropriately. If not defined
+# the common license file names are guessed.
+#
+# MOZ_XPI_EXT_NAME (OPTIONAL):
+# defines the name of the extension (without any prefixes like
+# mozilla- or xul-ext-). If not defined MOZ_EXTENSION_PKG with
+# stripped prefixes is used. This value is used to determine
+# xpi:Provides.
+#
+# MOZ_XPI_PRESERVE_PERMISSIONS (OPTIONAL):
+# if defined (set to 1), the permission of the installed files
+# will not be changed. If not defined or set to $(null), the
+# permission of the files will be set to 644 and the permissions
+# of scripts (files containing a shebang) will be set to 755.
+#
+# MOZ_XPI_INSTALL_DIRECTORY (OPTIONAL):
+# The xpi file will be installed in the specified directory.
+# This directory must be an absolute path. Use this parameter
+# with care.
+#
+# MOZ_XPI_DISABLE_SYSTEM_PREFS (OPTIONAL):
+# if defined (set to 1), no system preference file will be
+# created in /etc.
+#
+# Unused variables (can be removed):
+#
+# MOZ_XPI_EMID (OPTIONAL):
+# if defined the given id is used to determine the link name
+# in the Firefox extensions directory. if not defined we try
+# our best to extract the em:id from the install.rdf file shipped
+# by any xpi
+# '''Note''': this variable is not used any more
+
+MOZ_EXTENSION_PKG ?= $(strip $(shell grep ^Package: debian/control | head -n 1 | sed "s/^Package://"))
+
+MOZ_XPI_BUILD_COMMAND ?= xpi-pack $(CURDIR) $(MOZ_EXTENSION_PKG).xpi
+MOZ_XPI_CLEAN_COMMAND ?= rm -f *.xpi
+
+ifneq (,$(MOZ_XPI_FILE))
+xpi_file = $(wildcard $(MOZ_XPI_FILE))
+else
+xpi_file = $(wildcard *.xpi)
+endif
+
+ifneq (,$(MOZ_XPI_PRESERVE_PERMISSIONS))
+install_xpi_extra_parameter += --preserve-permissions
+endif
+
+ifneq (,$(MOZ_XPI_DISABLE_SYSTEM_PREFS))
+install_xpi_extra_parameter += --disable-system-prefs
+endif
+
+ifneq (,$(MOZ_XPI_INSTALL_DIRECTORY))
+install_xpi_extra_parameter += -i $(MOZ_XPI_INSTALL_DIRECTORY)
+endif
+
+ifeq ($(origin MOZ_XPI_DOCUMENTED_LICENSE_FILES),undefined)
+install_xpi_extra_parameter += --remove-license-files
+else
+install_xpi_extra_parameter += $(foreach exclude,$(MOZ_XPI_DOCUMENTED_LICENSE_FILES),-x $(exclude))
+endif
+
+install_xpi_extra_parameter += $(foreach dir,$(MOZ_XPI_MOZILLA_EXTRA_DIRS),-l $(dir))
+
+# ### cdbs hooks
+# build xpi using MOZ_XPI_BUILD_COMMAND if defined
+build/$(MOZ_EXTENSION_PKG)::
+ifneq (,$(MOZ_XPI_BUILD_COMMAND))
+ $(MOZ_XPI_BUILD_COMMAND)
+endif
+
+install/$(MOZ_EXTENSION_PKG):: xpi-install
+
+xpi-install:
+ install-xpi -p$(MOZ_EXTENSION_PKG) $(xpi_file) $(install_xpi_extra_parameter)
+ dh_xul-ext -p$(MOZ_EXTENSION_PKG)
+
+# clean build and remove all .xpi in top-level if a MOZ_XPI_BUILD_COMMAND is defined
+ifneq (,$(MOZ_XPI_BUILD_COMMAND))
+clean::
+ dh_testdir
+ dh_clean
+ $(MOZ_XPI_CLEAN_COMMAND)
+endif
+
+.PHONY: clean xpi-install