mirror of https://github.com/roytam1/UXP
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
3.0 KiB
90 lines
3.0 KiB
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- |
|
# 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/. |
|
|
|
|
|
@deprecated_option(env='MOZ_JEMALLOC4') |
|
def moz_jemalloc4(value): |
|
die('MOZ_JEMALLOC4 is no longer supported') |
|
|
|
|
|
option('--enable-jemalloc', env='MOZ_MEMORY', |
|
help='Replace system memory allocator with jemalloc') |
|
|
|
@depends('--enable-jemalloc', target, build_project, c_compiler) |
|
def jemalloc(value, target, build_project, c_compiler): |
|
if value.origin != 'default': |
|
return bool(value) or None |
|
|
|
if build_project == 'js': |
|
return True |
|
|
|
if target.kernel == 'Darwin' and target.cpu == 'x86_64': |
|
# Don't enable by default on 32-bits OSX. See bug 702250. |
|
return True |
|
|
|
if target.kernel == 'WINNT' and c_compiler.type in ('msvc', 'clang-cl'): |
|
return True |
|
|
|
if target.kernel == 'Linux': |
|
return True |
|
|
|
|
|
set_config('MOZ_MEMORY', jemalloc) |
|
set_define('MOZ_MEMORY', jemalloc) |
|
add_old_configure_assignment('MOZ_MEMORY', jemalloc) |
|
|
|
|
|
# Because --enable-jemalloc doesn't use a default because of the dependency |
|
# on the target, we can't use a js_option for it to propagate to js/src |
|
# through the old-configure. |
|
@depends(jemalloc) |
|
def jemalloc_for_old_configure(jemalloc): |
|
return '--%s-jemalloc' % ('enable' if jemalloc else 'disable') |
|
|
|
add_old_configure_arg(jemalloc_for_old_configure) |
|
|
|
|
|
@depends(jemalloc, target) |
|
def jemalloc_os_define(jemalloc, target): |
|
if jemalloc: |
|
if target.kernel == 'WINNT': |
|
return 'MOZ_MEMORY_WINDOWS' |
|
if target.kernel == 'Linux': |
|
return 'MOZ_MEMORY_LINUX' |
|
if target.kernel == 'Darwin': |
|
return 'MOZ_MEMORY_DARWIN' |
|
if target.kernel in ('kFreeBSD', 'FreeBSD', 'NetBSD'): |
|
return 'MOZ_MEMORY_BSD' |
|
if target.kernel == 'SunOS': |
|
return 'MOZ_MEMORY_SOLARIS' |
|
|
|
die('--enable-jemalloc is not supported on %s', target.kernel) |
|
|
|
set_define(jemalloc_os_define, '1') |
|
|
|
@depends(jemalloc, target) |
|
def jemalloc_os_define_android(jemalloc, target): |
|
if jemalloc and target.os == 'Android': |
|
return 'MOZ_MEMORY_ANDROID' |
|
|
|
set_define(jemalloc_os_define_android, '1') |
|
|
|
|
|
option('--enable-replace-malloc', |
|
help='Enable ability to dynamically replace the malloc implementation') |
|
|
|
@depends('--enable-replace-malloc', jemalloc, milestone, build_project) |
|
def replace_malloc(value, jemalloc, milestone, build_project): |
|
# Enable on central for the debugging opportunities it adds. |
|
if value and not jemalloc: |
|
die('--enable-replace-malloc requires --enable-jemalloc') |
|
if value.origin != 'default': |
|
return bool(value) or None |
|
if milestone.is_nightly and jemalloc and build_project != 'js': |
|
return True |
|
|
|
set_config('MOZ_REPLACE_MALLOC', replace_malloc) |
|
set_define('MOZ_REPLACE_MALLOC', replace_malloc) |
|
add_old_configure_assignment('MOZ_REPLACE_MALLOC', replace_malloc)
|
|
|