Bug 1867190 - Add prefs for PHC probablities r=glandium
[gecko.git] / toolkit / mozapps / installer / upload-files.mk
blob6e1283e23874db117aae104d04075e9e0f4ada05
1 # This Source Code Form is subject to the terms of the Mozilla Public
2 # License, v. 2.0. If a copy of the MPL was not distributed with this
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
5 ifndef MOZ_PKG_FORMAT
6 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
7 MOZ_PKG_FORMAT = DMG
8 else
9 ifeq (WINNT,$(OS_ARCH))
10 MOZ_PKG_FORMAT = ZIP
11 else
12 ifeq (SunOS,$(OS_ARCH))
13 MOZ_PKG_FORMAT = BZ2
14 else
15 ifeq (gtk,$(MOZ_WIDGET_TOOLKIT))
16 MOZ_PKG_FORMAT = BZ2
17 else
18 ifeq (android,$(MOZ_WIDGET_TOOLKIT))
19 MOZ_PKG_FORMAT = APK
20 else
21 MOZ_PKG_FORMAT = TGZ
22 endif
23 endif
24 endif
25 endif
26 endif
27 endif # MOZ_PKG_FORMAT
29 ifeq ($(OS_ARCH),WINNT)
30 INSTALLER_DIR = windows
31 endif
33 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
34 ifndef _APPNAME
35 _APPNAME = $(MOZ_MACBUNDLE_NAME)
36 endif
37 ifndef _BINPATH
38 _BINPATH = $(_APPNAME)/Contents/MacOS
39 endif # _BINPATH
40 ifndef _RESPATH
41 # Resource path for the precomplete file
42 _RESPATH = $(_APPNAME)/Contents/Resources
43 endif
44 endif
46 PACKAGE_BASE_DIR = $(ABS_DIST)
47 PACKAGE = $(PKG_PATH)$(PKG_BASENAME)$(PKG_SUFFIX)
49 # JavaScript Shell packaging
50 JSSHELL_BINS = \
51 js$(BIN_SUFFIX) \
52 $(DLL_PREFIX)mozglue$(DLL_SUFFIX) \
53 $(NULL)
55 ifndef MOZ_SYSTEM_NSPR
56 ifdef MOZ_FOLD_LIBS
57 JSSHELL_BINS += $(DLL_PREFIX)nss3$(DLL_SUFFIX)
58 else
59 JSSHELL_BINS += \
60 $(DLL_PREFIX)nspr4$(DLL_SUFFIX) \
61 $(DLL_PREFIX)plds4$(DLL_SUFFIX) \
62 $(DLL_PREFIX)plc4$(DLL_SUFFIX) \
63 $(NULL)
64 endif # MOZ_FOLD_LIBS
65 endif # MOZ_SYSTEM_NSPR
67 ifdef MSVC_C_RUNTIME_DLL
68 JSSHELL_BINS += $(MSVC_C_RUNTIME_DLL)
69 endif
70 ifdef MSVC_C_RUNTIME_1_DLL
71 JSSHELL_BINS += $(MSVC_C_RUNTIME_1_DLL)
72 endif
73 ifdef MSVC_CXX_RUNTIME_DLL
74 JSSHELL_BINS += $(MSVC_CXX_RUNTIME_DLL)
75 endif
77 ifdef LLVM_SYMBOLIZER
78 JSSHELL_BINS += $(notdir $(LLVM_SYMBOLIZER))
79 endif
80 ifdef MOZ_CLANG_RT_ASAN_LIB_PATH
81 JSSHELL_BINS += $(notdir $(MOZ_CLANG_RT_ASAN_LIB_PATH))
82 endif
84 ifdef FUZZING_INTERFACES
85 JSSHELL_BINS += fuzz-tests$(BIN_SUFFIX)
86 endif
88 MAKE_JSSHELL = $(call py_action,zip $(JSSHELL_NAME),-C $(DIST)/bin --strip $(abspath $(PKG_JSSHELL)) $(JSSHELL_BINS))
90 ifneq (,$(PGO_JARLOG_PATH))
91 # The backslash subst is to work around an issue with our version of mozmake,
92 # where backslashes get slurped in command-line arguments if a command is run
93 # with a double-quote character. The command to packager.py happens to be one
94 # of these commands, where double-quotes appear in certain ACDEFINES values.
95 # This turns a jarlog path like "Z:\task..." into "Z:task", which fails.
96 # Switching the backslashes for forward slashes works around the issue.
97 JARLOG_FILE_AB_CD = $(subst \,/,$(PGO_JARLOG_PATH))
98 else
99 JARLOG_FILE_AB_CD = $(topobjdir)/jarlog/$(AB_CD).log
100 endif
102 TAR_CREATE_FLAGS := --exclude=.mkdir.done $(TAR_CREATE_FLAGS)
103 CREATE_FINAL_TAR = $(TAR) -c --owner=0 --group=0 --numeric-owner \
104 --mode=go-w --exclude=.mkdir.done -f
105 UNPACK_TAR = tar -xf-
107 ifeq ($(MOZ_PKG_FORMAT),TAR)
108 PKG_SUFFIX = .tar
109 INNER_MAKE_PACKAGE = cd $(1) && $(CREATE_FINAL_TAR) - $(MOZ_PKG_DIR) > $(PACKAGE)
110 INNER_UNMAKE_PACKAGE = cd $(1) && $(UNPACK_TAR) < $(UNPACKAGE)
111 endif
113 ifeq ($(MOZ_PKG_FORMAT),TGZ)
114 PKG_SUFFIX = .tar.gz
115 INNER_MAKE_PACKAGE = cd $(1) && $(CREATE_FINAL_TAR) - $(MOZ_PKG_DIR) | gzip -vf9 > $(PACKAGE)
116 INNER_UNMAKE_PACKAGE = cd $(1) && gunzip -c $(UNPACKAGE) | $(UNPACK_TAR)
117 endif
119 ifeq ($(MOZ_PKG_FORMAT),BZ2)
120 PKG_SUFFIX = .tar.bz2
121 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
122 INNER_MAKE_PACKAGE = cd $(1) && $(CREATE_FINAL_TAR) - -C $(MOZ_PKG_DIR) $(_APPNAME) | bzip2 -vf > $(PACKAGE)
123 else
124 INNER_MAKE_PACKAGE = cd $(1) && $(CREATE_FINAL_TAR) - $(MOZ_PKG_DIR) | bzip2 -vf > $(PACKAGE)
125 endif
126 INNER_UNMAKE_PACKAGE = cd $(1) && bunzip2 -c $(UNPACKAGE) | $(UNPACK_TAR)
127 endif
129 ifeq ($(MOZ_PKG_FORMAT),ZIP)
130 PKG_SUFFIX = .zip
131 INNER_MAKE_PACKAGE = $(call py_action,zip,'$(PACKAGE)' '$(MOZ_PKG_DIR)' -x '**/.mkdir.done',$(1))
132 INNER_UNMAKE_PACKAGE = $(call py_action,make_unzip,$(UNPACKAGE),$(1))
133 endif
135 #Create an RPM file
136 ifeq ($(MOZ_PKG_FORMAT),RPM)
137 PKG_SUFFIX = .rpm
138 MOZ_NUMERIC_APP_VERSION = $(shell echo $(MOZ_PKG_VERSION) | sed 's/[^0-9.].*//' )
139 MOZ_RPM_RELEASE = $(shell echo $(MOZ_PKG_VERSION) | sed 's/[0-9.]*//' )
141 RPMBUILD_TOPDIR=$(ABS_DIST)/rpmbuild
142 RPMBUILD_RPMDIR=$(ABS_DIST)
143 RPMBUILD_SRPMDIR=$(ABS_DIST)
144 RPMBUILD_SOURCEDIR=$(RPMBUILD_TOPDIR)/SOURCES
145 RPMBUILD_SPECDIR=$(topsrcdir)/toolkit/mozapps/installer/linux/rpm
146 RPMBUILD_BUILDDIR=$(ABS_DIST)/..
148 SPEC_FILE = $(RPMBUILD_SPECDIR)/mozilla.spec
149 RPM_INCIDENTALS=$(topsrcdir)/toolkit/mozapps/installer/linux/rpm
151 RPM_CMD = \
152 echo Creating RPM && \
153 $(PYTHON3) -m mozbuild.action.preprocessor \
154 -DMOZ_APP_NAME=$(MOZ_APP_NAME) \
155 -DMOZ_APP_DISPLAYNAME='$(MOZ_APP_DISPLAYNAME)' \
156 -DMOZ_APP_REMOTINGNAME='$(MOZ_APP_REMOTINGNAME)' \
157 $(RPM_INCIDENTALS)/mozilla.desktop \
158 -o $(RPMBUILD_SOURCEDIR)/$(MOZ_APP_NAME).desktop && \
159 rm -rf $(ABS_DIST)/$(TARGET_RAW_CPU) && \
160 $(RPMBUILD) -bb \
161 $(SPEC_FILE) \
162 --target $(TARGET_RAW_CPU) \
163 --buildroot $(RPMBUILD_TOPDIR)/BUILDROOT \
164 --define 'moz_app_name $(MOZ_APP_NAME)' \
165 --define 'moz_app_displayname $(MOZ_APP_DISPLAYNAME)' \
166 --define 'moz_app_version $(MOZ_APP_VERSION)' \
167 --define 'moz_numeric_app_version $(MOZ_NUMERIC_APP_VERSION)' \
168 --define 'moz_rpm_release $(MOZ_RPM_RELEASE)' \
169 --define 'buildid $(BUILDID)' \
170 --define 'moz_source_repo $(shell awk '$$2 == "MOZ_SOURCE_REPO" {print $$3}' $(DEPTH)/source-repo.h)' \
171 --define 'moz_source_stamp $(shell awk '$$2 == "MOZ_SOURCE_STAMP" {print $$3}' $(DEPTH)/source-repo.h)' \
172 --define 'moz_branding_directory $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)' \
173 --define '_topdir $(RPMBUILD_TOPDIR)' \
174 --define '_rpmdir $(RPMBUILD_RPMDIR)' \
175 --define '_sourcedir $(RPMBUILD_SOURCEDIR)' \
176 --define '_specdir $(RPMBUILD_SPECDIR)' \
177 --define '_srcrpmdir $(RPMBUILD_SRPMDIR)' \
178 --define '_builddir $(RPMBUILD_BUILDDIR)' \
179 --define '_prefix $(prefix)' \
180 --define '_libdir $(libdir)' \
181 --define '_bindir $(bindir)' \
182 --define '_datadir $(datadir)' \
183 --define '_installdir $(installdir)'
185 ifdef ENABLE_TESTS
186 RPM_CMD += \
187 --define 'createtests yes' \
188 --define '_testsinstalldir $(shell basename $(installdir))'
189 endif
191 #For each of the main/tests rpms we want to make sure that
192 #if they exist that they are in objdir/dist/ and that they get
193 #uploaded and that they are beside the other build artifacts
194 MAIN_RPM= $(MOZ_APP_NAME)-$(MOZ_NUMERIC_APP_VERSION)-$(MOZ_RPM_RELEASE).$(BUILDID).$(TARGET_RAW_CPU)$(PKG_SUFFIX)
195 UPLOAD_EXTRA_FILES += $(MAIN_RPM)
196 RPM_CMD += && mv $(TARGET_RAW_CPU)/$(MAIN_RPM) $(ABS_DIST)/
198 ifdef ENABLE_TESTS
199 TESTS_RPM=$(MOZ_APP_NAME)-tests-$(MOZ_NUMERIC_APP_VERSION)-$(MOZ_RPM_RELEASE).$(BUILDID).$(TARGET_RAW_CPU)$(PKG_SUFFIX)
200 UPLOAD_EXTRA_FILES += $(TESTS_RPM)
201 RPM_CMD += && mv $(TARGET_RAW_CPU)/$(TESTS_RPM) $(ABS_DIST)/
202 endif
204 INNER_MAKE_PACKAGE = cd $(1) && $(RPM_CMD)
205 #Avoiding rpm repacks, going to try creating/uploading xpi in rpm files instead
206 INNER_UNMAKE_PACKAGE = $(error Try using rpm2cpio and cpio)
208 endif #Create an RPM file
211 ifeq ($(MOZ_PKG_FORMAT),APK)
212 INNER_MAKE_PACKAGE = true
213 INNER_UNMAKE_PACKAGE = true
214 endif
216 ifeq ($(MOZ_PKG_FORMAT),DMG)
217 PKG_SUFFIX = .dmg
219 _ABS_MOZSRCDIR = $(shell cd $(MOZILLA_DIR) && pwd)
220 PKG_DMG_SOURCE = $(MOZ_PKG_DIR)
221 INNER_MAKE_PACKAGE = \
222 $(call py_action,make_dmg, \
223 $(if $(MOZ_PKG_MAC_DSSTORE),--dsstore '$(MOZ_PKG_MAC_DSSTORE)') \
224 $(if $(MOZ_PKG_MAC_BACKGROUND),--background '$(MOZ_PKG_MAC_BACKGROUND)') \
225 $(if $(MOZ_PKG_MAC_ICON),--icon '$(MOZ_PKG_MAC_ICON)') \
226 --volume-name '$(MOZ_APP_DISPLAYNAME)' \
227 '$(PKG_DMG_SOURCE)' '$(PACKAGE)', \
228 $(1))
229 INNER_UNMAKE_PACKAGE = \
230 $(call py_action,unpack_dmg, \
231 $(if $(MOZ_PKG_MAC_DSSTORE),--dsstore '$(MOZ_PKG_MAC_DSSTORE)') \
232 $(if $(MOZ_PKG_MAC_BACKGROUND),--background '$(MOZ_PKG_MAC_BACKGROUND)') \
233 $(if $(MOZ_PKG_MAC_ICON),--icon '$(MOZ_PKG_MAC_ICON)') \
234 $(UNPACKAGE) $(MOZ_PKG_DIR), \
235 $(1))
236 endif
238 MAKE_PACKAGE = $(INNER_MAKE_PACKAGE)
240 NO_PKG_FILES += \
241 core \
242 bsdecho \
243 js \
244 js-config \
245 jscpucfg \
246 nsinstall \
247 viewer \
248 TestGtkEmbed \
249 elf-dynstr-gc \
250 mangle* \
251 maptsv* \
252 mfc* \
253 msdump* \
254 msmap* \
255 nm2tsv* \
256 nsinstall* \
257 res/samples \
258 res/throbber \
259 shlibsign* \
260 certutil* \
261 pk12util* \
262 BadCertAndPinningServer* \
263 DelegatedCredentialsServer* \
264 EncryptedClientHelloServer* \
265 FaultyServer* \
266 OCSPStaplingServer* \
267 SanctionsTestServer* \
268 GenerateOCSPResponse* \
269 chrome/chrome.rdf \
270 chrome/app-chrome.manifest \
271 chrome/overlayinfo \
272 components/compreg.dat \
273 components/xpti.dat \
274 content_unit_tests \
275 necko_unit_tests \
276 *.dSYM \
277 $(NULL)
279 # If a manifest has not been supplied, the following
280 # files should be excluded from the package too
281 ifndef MOZ_PKG_MANIFEST
282 NO_PKG_FILES += ssltunnel*
283 endif
285 ifdef MOZ_DMD
286 NO_PKG_FILES += SmokeDMD
287 endif
289 DEFINES += -DDLL_PREFIX=$(DLL_PREFIX) -DDLL_SUFFIX=$(DLL_SUFFIX) -DBIN_SUFFIX=$(BIN_SUFFIX)
291 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
292 DEFINES += -DDIR_MACOS=Contents/MacOS/ -DDIR_RESOURCES=Contents/Resources/
293 else
294 DEFINES += -DDIR_MACOS= -DDIR_RESOURCES=
295 endif
297 ifdef MOZ_FOLD_LIBS
298 DEFINES += -DMOZ_FOLD_LIBS=1
299 endif
301 # The following target stages files into two directories: one directory for
302 # core files, and one for optional extensions based on the information in
303 # the MOZ_PKG_MANIFEST file.
305 PKG_ARG = , '$(pkg)'
307 ifndef MOZ_PACKAGER_FORMAT
308 MOZ_PACKAGER_FORMAT = $(error MOZ_PACKAGER_FORMAT is not set)
309 endif
311 ifneq (android,$(MOZ_WIDGET_TOOLKIT))
312 JAR_COMPRESSION ?= none
313 endif
315 ifeq ($(OS_TARGET), WINNT)
316 INSTALLER_PACKAGE = $(DIST)/$(PKG_INST_PATH)$(PKG_INST_BASENAME).exe
317 endif
319 # These are necessary because some of our packages/installers contain spaces
320 # in their filenames and GNU Make's $(wildcard) function doesn't properly
321 # deal with them.
322 empty :=
323 space = $(empty) $(empty)
324 QUOTED_WILDCARD = $(if $(wildcard $(subst $(space),?,$(1))),'$(1)')
325 ESCAPE_SPACE = $(subst $(space),\$(space),$(1))
326 ESCAPE_WILDCARD = $(subst $(space),?,$(1))
328 # This variable defines which OpenSSL algorithm to use to
329 # generate checksums for files that we upload
330 CHECKSUM_ALGORITHM_PARAM = -d sha512 -d md5 -d sha1
332 # This variable defines where the checksum file will be located
333 CHECKSUM_FILE = '$(DIST)/$(PKG_PATH)/$(CHECKSUMS_FILE_BASENAME).checksums'
334 CHECKSUM_FILES = $(CHECKSUM_FILE)
336 # Upload MAR tools only if AB_CD is unset or en_US
337 ifeq (,$(AB_CD:en-US=))
338 ifeq (WINNT,$(OS_TARGET))
339 UPLOAD_EXTRA_FILES += host/bin/mar.exe
340 UPLOAD_EXTRA_FILES += host/bin/mbsdiff.exe
341 else
342 UPLOAD_EXTRA_FILES += host/bin/mar
343 UPLOAD_EXTRA_FILES += host/bin/mbsdiff
344 endif
345 endif
347 UPLOAD_FILES= \
348 $(call QUOTED_WILDCARD,$(DIST)/$(PACKAGE)) \
349 $(call QUOTED_WILDCARD,$(INSTALLER_PACKAGE)) \
350 $(call QUOTED_WILDCARD,$(DIST)/$(LANGPACK)) \
351 $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(MOZHARNESS_PACKAGE)) \
352 $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(SYMBOL_ARCHIVE_BASENAME).zip) \
353 $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(GENERATED_SOURCE_FILE_PACKAGE)) \
354 $(call QUOTED_WILDCARD,$(MOZ_SOURCESTAMP_FILE)) \
355 $(call QUOTED_WILDCARD,$(MOZ_BUILDINFO_FILE)) \
356 $(call QUOTED_WILDCARD,$(MOZ_BUILDHUB_JSON)) \
357 $(call QUOTED_WILDCARD,$(MOZ_BUILDID_INFO_TXT_FILE)) \
358 $(call QUOTED_WILDCARD,$(MOZ_MOZINFO_FILE)) \
359 $(call QUOTED_WILDCARD,$(MOZ_TEST_PACKAGES_FILE)) \
360 $(call QUOTED_WILDCARD,$(PKG_JSSHELL)) \
361 $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(SYMBOL_FULL_ARCHIVE_BASENAME).tar.zst) \
362 $(call QUOTED_WILDCARD,$(topobjdir)/$(MOZ_BUILD_APP)/installer/windows/instgen/setup.exe) \
363 $(call QUOTED_WILDCARD,$(topobjdir)/$(MOZ_BUILD_APP)/installer/windows/instgen/setup-stub.exe) \
364 $(call QUOTED_WILDCARD,$(topsrcdir)/toolchains.json) \
365 $(call QUOTED_WILDCARD,$(topobjdir)/config.status) \
366 $(if $(UPLOAD_EXTRA_FILES), $(foreach f, $(UPLOAD_EXTRA_FILES), $(wildcard $(DIST)/$(f))))
368 ifneq ($(filter-out en-US,$(AB_CD)),)
369 UPLOAD_FILES += \
370 $(call QUOTED_WILDCARD,$(topobjdir)/$(MOZ_BUILD_APP)/installer/windows/l10ngen/setup.exe) \
371 $(call QUOTED_WILDCARD,$(topobjdir)/$(MOZ_BUILD_APP)/installer/windows/l10ngen/setup-stub.exe)
372 endif
374 ifdef MOZ_CODE_COVERAGE
375 UPLOAD_FILES += \
376 $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(CODE_COVERAGE_ARCHIVE_BASENAME).zip) \
377 $(call QUOTED_WILDCARD,$(topobjdir)/chrome-map.json) \
378 $(NULL)
379 endif
382 ifdef ENABLE_MOZSEARCH_PLUGIN
383 UPLOAD_FILES += $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(MOZSEARCH_ARCHIVE_BASENAME).zip)
384 UPLOAD_FILES += $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(MOZSEARCH_SCIP_INDEX_BASENAME).zip)
385 UPLOAD_FILES += $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(MOZSEARCH_INCLUDEMAP_BASENAME).map)
386 ifeq ($(MOZ_BUILD_APP),mobile/android)
387 UPLOAD_FILES += $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(MOZSEARCH_JAVA_INDEX_BASENAME).zip)
388 endif
389 endif
391 ifdef MOZ_STUB_INSTALLER
392 UPLOAD_FILES += $(call QUOTED_WILDCARD,$(DIST)/$(PKG_INST_PATH)$(PKG_STUB_BASENAME).exe)
393 endif
395 # Upload `.xpt` artifacts for use in artifact builds.
396 UPLOAD_FILES += $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(XPT_ARTIFACTS_ARCHIVE_BASENAME).zip)
398 ifndef MOZ_PKG_SRCDIR
399 MOZ_PKG_SRCDIR = $(topsrcdir)
400 endif
402 SRC_TAR_PREFIX = $(MOZ_APP_NAME)-$(MOZ_PKG_VERSION)
403 SRC_TAR_EXCLUDE_PATHS += \
404 --exclude='.hg*' \
405 --exclude='.git' \
406 --exclude='.gitattributes' \
407 --exclude='.gitkeep' \
408 --exclude='.gitmodules' \
409 --exclude='CVS' \
410 --exclude='.cvs*' \
411 --exclude='.mozconfig*' \
412 --exclude='*.pyc' \
413 --exclude='$(MOZILLA_DIR)/Makefile' \
414 --exclude='$(MOZILLA_DIR)/dist'
415 ifdef MOZ_OBJDIR
416 SRC_TAR_EXCLUDE_PATHS += --exclude='$(MOZ_OBJDIR)'
417 endif
418 CREATE_SOURCE_TAR = $(TAR) -c --owner=0 --group=0 --numeric-owner \
419 --mode=go-w $(SRC_TAR_EXCLUDE_PATHS) --transform='s,^\./,$(SRC_TAR_PREFIX)/,' -f
421 SOURCE_TAR = $(DIST)/$(PKG_SRCPACK_PATH)$(PKG_SRCPACK_BASENAME).tar.xz
422 HG_BUNDLE_FILE = $(DIST)/$(PKG_SRCPACK_PATH)$(PKG_BUNDLE_BASENAME).bundle
423 SOURCE_CHECKSUM_FILE = $(DIST)/$(PKG_SRCPACK_PATH)$(PKG_SRCPACK_BASENAME).checksums
424 SOURCE_UPLOAD_FILES = $(SOURCE_TAR)
426 HG ?= hg
427 CREATE_HG_BUNDLE_CMD = $(HG) -v -R $(topsrcdir) bundle --base null
428 ifdef HG_BUNDLE_REVISION
429 CREATE_HG_BUNDLE_CMD += -r $(HG_BUNDLE_REVISION)
430 endif
431 CREATE_HG_BUNDLE_CMD += $(HG_BUNDLE_FILE)
432 ifdef UPLOAD_HG_BUNDLE
433 SOURCE_UPLOAD_FILES += $(HG_BUNDLE_FILE)
434 endif