1# 'nightly' contains things that are in nightly mozconfigs and allowed to be missing from release builds.
2# Other keys in whitelist contain things are in that branches mozconfigs and allowed to be missing from nightly builds.
3whitelist = {
4    'release': {},
5    'nightly': {},
6    }
7
8all_platforms = ['win64', 'win32', 'linux32', 'linux64', 'macosx-universal']
9
10for platform in all_platforms:
11    whitelist['nightly'][platform] = [
12        'ac_add_options --enable-update-channel=nightly',
13        'ac_add_options --with-branding=browser/branding/nightly',
14        'ac_add_options --enable-profiling',
15        'mk_add_options CLIENT_PY_ARGS="--hg-options=\'--verbose --time\' --hgtool=../tools/buildfarm/utils/hgtool.py --skip-chatzilla --skip-comm --skip-inspector --tinderbox-print"'
16    ]
17
18for platform in ['linux32', 'linux64', 'macosx-universal']:
19    whitelist['nightly'][platform] += [
20        'mk_add_options MOZ_MAKE_FLAGS="-j4"',
21    ]
22
23whitelist['nightly']['linux32'] += [
24    'CXX=$REAL_CXX',
25    'CXX="ccache $REAL_CXX"',
26    'CC="ccache $REAL_CC"',
27    'mk_add_options PROFILE_GEN_SCRIPT=@TOPSRCDIR@/build/profile_pageloader.pl',
28    'ac_add_options --with-ccache=/usr/bin/ccache',
29    '. "$topsrcdir/build/mozconfig.cache"',
30    'export MOZILLA_OFFICIAL=1',
31    'export MOZ_TELEMETRY_REPORTING=1',
32    "mk_add_options PROFILE_GEN_SCRIPT='$(PYTHON) @MOZ_OBJDIR@/_profile/pgo/profileserver.py 10'",
33    'STRIP_FLAGS="--strip-debug"',
34]
35
36whitelist['nightly']['linux64'] += [
37    'export MOZILLA_OFFICIAL=1',
38    'export MOZ_TELEMETRY_REPORTING=1',
39    "mk_add_options PROFILE_GEN_SCRIPT='$(PYTHON) @MOZ_OBJDIR@/_profile/pgo/profileserver.py 10'",
40    'STRIP_FLAGS="--strip-debug"',
41    'ac_add_options --with-ccache=/usr/bin/ccache',
42    '. "$topsrcdir/build/mozconfig.cache"',
43]
44
45whitelist['nightly']['macosx-universal'] += [
46    'if test "${MOZ_UPDATE_CHANNEL}" = "nightly"; then',
47    'ac_add_options --with-macbundlename-prefix=Firefox',
48    'fi',
49    'mk_add_options MOZ_MAKE_FLAGS="-j12"',
50    'ac_add_options --with-ccache',
51    '. "$topsrcdir/build/mozconfig.cache"',
52    'ac_add_options --disable-install-strip',
53    'ac_add_options --enable-instruments',
54    'ac_add_options --enable-dtrace',
55]
56
57whitelist['nightly']['win32'] += [
58    '. $topsrcdir/configs/mozilla2/win32/include/choose-make-flags',
59    'mk_add_options MOZ_MAKE_FLAGS=-j1',
60    '. "$topsrcdir/build/mozconfig.cache"',
61    'if test "$IS_NIGHTLY" != ""; then',
62    'ac_add_options --disable-auto-deps',
63    'fi',
64]
65whitelist['nightly']['win64'] += [
66    '. "$topsrcdir/browser/config/mozconfigs/win64/common-win64"',
67    '. "$topsrcdir/build/mozconfig.cache"',
68]
69
70for platform in all_platforms:
71    whitelist['release'][platform] = [
72        'ac_add_options --enable-update-channel=release',
73        'ac_add_options --enable-official-branding',
74        'mk_add_options MOZ_MAKE_FLAGS="-j4"',
75        'export BUILDING_RELEASE=1',
76        'if [ -n "$ENABLE_RELEASE_PROMOTION" ]; then',
77        'MOZ_AUTOMATION_UPLOAD_SYMBOLS=1',
78        'MOZ_AUTOMATION_UPDATE_PACKAGING=1',
79        'fi',
80        'MOZ_AUTOMATION_SDK=${MOZ_AUTOMATION_SDK-1}',
81    ]
82whitelist['release']['win32'] += ['mk_add_options MOZ_PGO=1']
83whitelist['release']['win64'] += ['mk_add_options MOZ_PGO=1']
84
85whitelist['release']['linux32'] += [
86    'export MOZILLA_OFFICIAL=1',
87    'export MOZ_TELEMETRY_REPORTING=1',
88    'mk_add_options MOZ_PGO=1',
89    "mk_add_options PROFILE_GEN_SCRIPT='$(PYTHON) @MOZ_OBJDIR@/_profile/pgo/profileserver.py 10'",
90]
91whitelist['release']['linux64'] += [
92    'export MOZILLA_OFFICIAL=1',
93    'export MOZ_TELEMETRY_REPORTING=1',
94    'mk_add_options MOZ_PGO=1',
95    "mk_add_options PROFILE_GEN_SCRIPT='$(PYTHON) @MOZ_OBJDIR@/_profile/pgo/profileserver.py 10'",
96]
97
98if __name__ == '__main__':
99    import pprint
100    pprint.pprint(whitelist)
101