2016-07-14 19:16:42 +03:00
|
|
|
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
2016-04-14 11:07:57 +03:00
|
|
|
# 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/.
|
|
|
|
|
|
|
|
|
2017-05-11 07:16:00 +03:00
|
|
|
@deprecated_option(env='MOZ_JEMALLOC4')
|
|
|
|
def moz_jemalloc4(value):
|
|
|
|
die('MOZ_JEMALLOC4 is deprecated')
|
2016-04-14 11:07:57 +03:00
|
|
|
|
|
|
|
|
2017-05-11 07:16:00 +03:00
|
|
|
option('--enable-jemalloc', env='MOZ_MEMORY',
|
2016-04-14 11:07:57 +03:00
|
|
|
help='Replace memory allocator with jemalloc')
|
|
|
|
|
2017-10-12 16:22:59 +03:00
|
|
|
|
2018-03-07 19:49:28 +03:00
|
|
|
@depends('--enable-jemalloc', target)
|
|
|
|
def jemalloc(value, target):
|
2016-04-14 11:07:57 +03:00
|
|
|
if value.origin != 'default':
|
|
|
|
return bool(value) or None
|
|
|
|
|
2018-03-07 19:49:28 +03:00
|
|
|
if target.kernel in ('Darwin', 'Linux', 'WINNT'):
|
2016-04-14 11:07:57 +03:00
|
|
|
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.
|
2017-05-11 07:16:00 +03:00
|
|
|
@depends(jemalloc)
|
|
|
|
def jemalloc_for_old_configure(jemalloc):
|
|
|
|
return '--%s-jemalloc' % ('enable' if jemalloc else 'disable')
|
2016-04-14 11:07:57 +03:00
|
|
|
|
2017-10-12 16:22:59 +03:00
|
|
|
|
2016-04-14 11:07:57 +03:00
|
|
|
add_old_configure_arg(jemalloc_for_old_configure)
|
2016-04-14 12:43:49 +03:00
|
|
|
|
|
|
|
|
2016-04-14 12:55:01 +03:00
|
|
|
option('--enable-replace-malloc',
|
|
|
|
help='Enable ability to dynamically replace the malloc implementation')
|
|
|
|
|
2017-10-12 16:22:59 +03:00
|
|
|
|
2016-04-14 12:55:01 +03:00
|
|
|
@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')
|
2016-04-27 05:53:17 +03:00
|
|
|
if value.origin != 'default':
|
|
|
|
return bool(value) or None
|
2017-11-15 08:21:15 +03:00
|
|
|
if build_project == 'memory':
|
|
|
|
return True
|
2016-04-27 05:53:17 +03:00
|
|
|
if milestone.is_nightly and jemalloc and build_project != 'js':
|
|
|
|
return True
|
2016-04-14 12:55:01 +03:00
|
|
|
|
2017-10-12 16:22:59 +03:00
|
|
|
|
2016-04-14 12:55:01 +03:00
|
|
|
set_config('MOZ_REPLACE_MALLOC', replace_malloc)
|
|
|
|
set_define('MOZ_REPLACE_MALLOC', replace_malloc)
|
|
|
|
add_old_configure_assignment('MOZ_REPLACE_MALLOC', replace_malloc)
|
2017-11-23 11:24:19 +03:00
|
|
|
|
|
|
|
|
|
|
|
@depends(replace_malloc, build_project)
|
|
|
|
def replace_malloc_static(replace_malloc, build_project):
|
|
|
|
# Default to statically linking replace-malloc libraries that can be
|
|
|
|
# statically linked, except when building with --enable-project=memory.
|
|
|
|
if replace_malloc and build_project != 'memory':
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
|
|
set_config('MOZ_REPLACE_MALLOC_STATIC', replace_malloc_static)
|