diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | ad18d877ddd2a44d98fa12ccd3dbbcf4d0ac4299 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /moz.configure | |
parent | 15477ed9af4859dacb069040b5d4de600803d3bc (diff) | |
download | uxp-ad18d877ddd2a44d98fa12ccd3dbbcf4d0ac4299.tar.gz |
Add m-esr52 at 52.6.0
Diffstat (limited to 'moz.configure')
-rw-r--r-- | moz.configure | 342 |
1 files changed, 342 insertions, 0 deletions
diff --git a/moz.configure b/moz.configure new file mode 100644 index 0000000000..976cbd014e --- /dev/null +++ b/moz.configure @@ -0,0 +1,342 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +include('build/moz.configure/init.configure') + +# Note: +# - Gecko-specific options and rules should go in toolkit/moz.configure. +# - Firefox-specific options and rules should go in browser/moz.configure. +# - Fennec-specific options and rules should go in +# mobile/android/moz.configure. +# - Spidermonkey-specific options and rules should go in js/moz.configure. +# - etc. + +# Multiprocess Firefox Testing UI - Nightly and Aurora +# To be removed in Bug 1003313 +@depends(milestone) +def e10s_testing_only(milestone): + if not milestone.is_release_or_beta: + return True + +set_config('E10S_TESTING_ONLY', e10s_testing_only) +set_define('E10S_TESTING_ONLY', e10s_testing_only) + + +option('--enable-artifact-builds', env='MOZ_ARTIFACT_BUILDS', + help='Download and use prebuilt binary artifacts.') + +@depends('--enable-artifact-builds') +def artifact_builds(value): + if value: + return True + +set_config('MOZ_ARTIFACT_BUILDS', artifact_builds) + +imply_option('--enable-artifact-build-symbols', + depends(artifact_builds)(lambda v: False if v is None else None), + reason='--disable-artifact-builds') + +option('--enable-artifact-build-symbols', + help='Download symbols when artifact builds are enabled.') + +set_config('MOZ_ARTIFACT_BUILD_SYMBOLS', + depends_if('--enable-artifact-build-symbols')(lambda _: True)) + +@depends('--enable-artifact-builds') +def imply_disable_compile_environment(value): + if value: + return False + +imply_option('--enable-compile-environment', imply_disable_compile_environment) + +option('--disable-compile-environment', + help='Disable compiler/library checks') + +@depends('--disable-compile-environment') +def compile_environment(compile_env): + if compile_env: + return True + +set_config('COMPILE_ENVIRONMENT', compile_environment) +add_old_configure_assignment('COMPILE_ENVIRONMENT', compile_environment) + +js_option('--disable-tests', + help='Do not build test libraries & programs') + +@depends('--disable-tests') +def enable_tests(value): + if value: + return True + +set_config('ENABLE_TESTS', enable_tests) +set_define('ENABLE_TESTS', enable_tests) + +@depends(enable_tests) +def gtest_has_rtti(value): + if value: + return '0' + +set_define('GTEST_HAS_RTTI', gtest_has_rtti) + +@depends(target, enable_tests) +def linux_gtest_defines(target, enable_tests): + if enable_tests and target.os == 'Android': + return namespace(os_linux_android=True, + use_own_tr1_tuple=True, + has_clone='0') + +set_define('GTEST_OS_LINUX_ANDROID', + delayed_getattr(linux_gtest_defines, 'os_linux_android')) +set_define('GTEST_USE_OWN_TR1_TUPLE', + delayed_getattr(linux_gtest_defines, 'use_own_tr1_tuple')) +set_define('GTEST_HAS_CLONE', + delayed_getattr(linux_gtest_defines, 'has_clone')) + +js_option('--enable-debug', + nargs='?', + help='Enable building with developer debug info ' + '(using the given compiler flags).') + +add_old_configure_assignment('MOZ_DEBUG', + depends('--enable-debug')(lambda v: bool(v))) + +include('build/moz.configure/pkg.configure') +# Make this assignment here rather than in pkg.configure to avoid +# requiring this file in unit tests. +add_old_configure_assignment('PKG_CONFIG', pkg_config) + +include('build/moz.configure/toolchain.configure', + when='--enable-compile-environment') +include('build/moz.configure/memory.configure', + when='--enable-compile-environment') +include('build/moz.configure/headers.configure', + when='--enable-compile-environment') +include('build/moz.configure/warnings.configure', + when='--enable-compile-environment') + +include(include_project_configure) + +@depends('--help') +@imports(_from='mozbuild.backend', _import='backends') +def build_backends_choices(_): + return tuple(backends) + + +@deprecated_option('--enable-build-backend', nargs='+', + choices=build_backends_choices) +def build_backend(backends): + if backends: + return tuple('+%s' % b for b in backends) + +imply_option('--build-backends', build_backend) + + +@depends('--enable-artifact-builds', '--disable-compile-environment', '--help') +@imports('sys') +def build_backend_defaults(artifact_builds, compile_environment, _): + if artifact_builds: + all_backends = ['FasterMake+RecursiveMake'] + else: + all_backends = ['RecursiveMake', 'FasterMake'] + # Normally, we'd use target.os == 'WINNT', but a dependency on target + # would require target to depend on --help, as well as host and shell, + # and this is not a can of worms we can open at the moment. + if sys.platform == 'win32' and compile_environment: + all_backends.append('VisualStudio') + return tuple(all_backends) + +option('--build-backends', nargs='+', default=build_backend_defaults, + choices=build_backends_choices, help='Build backends to generate') + +@depends('--build-backends') +def build_backends(backends): + return backends + +set_config('BUILD_BACKENDS', build_backends) + + +# Awk detection +# ============================================================== +awk = check_prog('AWK', ('gawk', 'mawk', 'nawk', 'awk')) + +# Until the AWK variable is not necessary in old-configure +@depends(awk) +def awk_for_old_configure(value): + return value + +add_old_configure_assignment('AWK', awk_for_old_configure) + + +# Perl detection +# ============================================================== +perl = check_prog('PERL', ('perl5', 'perl')) + +# Until the PERL variable is not necessary in old-configure +@depends(perl) +def perl_for_old_configure(value): + return value + +add_old_configure_assignment('PERL', perl_for_old_configure) + +@template +def perl_version_check(min_version): + @depends(perl) + @checking('for minimum required perl version >= %s' % min_version) + def get_perl_version(perl): + return Version(check_cmd_output( + perl, '-e', 'print $]', + onerror=lambda: die('Failed to get perl version.') + )) + + @depends(get_perl_version) + def check_perl_version(version): + if version < min_version: + die('Perl %s or higher is required.', min_version) + + @depends(perl) + @checking('for full perl installation') + @imports('subprocess') + def has_full_perl_installation(perl): + ret = subprocess.call( + [perl, '-e', 'use Config; exit(!-d $Config{archlib})']) + return ret == 0 + + @depends(has_full_perl_installation) + def require_full_perl_installation(has_full_perl_installation): + if not has_full_perl_installation: + die('Cannot find Config.pm or $Config{archlib}. ' + 'A full perl installation is required.') + +perl_version_check('5.006') + + +# GNU make detection +# ============================================================== +option(env='MAKE', nargs=1, help='Path to GNU make') + +@depends('MAKE', host) +def possible_makes(make, host): + candidates = [] + if host.kernel == 'WINNT': + candidates.append('mingw32-make') + if make: + candidates.append(make[0]) + if host.kernel == 'WINNT': + candidates.extend(('make', 'gmake')) + else: + candidates.extend(('gmake', 'make')) + return candidates + +check_prog('GMAKE', possible_makes) + +# tup detection +# ============================================================== +@depends(build_backends) +def tup_progs(build_backends): + for backend in build_backends: + if 'Tup' in backend: + return ['tup'] + return None + +tup = check_prog('TUP', tup_progs) + +# Miscellaneous programs +# ============================================================== +check_prog('DOXYGEN', ('doxygen',), allow_missing=True) +check_prog('XARGS', ('xargs',)) + +@depends(target) +def extra_programs(target): + if target.kernel == 'Darwin': + return namespace( + DSYMUTIL=('dsymutil', 'llvm-dsymutil'), + GENISOIMAGE=('genisoimage',), + ) + if target.os == 'GNU' and target.kernel == 'Linux': + return namespace(RPMBUILD=('rpmbuild',)) + +check_prog('DSYMUTIL', delayed_getattr(extra_programs, 'DSYMUTIL'), + allow_missing=True) +check_prog('GENISOIMAGE', delayed_getattr(extra_programs, 'GENISOIMAGE'), + allow_missing=True) +check_prog('RPMBUILD', delayed_getattr(extra_programs, 'RPMBUILD'), + allow_missing=True) + +option('--enable-system-hunspell', + help="Use system hunspell (located with pkgconfig)") + +@depends('--enable-system-hunspell', compile_environment) +def check_for_hunspell(value, compile_env): + return value and compile_env + +system_hunspell = pkg_check_modules('MOZ_HUNSPELL', 'hunspell', + when=check_for_hunspell) + +set_config('MOZ_SYSTEM_HUNSPELL', depends_if(system_hunspell)(lambda _: True)) + + +@depends(target) +@imports('os') +def makensis_progs(target): + if target.kernel != 'WINNT': + return + + candidates = [ + 'makensis-3.01.exe', + 'makensis-3.0b3.exe', + 'makensis-3.0b1.exe', + 'makensis.exe', + 'makensis', + ] + + # Look for nsis installed by msys environment. But only the 32-bit version. + # We use an absolute path and insert as the first entry so it is preferred + # over a 64-bit exe that may be in PATH. + if 'MSYSTEM_PREFIX' in os.environ: + prefix = os.path.dirname(os.environ['MSYSTEM_PREFIX']) + candidates.insert(0, os.path.join(prefix, 'mingw32', 'bin', 'makensis.exe')) + + return tuple(candidates) + +nsis = check_prog('MAKENSISU', makensis_progs) + +# Make sure the version of makensis is up to date. +@depends_if(nsis) +@checking('for NSIS version') +@imports('re') +def nsis_version(nsis): + nsis_min_version = '3.0b1' + out = check_cmd_output(nsis, '-version', + onerror=lambda: die('Failed to get nsis version.')) + m = re.search(r'(?<=v)[0-9]+\.[0-9]+((a|b|rc)[0-9]+)?', out) + + if not m: + raise FatalCheckError('Unknown version of makensis') + ver = Version(m.group(0)) + + # Versions comparisons don't quite work well with beta versions, so ensure + # it works for the non-beta version. + if ver < nsis_min_version and (ver >= '3.0a' or ver < '3'): + raise FatalCheckError('To build the installer you must have NSIS' + ' version %s or greater in your path' + % nsis_min_version) + + return ver + +# And that makensis is 32-bit. +@depends_if(nsis) +@checking('for 32-bit NSIS') +def nsis_binary_type(nsis): + bin_type = windows_binary_type(nsis) + if bin_type != 'win32': + raise FatalCheckError('%s is not a 32-bit Windows application' % nsis) + + return 'yes' + + +# Fallthrough to autoconf-based configure +include('build/moz.configure/old.configure') +# Please do not add anything after the include of old.configure. |