mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-06 23:37:31 +09:00
https://bugzilla.mozilla.org/show_bug.cgi?id=1158445 https://bugzilla.mozilla.org/show_bug.cgi?id=963983 https://bugzilla.mozilla.org/show_bug.cgi?id=1542758 Solaris madvise and malign don't perfectly map to their POSIX counterparts, and some Linux versions (especially Android) don't define the POSIX counterparts at all, so options are limited. Ideally posix_madvise and posix_malign should be the safer and more portable options for all platforms.
91 lines
3 KiB
Python
91 lines
3 KiB
Python
# -*- 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/.
|
|
|
|
|
|
@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)
|