mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-17 14:25:49 +00:00
![Mike Hommey](/assets/img/avatar_default.png)
This aligns with the triplets used by clang/llvm. Technically, this won't break iOS builds still using -darwin triplets until we move MOZ_IOS_SDK to moz.configure and actively reject non iOS targets with the iOS sdk. Also allow to distinguish iOS and OSX with target.os.
136 lines
4.4 KiB
Python
136 lines
4.4 KiB
Python
# -*- Mode: python; c-basic-offset: 4; 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')
|
|
include('build/moz.configure/checks.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.
|
|
|
|
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:
|
|
imply_option('--disable-compile-environment')
|
|
set_config('MOZ_ARTIFACT_BUILDS', '1')
|
|
return bool(value)
|
|
|
|
|
|
option('--disable-compile-environment',
|
|
help='Disable compiler/library checks')
|
|
|
|
@depends('--disable-compile-environment')
|
|
def compile_environment(value):
|
|
if value:
|
|
set_config('COMPILE_ENVIRONMENT', '1')
|
|
add_old_configure_assignment('COMPILE_ENVIRONMENT', '1')
|
|
return bool(value)
|
|
|
|
|
|
@depends('--help')
|
|
@advanced
|
|
def build_backends_choices(help):
|
|
from mozbuild.backend import backends
|
|
return tuple(backends)
|
|
|
|
|
|
option('--enable-build-backend', nargs='+', choices=build_backends_choices,
|
|
help='Enable additional build backends')
|
|
|
|
@depends('--enable-build-backend', '--enable-artifact-builds')
|
|
def build_backend(backends, artifact_builds):
|
|
if artifact_builds:
|
|
all_backends = ['FasterMake+RecursiveMake']
|
|
else:
|
|
all_backends = ['RecursiveMake', 'FasterMake']
|
|
all_backends.extend(backends)
|
|
set_config('BUILD_BACKENDS', unique_list(all_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):
|
|
add_old_configure_assignment('AWK', value)
|
|
|
|
|
|
# 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):
|
|
add_old_configure_assignment('PERL', value)
|
|
|
|
@template
|
|
def perl_version_check(min_version):
|
|
@depends(perl)
|
|
@checking('for minimum required perl version >= %s' % min_version)
|
|
@advanced
|
|
def get_perl_version(perl):
|
|
import subprocess
|
|
try:
|
|
return subprocess.check_output([perl, '-e', 'print $]'])
|
|
except subprocess.CalledProcessError as e:
|
|
error('Failed to get perl version: %s' % e.message)
|
|
|
|
@depends(get_perl_version)
|
|
def check_perl_version(version):
|
|
if version < min_version:
|
|
error('Perl %s or higher is required.' % min_version)
|
|
|
|
@depends(perl)
|
|
@checking('for full perl installation')
|
|
@advanced
|
|
def has_full_perl_installation(perl):
|
|
import subprocess
|
|
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:
|
|
error('Cannot find Config.pm or $Config{archlib}. '
|
|
'A full perl installation is required.')
|
|
|
|
perl_version_check('5.006')
|
|
|
|
|
|
# Miscellaneous programs
|
|
# ==============================================================
|
|
check_prog('DOXYGEN', ('doxygen',), allow_missing=True)
|
|
check_prog('TAR', ('gnutar', 'gtar', 'tar'))
|
|
check_prog('UNZIP', ('unzip',))
|
|
check_prog('XARGS', ('xargs',))
|
|
check_prog('ZIP', ('zip',))
|
|
|
|
@depends(target)
|
|
def mac_programs(target):
|
|
if target.kernel == 'Darwin':
|
|
check_prog('DSYMUTIL', ('dsymutil', 'llvm-dsymutil'), allow_missing=True)
|
|
check_prog('GENISOIMAGE', ('genisoimage',), allow_missing=True)
|
|
|
|
@depends(target)
|
|
def linux_programs(target):
|
|
if target.os == 'GNU' and target.kernel == 'Linux':
|
|
check_prog('RPMBUILD', ('rpmbuild',), allow_missing=True)
|
|
|
|
|
|
# Fallthrough to autoconf-based configure
|
|
include('build/moz.configure/old.configure')
|