Source code

Revision control

Other Tools

1
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
2
# vim: set filetype=python:
3
# This Source Code Form is subject to the terms of the Mozilla Public
4
# License, v. 2.0. If a copy of the MPL was not distributed with this
5
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
7
include('build/moz.configure/init.configure')
8
9
# Note:
10
# - Gecko-specific options and rules should go in toolkit/moz.configure.
11
# - Firefox-specific options and rules should go in browser/moz.configure.
12
# - Fennec-specific options and rules should go in
13
# mobile/android/moz.configure.
14
# - Spidermonkey-specific options and rules should go in js/moz.configure.
15
# - etc.
16
17
option('--enable-artifact-builds', env='MOZ_ARTIFACT_BUILDS',
18
help='Download and use prebuilt binary artifacts.')
19
20
@depends('--enable-artifact-builds')
21
def artifact_builds(value):
22
if value:
23
return True
24
25
set_config('MOZ_ARTIFACT_BUILDS', artifact_builds)
26
27
imply_option('--enable-artifact-build-symbols',
28
depends(artifact_builds)(lambda v: False if v is None else None),
29
reason='--disable-artifact-builds')
30
31
option('--enable-artifact-build-symbols', nargs='?', choices=('full',),
32
help='Download symbols when artifact builds are enabled.')
33
34
@depends('--enable-artifact-build-symbols', 'MOZ_AUTOMATION', target)
35
def enable_artifact_build_symbols(value, automation, target):
36
if len(value):
37
return value[0]
38
if bool(value):
39
if target.os == 'Android' and not automation:
40
return 'full'
41
return True
42
return None
43
44
set_config('MOZ_ARTIFACT_BUILD_SYMBOLS',
45
enable_artifact_build_symbols)
46
47
@depends('--enable-artifact-builds')
48
def imply_disable_compile_environment(value):
49
if value:
50
return False
51
52
option(env='MOZ_COPY_PDBS',
53
help='For builds that do not support symbols in the normal fashion,'
54
' generate and copy them into the resulting build archive.')
55
56
set_config('MOZ_COPY_PDBS', depends_if('MOZ_COPY_PDBS')(lambda _: True))
57
58
imply_option('--enable-compile-environment', imply_disable_compile_environment)
59
60
option('--disable-compile-environment',
61
help='Disable compiler/library checks')
62
63
@depends('--disable-compile-environment')
64
def compile_environment(compile_env):
65
if compile_env:
66
return True
67
68
set_config('COMPILE_ENVIRONMENT', compile_environment)
69
add_old_configure_assignment('COMPILE_ENVIRONMENT', compile_environment)
70
71
js_option('--disable-tests',
72
help='Do not build test libraries & programs')
73
74
@depends('--disable-tests')
75
def enable_tests(value):
76
if value:
77
return True
78
79
set_config('ENABLE_TESTS', enable_tests)
80
set_define('ENABLE_TESTS', enable_tests)
81
82
@depends(enable_tests)
83
def gtest_has_rtti(value):
84
if value:
85
return '0'
86
87
set_define('GTEST_HAS_RTTI', gtest_has_rtti)
88
89
@depends(target, enable_tests)
90
def linux_gtest_defines(target, enable_tests):
91
if enable_tests and target.os == 'Android':
92
return namespace(os_linux_android=True,
93
use_own_tr1_tuple=True,
94
has_clone='0')
95
96
set_define('GTEST_OS_LINUX_ANDROID',
97
linux_gtest_defines.os_linux_android)
98
set_define('GTEST_USE_OWN_TR1_TUPLE',
99
linux_gtest_defines.use_own_tr1_tuple)
100
set_define('GTEST_HAS_CLONE',
101
linux_gtest_defines.has_clone)
102
103
js_option('--enable-debug',
104
nargs='?',
105
help='Enable building with developer debug info '
106
'(using the given compiler flags).')
107
108
@depends('--enable-debug')
109
def moz_debug(debug):
110
if debug:
111
return bool(debug)
112
113
set_config('MOZ_DEBUG', moz_debug)
114
set_define('MOZ_DEBUG', moz_debug)
115
# Override any value MOZ_DEBUG may have from the environment when passing it
116
# down to old-configure.
117
add_old_configure_assignment('MOZ_DEBUG',
118
depends('--enable-debug')(lambda x: bool(x)))
119
120
js_option('--enable-rust-debug',
121
default=depends(when='--enable-debug')(lambda: True),
122
help='{Build|Do not build} Rust code with debug assertions turned '
123
'on.')
124
125
@depends(when='--enable-rust-debug')
126
def debug_rust():
127
return True
128
129
set_config('MOZ_DEBUG_RUST', debug_rust)
130
set_define('MOZ_DEBUG_RUST', debug_rust)
131
132
js_option(env='MOZ_PGO', help='Build with profile guided optimizations')
133
134
set_config('MOZ_PGO', depends('MOZ_PGO')(lambda x: bool(x)))
135
136
include('build/moz.configure/toolchain.configure',
137
when='--enable-compile-environment')
138
139
include('build/moz.configure/pkg.configure')
140
# Make this assignment here rather than in pkg.configure to avoid
141
# requiring this file in unit tests.
142
add_old_configure_assignment('PKG_CONFIG', pkg_config)
143
144
include('build/moz.configure/memory.configure',
145
when='--enable-compile-environment')
146
include('build/moz.configure/headers.configure',
147
when='--enable-compile-environment')
148
include('build/moz.configure/warnings.configure',
149
when='--enable-compile-environment')
150
include('build/moz.configure/flags.configure',
151
when='--enable-compile-environment')
152
# rust.configure is included by js/moz.configure.
153
154
js_option('--enable-valgrind',
155
help='Enable Valgrind integration hooks')
156
157
valgrind_h = check_header('valgrind/valgrind.h', when='--enable-valgrind')
158
159
@depends('--enable-valgrind', valgrind_h)
160
def check_valgrind(valgrind, valgrind_h):
161
if valgrind:
162
if not valgrind_h:
163
die('--enable-valgrind specified but Valgrind is not installed')
164
return True
165
166
set_define('MOZ_VALGRIND', check_valgrind)
167
set_config('MOZ_VALGRIND', check_valgrind)
168
169
@depends(target, host)
170
def is_openbsd(target, host):
171
return target.kernel == 'OpenBSD' or host.kernel == 'OpenBSD'
172
173
option(env='SO_VERSION', nargs=1, default='1.0', when=is_openbsd,
174
help='Shared library version for OpenBSD systems')
175
176
@depends('SO_VERSION', when=is_openbsd)
177
def so_version(value):
178
return value
179
180
@template
181
def library_name_info_template(host_or_target):
182
assert host_or_target in {host, target}
183
compiler = {
184
host: host_c_compiler,
185
target: c_compiler,
186
}[host_or_target]
187
188
@depends(host_or_target, compiler, so_version)
189
def library_name_info_impl(host_or_target, compiler, so_version):
190
if host_or_target.kernel == 'WINNT':
191
# There aren't artifacts for mingw builds, so it's OK that the
192
# results are inaccurate in that case.
193
if compiler and compiler.type != 'clang-cl':
194
return namespace(
195
dll=namespace(prefix='', suffix='.dll'),
196
lib=namespace(prefix='lib', suffix='a'),
197
import_lib=namespace(prefix='lib', suffix='a'),
198
rust_lib=namespace(prefix='', suffix='lib'),
199
obj=namespace(prefix='', suffix='o'),
200
)
201
202
return namespace(
203
dll=namespace(prefix='', suffix='.dll'),
204
lib=namespace(prefix='', suffix='lib'),
205
import_lib=namespace(prefix='', suffix='lib'),
206
rust_lib=namespace(prefix='', suffix='lib'),
207
obj=namespace(prefix='', suffix='obj'),
208
)
209
210
elif host_or_target.kernel == 'Darwin':
211
return namespace(
212
dll=namespace(prefix='lib', suffix='.dylib'),
213
lib=namespace(prefix='lib', suffix='a'),
214
import_lib=namespace(prefix=None, suffix=''),
215
rust_lib=namespace(prefix='lib', suffix='a'),
216
obj=namespace(prefix='', suffix='o'),
217
)
218
elif so_version:
219
so = '.so.%s' % so_version
220
else:
221
so = '.so'
222
223
return namespace(
224
dll=namespace(prefix='lib', suffix=so),
225
lib=namespace(prefix='lib', suffix='a'),
226
import_lib=namespace(prefix=None, suffix=''),
227
rust_lib=namespace(prefix='lib', suffix='a'),
228
obj=namespace(prefix='', suffix='o'),
229
)
230
231
return library_name_info_impl
232
233
host_library_name_info = library_name_info_template(host)
234
library_name_info = library_name_info_template(target)
235
236
set_config('DLL_PREFIX', library_name_info.dll.prefix)
237
set_config('DLL_SUFFIX', library_name_info.dll.suffix)
238
set_config('HOST_DLL_PREFIX', host_library_name_info.dll.prefix)
239
set_config('HOST_DLL_SUFFIX', host_library_name_info.dll.suffix)
240
set_config('LIB_PREFIX', library_name_info.lib.prefix)
241
set_config('LIB_SUFFIX', library_name_info.lib.suffix)
242
set_config('RUST_LIB_PREFIX', library_name_info.rust_lib.prefix)
243
set_config('RUST_LIB_SUFFIX', library_name_info.rust_lib.suffix)
244
set_config('OBJ_SUFFIX', library_name_info.obj.suffix)
245
# Lots of compilation tests depend on this variable being present.
246
add_old_configure_assignment('OBJ_SUFFIX', library_name_info.obj.suffix)
247
set_config('IMPORT_LIB_SUFFIX', library_name_info.import_lib.suffix)
248
set_define('MOZ_DLL_PREFIX', depends(library_name_info.dll.prefix)(lambda s: '"%s"' % s))
249
set_define('MOZ_DLL_SUFFIX', depends(library_name_info.dll.suffix)(lambda s: '"%s"' % s))
250
251
include(include_project_configure)
252
253
@depends('--help')
254
@imports(_from='mozbuild.backend', _import='backends')
255
def build_backends_choices(_):
256
return tuple(backends)
257
258
259
@deprecated_option('--enable-build-backend', nargs='+',
260
choices=build_backends_choices)
261
def build_backend(backends):
262
if backends:
263
return tuple('+%s' % b for b in backends)
264
265
imply_option('--build-backends', build_backend)
266
267
268
@depends('--enable-artifact-builds', '--disable-compile-environment',
269
'--enable-build-backend', '--help')
270
@imports('sys')
271
def build_backend_defaults(artifact_builds, compile_environment, requested_backends,
272
_):
273
if 'Tup' in requested_backends:
274
# As a special case, if Tup was requested, do not combine it with any
275
# Make based backend by default.
276
all_backends = []
277
elif artifact_builds:
278
all_backends = ['FasterMake+RecursiveMake']
279
else:
280
all_backends = ['RecursiveMake', 'FasterMake']
281
# Normally, we'd use target.os == 'WINNT', but a dependency on target
282
# would require target to depend on --help, as well as host and shell,
283
# and this is not a can of worms we can open at the moment.
284
if sys.platform == 'win32' and compile_environment:
285
all_backends.append('VisualStudio')
286
return tuple(all_backends) or None
287
288
option('--build-backends', nargs='+', default=build_backend_defaults,
289
choices=build_backends_choices, help='Build backends to generate')
290
291
@depends('--build-backends')
292
def build_backends(backends):
293
return backends
294
295
set_config('BUILD_BACKENDS', build_backends)
296
297
298
@depends(check_build_environment, build_backends)
299
@imports('glob')
300
def check_objdir_backend_reuse(build_env, backends):
301
# "Make based" might be RecursiveMake or a hybrid backend, so "Make" is
302
# intentionally vague for use with the substring match below.
303
incompatible_backends = (
304
('Tup', 'Make'),
305
('Make', 'Tup')
306
)
307
for backend_file in glob.iglob(os.path.join(build_env.topobjdir,
308
'backend.*Backend')):
309
for prev, curr in incompatible_backends:
310
if prev in backend_file and any(curr in b for b in backends):
311
die("The active objdir, %s, was previously "
312
"used to build with a %s based backend. "
313
"Change objdirs (by setting MOZ_OBJDIR in "
314
"your mozconfig) or clobber to continue.\n",
315
build_env.topobjdir, prev)
316
317
318
option('--disable-gtest-in-build',
319
help='Force disable building the gtest libxul during the build.',
320
when='--enable-compile-environment')
321
322
# Determine whether to build the gtest xul. This happens in automation
323
# on Android and Desktop platforms with the exception of:
324
# - Windows PGO, where linking xul-gtest.dll takes too long;
325
# - Android other than x86_64, where gtest is not required.
326
@depends('MOZ_PGO', build_project, target, 'MOZ_AUTOMATION', '--disable-gtest-in-build',
327
enable_tests, when='--enable-compile-environment')
328
def build_gtest(pgo, build_project, target, automation, enabled, enable_tests):
329
if not enable_tests or not enabled:
330
return None
331
if (automation and build_project in ('browser', 'mobile/android') and
332
not ((pgo and target.os == 'WINNT') or (target.os == 'Android' and target.cpu != 'x86_64'))):
333
return True
334
335
set_config('LINK_GTEST_DURING_COMPILE', build_gtest)
336
337
# Localization
338
# ==============================================================
339
option('--enable-ui-locale', default='en-US',
340
help='Select the user interface locale (default: en-US)')
341
342
set_config('MOZ_UI_LOCALE', depends('--enable-ui-locale')(lambda x: x))
343
344
# clang-plugin location
345
# ==============================================================
346
@depends(host_library_name_info, check_build_environment,
347
when='--enable-clang-plugin')
348
def clang_plugin_path(library_name_info, build_env):
349
topobjdir = build_env.topobjdir
350
if topobjdir.endswith('/js/src'):
351
topobjdir = topobjdir[:-7]
352
return os.path.abspath(
353
os.path.join(topobjdir, 'build', 'clang-plugin',
354
'%sclang-plugin%s' % (library_name_info.dll.prefix,
355
library_name_info.dll.suffix))
356
)
357
358
add_old_configure_assignment('CLANG_PLUGIN', clang_plugin_path)
359
360
361
# Awk detection
362
# ==============================================================
363
awk = check_prog('AWK', ('gawk', 'mawk', 'nawk', 'awk'))
364
365
# Until the AWK variable is not necessary in old-configure
366
@depends(awk)
367
def awk_for_old_configure(value):
368
return value
369
370
add_old_configure_assignment('AWK', awk_for_old_configure)
371
372
373
# Perl detection
374
# ==============================================================
375
perl = check_prog('PERL', ('perl5', 'perl'))
376
377
# Until the PERL variable is not necessary in old-configure
378
@depends(perl)
379
def perl_for_old_configure(value):
380
return value
381
382
add_old_configure_assignment('PERL', perl_for_old_configure)
383
384
@template
385
def perl_version_check(min_version):
386
@depends(perl)
387
@checking('for minimum required perl version >= %s' % min_version)
388
def get_perl_version(perl):
389
return Version(check_cmd_output(
390
perl, '-e', 'print $]',
391
onerror=lambda: die('Failed to get perl version.')
392
))
393
394
@depends(get_perl_version)
395
def check_perl_version(version):
396
if version < min_version:
397
die('Perl %s or higher is required.', min_version)
398
399
@depends(perl)
400
@checking('for full perl installation')
401
@imports('subprocess')
402
def has_full_perl_installation(perl):
403
ret = subprocess.call(
404
[perl, '-e', 'use Config; exit(!-d $Config{archlib})'])
405
return ret == 0
406
407
@depends(has_full_perl_installation)
408
def require_full_perl_installation(has_full_perl_installation):
409
if not has_full_perl_installation:
410
die('Cannot find Config.pm or $Config{archlib}. '
411
'A full perl installation is required.')
412
413
perl_version_check('5.006')
414
415
416
# GNU make detection
417
# ==============================================================
418
option(env='MAKE', nargs=1, help='Path to GNU make')
419
420
@depends('MAKE', host)
421
def possible_makes(make, host):
422
candidates = []
423
if host.kernel == 'WINNT':
424
candidates.append('mingw32-make')
425
if make:
426
candidates.append(make[0])
427
if host.kernel == 'WINNT':
428
candidates.extend(('make', 'gmake'))
429
else:
430
candidates.extend(('gmake', 'make'))
431
return candidates
432
433
check_prog('GMAKE', possible_makes)
434
435
@depends(build_backends, build_project)
436
def tup_include(build_backends, build_project):
437
# We need to check the rustc version when building with tup, but
438
# rustc_info isn't available when configuring js (and build_backends isn't
439
# available from project-specific configure), so as a workaround we only
440
# include the file when we know we'll need it. This can be removed when
441
# we globally require a rustc recent enough to build with tup.
442
if build_project not in ('browser', 'mobile/android'):
443
return None
444
for backend in build_backends:
445
if 'Tup' in backend:
446
return 'build/moz.configure/tup.configure'
447
448
include(tup_include)
449
450
# watchman detection
451
# ==============================================================
452
453
option(env='WATCHMAN', nargs=1, help='Path to the watchman program')
454
455
@depends(host, 'WATCHMAN')
456
@checking('for watchman', callback=lambda w: w.path if w else 'not found')
457
def watchman(host, prog):
458
# On Windows, `watchman` is only supported on 64-bit hosts.
459
if host.os == 'WINNT' and host.cpu != 'x86_64':
460
return
461
462
if not prog:
463
prog = find_program('watchman')
464
465
if not prog:
466
return
467
468
# `watchman version` will talk to the Watchman daemon service.
469
# This can hang due to permissions problems. e.g.
471
# `watchman --version` to prevent a class of failures.
472
out = check_cmd_output(prog, '--version', onerror=lambda: None)
473
if out is None:
474
return
475
476
return namespace(path=prog, version=Version(out.strip()))
477
478
@depends_if(watchman)
479
@checking('for watchman version')
480
def watchman_version(w):
481
return w.version
482
483
set_config('WATCHMAN', watchman.path)
484
485
@depends_all(hg_version, hg_config, watchman)
486
@checking('for watchman Mercurial integration')
487
@imports('os')
488
def watchman_hg(hg_version, hg_config, watchman):
489
if hg_version < Version('3.8'):
490
return 'no (Mercurial 3.8+ required)'
491
492
ext_enabled = False
493
mode_disabled = False
494
495
for k in ('extensions.fsmonitor', 'extensions.hgext.fsmonitor'):
496
if k in hg_config and hg_config[k] != '!':
497
ext_enabled = True
498
499
mode_disabled = hg_config.get('fsmonitor.mode') == 'off'
500
501
if not ext_enabled:
502
return 'no (fsmonitor extension not enabled)'
503
if mode_disabled:
504
return 'no (fsmonitor.mode=off disables fsmonitor)'
505
506
return True
507
508
# Miscellaneous programs
509
# ==============================================================
510
check_prog('XARGS', ('xargs',))
511
512
@depends(target)
513
def extra_programs(target):
514
if target.kernel == 'Darwin':
515
return namespace(
516
DSYMUTIL=('dsymutil', 'llvm-dsymutil'),
517
MKFSHFS=('newfs_hfs', 'mkfs.hfsplus'),
518
HFS_TOOL=('hfsplus',)
519
)
520
if target.os == 'GNU' and target.kernel == 'Linux':
521
return namespace(RPMBUILD=('rpmbuild',))
522
523
check_prog('DSYMUTIL', extra_programs.DSYMUTIL,
524
allow_missing=True)
525
check_prog('MKFSHFS', extra_programs.MKFSHFS,
526
allow_missing=True)
527
check_prog('HFS_TOOL', extra_programs.HFS_TOOL,
528
allow_missing=True)
529
check_prog('RPMBUILD', extra_programs.RPMBUILD,
530
allow_missing=True)
531
532
533
@depends(target)
534
@imports('os')
535
def makensis_progs(target):
536
if target.kernel != 'WINNT':
537
return
538
539
candidates = [
540
'makensis-3.01',
541
'makensis-3.0b3',
542
'makensis-3.0b1',
543
'makensis',
544
]
545
546
# Look for nsis installed by msys environment. But only the 32-bit version.
547
# We use an absolute path and insert as the first entry so it is preferred
548
# over a 64-bit exe that may be in PATH.
549
if 'MSYSTEM_PREFIX' in os.environ:
550
prefix = os.path.dirname(os.environ['MSYSTEM_PREFIX'])
551
candidates.insert(0, os.path.join(prefix, 'mingw32', 'bin', 'makensis.exe'))
552
553
return tuple(candidates)
554
555
nsis = check_prog('MAKENSISU', makensis_progs, allow_missing=True)
556
557
# Make sure the version of makensis is up to date.
558
@depends_if(nsis)
559
@checking('for NSIS version')
560
@imports('re')
561
def nsis_version(nsis):
562
nsis_min_version = '3.0b1'
563
out = check_cmd_output(nsis, '-version',
564
onerror=lambda: die('Failed to get nsis version.'))
565
m = re.search(r'(?<=v)[0-9]+\.[0-9]+((a|b|rc)[0-9]+)?', out)
566
567
if not m:
568
raise FatalCheckError('Unknown version of makensis')
569
ver = Version(m.group(0))
570
571
# Versions comparisons don't quite work well with beta versions, so ensure
572
# it works for the non-beta version.
573
if ver < nsis_min_version and (ver >= '3.0a' or ver < '3'):
574
raise FatalCheckError('To build the installer you must have NSIS'
575
' version %s or greater in your path'
576
% nsis_min_version)
577
578
return ver
579
580
# And that makensis is 32-bit (but only on Windows).
581
@depends_if(nsis, when=depends(host)(lambda h: h.kernel == 'WINNT'))
582
@checking('for 32-bit NSIS')
583
def nsis_binary_type(nsis):
584
bin_type = windows_binary_type(nsis)
585
if bin_type != 'win32':
586
raise FatalCheckError('%s is not a 32-bit Windows application' % nsis)
587
588
return 'yes'
589
590
# And any flags we have to give to makensis
591
@depends(host)
592
def nsis_flags(host):
593
if host.kernel != 'WINNT':
594
return '-nocd'
595
return ''
596
597
set_config('MAKENSISU_FLAGS', nsis_flags)
598
599
check_prog('7Z', ('7z', '7za'), allow_missing=True, when=target_is_windows)
600
601
602
@depends(host_c_compiler, c_compiler, bindgen_config_paths)
603
def llvm_objdump(host_c_compiler, c_compiler, bindgen_config_paths):
604
clang = None
605
for compiler in (host_c_compiler, c_compiler):
606
if compiler and compiler.type == 'clang':
607
clang = compiler.compiler
608
break
609
elif compiler and compiler.type == 'clang-cl':
610
clang = os.path.join(os.path.dirname(compiler.compiler), 'clang')
611
break
612
613
if not clang and bindgen_config_paths:
614
clang = bindgen_config_paths.clang_path
615
llvm_objdump = 'llvm-objdump'
616
if clang:
617
out = check_cmd_output(clang, '--print-prog-name=llvm-objdump',
618
onerror=lambda: None)
619
if out:
620
llvm_objdump = out.rstrip()
621
return (llvm_objdump,)
622
623
624
llvm_objdump = check_prog('LLVM_OBJDUMP', llvm_objdump, what='llvm-objdump',
625
when='--enable-compile-environment',
626
paths=toolchain_search_path)
627
628
add_old_configure_assignment('LLVM_OBJDUMP', llvm_objdump)
629
630
631
# Please do not add configure checks from here on.
632
633
# Fallthrough to autoconf-based configure
634
include('build/moz.configure/old.configure')
635
636
# JS Subconfigure.
637
include('js/sub.configure', when=compile_environment & toolkit)
638
639
640
@depends(check_build_environment, build_project)
641
@imports('__sandbox__')
642
@imports('glob')
643
@imports(_from='os.path', _import='exists')
644
def config_status_deps(build_env, build_project):
645
646
topsrcdir = build_env.topsrcdir
647
topobjdir = build_env.topobjdir
648
649
if not topobjdir.endswith('js/src'):
650
extra_deps = [os.path.join(topobjdir, '.mozconfig.json')]
651
else:
652
# mozconfig changes may impact js configure.
653
extra_deps = [os.path.join(topobjdir[:-7], '.mozconfig.json')]
654
655
confvars = os.path.join(topsrcdir, build_project, 'confvars.sh')
656
if exists(confvars):
657
extra_deps.append(confvars)
658
659
return list(__sandbox__._all_paths) + extra_deps + [
660
os.path.join(topsrcdir, 'CLOBBER'),
661
os.path.join(topsrcdir, 'configure'),
662
os.path.join(topsrcdir, 'js', 'src', 'configure'),
663
os.path.join(topsrcdir, 'configure.in'),
664
os.path.join(topsrcdir, 'js', 'src', 'configure.in'),
665
os.path.join(topsrcdir, 'nsprpub', 'configure'),
666
os.path.join(topsrcdir, 'config', 'milestone.txt'),
667
os.path.join(topsrcdir, 'browser', 'config', 'version.txt'),
668
os.path.join(topsrcdir, 'browser', 'config', 'version_display.txt'),
669
os.path.join(topsrcdir, 'build', 'virtualenv_packages.txt'),
670
os.path.join(topsrcdir, 'python', 'mozbuild', 'mozbuild', 'virtualenv.py'),
671
os.path.join(topsrcdir, 'testing', 'mozbase', 'packages.txt'),
672
os.path.join(topsrcdir, 'aclocal.m4'),
673
os.path.join(topsrcdir, 'old-configure.in'),
674
os.path.join(topsrcdir, 'js', 'src', 'aclocal.m4'),
675
os.path.join(topsrcdir, 'js', 'src', 'old-configure.in'),
676
] + glob.glob(os.path.join(topsrcdir, 'build', 'autoconf', '*.m4'))
677
678
set_config('CONFIG_STATUS_DEPS', config_status_deps)
679
# Please do not add anything after setting config_dep_paths.