summaryrefslogtreecommitdiff
path: root/src/xpi.mk
blob: a929c45df8ae6996ac7fdf1326dc25308c365aab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# -*- 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@ubuntu.com>
#
# 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, all .xpi files in the top level directory
#                will be removed during |clean|. If the .xpi file will not be
#                build from source, you have to set this variable to nothing.
#
#        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.
#
#        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

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

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)
ifneq ($(shell grep '$${xpi:Depends}' debian/control),)
	@echo 'xpi.mk: $${xpi:Depends} is deprecated, please use $${xpi:Recommends} instead.'
	if test -f debian/$(MOZ_EXTENSION_PKG).substvars; then sed -i '/^xpi:Depends=/d' debian/$(MOZ_EXTENSION_PKG).substvars; fi
	grep '^xpi:Recommends=' debian/$(MOZ_EXTENSION_PKG).substvars | sed "s/^xpi:Recommends=/xpi:Depends=/g" >> debian/$(MOZ_EXTENSION_PKG).substvars
endif

# 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
	rm -f *.xpi
endif

.PHONY: clean xpi-install