3
# Various build defaults
4
# 1 = Enable crashreporter (if supported)
5
MOZ_ENABLE_BREAKPAD ?= 0
6
# 1 = Disable official branding and crash reporter (the crash reporter builds but is not enabled in application.ini)
7
MOZ_BUILD_UNOFFICIAL ?= 1
8
# 1 = Build without jemalloc suitable for valgrind debugging
10
# 1 = Profile guided build
12
# 1 = Build and run the testsuite
13
MOZ_WANT_UNIT_TESTS ?= 0
14
# 1 = Turn on debugging bits and disable optimizations
16
# 1 = Disable optimizations
19
3
# We need this to execute before the debian/control target gets called
21
5
cp debian/control debian/control.old
35
19
MOZ_OBJDIR := $(DEB_BUILDDIR)/obj-$(DEB_HOST_GNU_TYPE)
36
20
MOZ_DISTDIR := $(MOZ_OBJDIR)/$(MOZ_MOZDIR)/dist
39
MOZ_PKG_NAME := $(shell dpkg-parsechangelog | sed -n 's/^Source: *\(.*\)$$/\1/ p')
40
# The binary name to use (derived from the package name by default)
41
MOZ_APP_NAME ?= $(MOZ_PKG_NAME)
43
# Define other variables used throughout the build
44
MOZ_DEFAULT_APP_NAME ?= $(MOZ_PKG_BASENAME)
45
MOZ_APP_BASENAME ?= $(shell echo $(MOZ_APP_NAME) | sed -n 's/\-.\|\<./\U&/g p')
46
MOZ_DEFAULT_APP_BASENAME ?= $(shell echo $(MOZ_DEFAULT_APP_NAME) | sed -n 's/\-.\|\<./\U&/g p')
49
23
$(error "Need to set MOZ_APP")
78
52
MOZ_INCDIR := usr/include/$(MOZ_APP_NAME)
79
53
MOZ_IDLDIR := usr/share/idl/$(MOZ_APP_NAME)
80
54
MOZ_SDKDIR := usr/lib/$(MOZ_APP_NAME)-devel
81
MOZ_ADDONDIR := usr/lib/$(MOZ_APP_NAME)-addons
55
MOZ_ADDONDIR := usr/lib/$(MOZ_APP_NAME)-addons
95
69
DEB_AUTO_UPDATE_DEBIAN_CONTROL = no
97
MOZ_PYTHON := $(shell which python)
98
VIRTENV_PYTHON := $(CURDIR)/debian/_virtualenv/bin/python
71
VIRTENV_PATH := $(CURDIR)/$(MOZ_OBJDIR)/$(MOZ_MOZDIR)/_virtualenv
72
MOZ_PYTHON := $(VIRTENV_PATH)/bin/python
99
73
DISTRIB := $(shell lsb_release -i -s)
106
80
MOZ_WANT_UNIT_TESTS = 0
109
ifeq (1,$(MOZ_VALGRIND))
110
MOZ_BUILD_UNOFFICIAL = 1
113
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
118
ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
121
MOZ_BUILD_UNOFFICIAL = 1
124
83
include $(CURDIR)/debian/build/testsuite.mk
126
ifneq ($(MOZ_APP_NAME)$(MOZ_APP_BASENAME),$(MOZ_DEFAULT_APP_NAME)$(MOZ_DEFAULT_APP_BASENAME))
127
# If we change MOZ_APP_NAME or MOZ_APP_BASENAME, don't use official branding
128
MOZ_BUILD_UNOFFICIAL = 1
131
85
# enable the crash reporter only on i386, amd64 and armel
132
86
ifeq (,$(filter i386 amd64 armhf,$(DEB_HOST_ARCH)))
133
87
MOZ_ENABLE_BREAKPAD = 0
161
115
ifeq (Ubuntu, $(DISTRIB))
162
116
export MOZ_UA_VENDOR=Ubuntu
164
ifneq (1,$(MOZ_BUILD_UNOFFICIAL))
165
export BUILD_OFFICIAL=1
167
ifeq (1,$(MOZ_ENABLE_BREAKPAD))
118
ifeq (1,$(MOZ_BUILD_OFFICIAL))
168
119
# Needed to enable crashreported in application.ini
169
120
export MOZILLA_OFFICIAL=1
175
126
LANGPACK_DIR := $(DEB_HOST_GNU_SYSTEM)-$(DEB_HOST_GNU_CPU)/xpi
178
MOZ_PKG_SUPPORT_RECOMMENDS ?= $(MOZ_PKG_NAME)-globalmenu
179
MOZ_PKG_SUPPORT_SUGGESTS ?= $(MOZ_PKG_NAME)-gnome-support
129
MOZ_PKG_SUPPORT_SUGGESTS ?=
181
131
# Defines used for the Mozilla text preprocessor
182
132
MOZ_DEFINES += -DMOZ_LIBDIR="$(MOZ_LIBDIR)" -DMOZ_APP_NAME="$(MOZ_APP_NAME)" -DMOZ_APP_BASENAME="$(MOZ_APP_BASENAME)" \
192
142
ifeq (1, $(MOZ_ENABLE_BREAKPAD))
193
143
MOZ_DEFINES += -DMOZ_ENABLE_BREAKPAD
145
ifeq (1, $(MOZ_BUILD_OFFICIAL))
146
MOZ_DEFINES += -DMOZ_BUILD_OFFICIAL
195
148
ifeq (1, $(MOZ_VALGRIND))
196
149
MOZ_DEFINES += -DMOZ_VALGRIND
255
208
sed -e 's/@MOZ_PKG_NAME@/$(MOZ_PKG_NAME)/g' < debian/control.tmp >> debian/control && rm -f debian/control.tmp
257
210
$(pkgname_subst_files): $(foreach file,$(pkgname_subst_files),$(subst $(MOZ_PKG_NAME),$(MOZ_PKG_BASENAME),$(file).in))
258
PYTHONDONTWRITEBYTECODE=1 $(MOZ_PYTHON) $(CURDIR)/debian/build/Preprocessor.py -Fsubstitution --marker="%%" $(MOZ_DEFINES) $(CURDIR)/$(subst $(MOZ_PKG_NAME),$(MOZ_PKG_BASENAME),$@.in) > $(CURDIR)/$@
211
PYTHONDONTWRITEBYTECODE=1 python $(CURDIR)/debian/build/Preprocessor.py -Fsubstitution --marker="%%" $(MOZ_DEFINES) $(CURDIR)/$(subst $(MOZ_PKG_NAME),$(MOZ_PKG_BASENAME),$@.in) > $(CURDIR)/$@
260
213
$(appname_subst_files): $(foreach file,$(appname_subst_files),$(subst $(MOZ_APP_NAME),$(MOZ_PKG_BASENAME),$(file).in))
261
PYTHONDONTWRITEBYTECODE=1 $(MOZ_PYTHON) $(CURDIR)/debian/build/Preprocessor.py -Fsubstitution --marker="%%" $(MOZ_DEFINES) $(CURDIR)/$(subst $(MOZ_APP_NAME),$(MOZ_PKG_BASENAME),$@.in) > $(CURDIR)/$@
214
PYTHONDONTWRITEBYTECODE=1 python $(CURDIR)/debian/build/Preprocessor.py -Fsubstitution --marker="%%" $(MOZ_DEFINES) $(CURDIR)/$(subst $(MOZ_APP_NAME),$(MOZ_PKG_BASENAME),$@.in) > $(CURDIR)/$@
263
216
%.pc: WCHAR_CFLAGS = $(shell cat $(MOZ_OBJDIR)/config/autoconf.mk | grep WCHAR_CFLAGS | sed 's/^[^=]*=[[:space:]]*\(.*\)$$/\1/')
264
217
%.pc: %.pc.in debian/stamp-makefile-build
265
PYTHONDONTWRITEBYTECODE=1 $(MOZ_PYTHON) $(CURDIR)/debian/build/Preprocessor.py -Fsubstitution --marker="%%" $(MOZ_DEFINES) -DWCHAR_CFLAGS="$(WCHAR_CFLAGS)" $(CURDIR)/$< > $(CURDIR)/$@
218
PYTHONDONTWRITEBYTECODE=1 python $(CURDIR)/debian/build/Preprocessor.py -Fsubstitution --marker="%%" $(MOZ_DEFINES) -DWCHAR_CFLAGS="$(WCHAR_CFLAGS)" $(CURDIR)/$< > $(CURDIR)/$@
267
220
make-buildsymbols: debian/stamp-makebuildsymbols
268
221
debian/stamp-makebuildsymbols: debian/stamp-makefile-build
269
ifeq (1, $(MOZ_ENABLE_BREAKPAD))
270
222
$(MAKE) -C $(MOZ_OBJDIR) buildsymbols MOZ_SYMBOLS_EXTRA_BUILDID=$(shell date -d "`dpkg-parsechangelog | grep Date: | sed -e 's/^Date: //'`" +%y%m%d%H%M%S)-$(DEB_HOST_GNU_CPU)
274
225
make-testsuite: debian/stamp-maketestsuite
275
226
debian/stamp-maketestsuite: debian/stamp-makefile-build
276
227
ifneq ($(MOZ_APP_NAME),$(MOZ_DEFAULT_APP_NAME))
277
PYTHONDONTWRITEBYTECODE=1 $(MOZ_PYTHON) $(CURDIR)/debian/build/fix-mozinfo-appname.py $(MOZ_OBJDIR)/$(MOZ_MOZDIR)/mozinfo.json $(MOZ_DEFAULT_APP_NAME)
228
PYTHONDONTWRITEBYTECODE=1 python $(CURDIR)/debian/build/fix-mozinfo-appname.py $(MOZ_OBJDIR)/$(MOZ_MOZDIR)/mozinfo.json $(MOZ_DEFAULT_APP_NAME)
279
230
$(MAKE) -C $(MOZ_OBJDIR) package-tests
280
231
ifneq (,$(wildcard debian/testing/extra))
296
247
install $(MOZ_DISTDIR)/$(MOZ_APP_NAME)-$(MOZ_VERSION).en-US.linux-*.tests.zip debian/tmp/$(MOZ_LIBDIR)/testing
299
make-langpack-xpis: $(foreach target,$(shell sed -n 's/\#.*//;/^$$/d;s/\([^\:]*\)\:\?.*/\1/ p' < $(CURDIR)/debian/config/locales.shipped),debian/stamp-make-langpack-xpi-$(target))
250
$(VIRTENV_PATH)/bin/compare-locales:
251
cd $(CURDIR)/$(MOZ_MOZDIR)/python/compare-locales; $(MOZ_PYTHON) $(CURDIR)/$(MOZ_MOZDIR)/python/compare-locales/setup.py install
253
make-langpack-xpis: $(VIRTENV_PATH)/bin/compare-locales $(foreach target,$(shell sed -n 's/\#.*//;/^$$/d;s/\([^\:]*\)\:\?.*/\1/ p' < $(CURDIR)/debian/config/locales.shipped),debian/stamp-make-langpack-xpi-$(target))
300
254
debian/stamp-make-langpack-xpi-%:
306
260
rm -rf $(CURDIR)/debian/l10n-mergedirs/$*
307
261
mkdir -p $(CURDIR)/debian/l10n-mergedirs/$*
309
@export PATH=$(CURDIR)/debian/_virtualenv/bin/:$$PATH ; \
263
@export PATH=$(VIRTENV_PATH)/bin/:$$PATH ; \
310
264
cd $(MOZ_OBJDIR)/$(MOZ_APP)/locales ; \
311
265
$(MAKE) merge-$* LOCALE_MERGEDIR=$(CURDIR)/debian/l10n-mergedirs/$* || exit 1 ; \
312
266
$(MAKE) langpack-$* LOCALE_MERGEDIR=$(CURDIR)/debian/l10n-mergedirs/$* || exit 1;
341
295
install -m 0644 $(CURDIR)/debian/apport/blacklist $(CURDIR)/debian/$(MOZ_PKG_NAME)/etc/apport/blacklist.d/$(MOZ_PKG_NAME)
342
296
install -m 0644 $(CURDIR)/debian/apport/native-origins $(CURDIR)/debian/$(MOZ_PKG_NAME)/etc/apport/native-origins.d/$(MOZ_PKG_NAME)
344
GNOME_SUPPORT_FILES = libmozgnome.so
345
298
binary-post-install/$(MOZ_PKG_NAME):: install-searchplugins-,$(MOZ_PKG_NAME)
346
$(foreach file,$(GNOME_SUPPORT_FILES),rm -fv debian/$(MOZ_PKG_NAME)/$(MOZ_LIBDIR)/components/$(file);) true
348
300
MOZ_LANGPACK_TARGETS := $(shell sed -n 's/[^\:]*\:\?\(.*\)/\1/ p' < debian/config/locales.shipped | uniq)
349
301
$(patsubst %,binary-post-install/$(MOZ_PKG_NAME)-locale-%,$(MOZ_LANGPACK_TARGETS)):: binary-post-install/$(MOZ_PKG_NAME)-locale-%: install-langpack-xpis-% install-searchplugins-%
352
304
rm -f debian/$(MOZ_PKG_NAME)-dev/$(MOZ_INCDIR)/nspr/md/_linux.cfg
353
305
dh_link -p$(MOZ_PKG_NAME)-dev $(MOZ_INCDIR)/nspr/prcpucfg.h $(MOZ_INCDIR)/nspr/md/_linux.cfg
355
binary-post-install/%::
307
$(patsubst %,binary-post-install/%,$(DEB_ALL_PACKAGES)) :: binary-post-install/%:
356
308
find debian/$* -name .mkdir.done -delete
358
310
install-langpack-xpis-%:
361
313
dh_installdirs -p$(MOZ_PKG_NAME)-locale-$* $(MOZ_ADDONDIR)/extensions
362
314
@for lang in $(shell grep $*$$ debian/config/locales.shipped | sed -n 's/\([^\:]*\)\:\?.*/\1/ p' | tr '\n' ' '); \
364
id=`PYTHONDONTWRITEBYTECODE=1 $(MOZ_PYTHON) $(CURDIR)/debian/build/xpi-id.py $(CURDIR)/$(MOZ_DISTDIR)/$(LANGPACK_DIR)/$(MOZ_APP_NAME)-$(MOZ_VERSION).$$lang.langpack.xpi 2>/dev/null`; \
316
id=`PYTHONDONTWRITEBYTECODE=1 python $(CURDIR)/debian/build/xpi-id.py $(CURDIR)/$(MOZ_DISTDIR)/$(LANGPACK_DIR)/$(MOZ_APP_NAME)-$(MOZ_VERSION).$$lang.langpack.xpi 2>/dev/null`; \
365
317
echo "Installing $(MOZ_APP_NAME)-$(MOZ_VERSION).$$lang.langpack.xpi to $$id.xpi in to $(MOZ_PKG_NAME)-locale-$*"; \
366
318
install -m 0644 $(CURDIR)/$(MOZ_DISTDIR)/$(LANGPACK_DIR)/$(MOZ_APP_NAME)-$(MOZ_VERSION).$$lang.langpack.xpi \
367
319
$(CURDIR)/debian/$(MOZ_PKG_NAME)-locale-$*/$(MOZ_ADDONDIR)/extensions/$$id.xpi; \
432
384
@$(if $(wildcard debian/searchplugins),$(call CUSTOMIZE_SEARCHPLUGINS,$(LANGUAGES),$(PKGNAME)))
387
$(patsubst %,binary-fixup/%,$(DEB_ALL_PACKAGES)) :: binary-fixup/%:
388
find debian/$(cdbs_curpkg) -type f -perm -5 \( -name '*.zip' -or -name '*.xml' \) -print0 2>/dev/null | xargs -0r chmod 644
390
common-binary-fixup-arch::
391
$(foreach pkg,$(MOZ_PKG_NAMES),$(foreach file,$(MOZ_EXECUTABLES_$(pkg)),chmod a+x debian/$(pkg)/$(file);))
435
393
binary-predeb/$(MOZ_PKG_NAME)::
436
394
$(foreach lib,libsoftokn3.so libfreebl3.so libnssdbm3.so, \
437
395
LD_LIBRARY_PATH=debian/$(MOZ_PKG_NAME)/$(MOZ_LIBDIR):$$LD_LIBRARY_PATH \
438
396
$(MOZ_DISTDIR)/bin/shlibsign -v -i debian/$(MOZ_PKG_NAME)/$(MOZ_LIBDIR)/$(lib);)
440
common-binary-predeb-arch::
441
$(foreach pkg,$(MOZ_PKG_NAMES),$(foreach file,$(MOZ_EXECUTABLES_$(pkg)),chmod a+x debian/$(pkg)/$(file);))
442
# we want the gnome dependencies not to be in the main package at shlibdeps runtime, hence we dont
443
# install them at binary-install/* stage, but copy them over _after_ the shlibdeps had been generated
444
$(foreach file,$(GNOME_SUPPORT_FILES),mv debian/$(MOZ_PKG_NAME)-gnome-support/$(MOZ_LIBDIR)/components/$(file) debian/$(MOZ_PKG_NAME)/$(MOZ_LIBDIR)/components/;) true
446
398
mozconfig: debian/config/mozconfig
449
create-virtualenv: $(VIRTENV_PYTHON)
451
mkdir -p debian/_virtualenv
452
$(MOZ_PYTHON) $(CURDIR)/$(MOZ_MOZDIR)/python/virtualenv/virtualenv.py --system-site-packages $(CURDIR)/debian/_virtualenv
453
cd $(CURDIR)/$(MOZ_MOZDIR)/python/compare-locales; $(VIRTENV_PYTHON) $(CURDIR)/$(MOZ_MOZDIR)/python/compare-locales/setup.py install
455
post-patches:: create-virtualenv
457
401
pre-build:: auto-refresh-supported-locales $(pkgname_subst_files) $(appname_subst_files) mozconfig
458
402
ifeq (,$(MOZ_BRANDING_OPTION))
459
403
$(error "Need to set MOZ_BRANDING_OPTION")
556
500
rm -rf $(MOZ_OBJDIR)
557
501
rm -f debian/searchplugin*.list
559
rm -rf debian/_virtualenv
560
503
rm -f debian/testing/extra.test.zip
561
504
rm -rf debian/testing/extra-stage
563
.PHONY: make-buildsymbols make-testsuite make-langpack-xpis refresh-supported-locales auto-refresh-supported-locales get-orig-source create-virtualenv
506
.PHONY: make-buildsymbols make-testsuite make-langpack-xpis refresh-supported-locales auto-refresh-supported-locales get-orig-source