author Mike Hommey <>
Thu, 17 Jan 2019 06:49:10 +0000
changeset 514225 263e45bdcd59a06a69caa935a5e8ab8d2dd2a1d1
parent 514181 b88b9b479e6369ffba51abf4d6e4d6844da5002c
child 514226 364d2be12e37dad192b71f732720f815c3313b32
permissions -rw-r--r--
Bug 1520393 - Use proper defaults for --enable-jemalloc and --enable-replace-malloc. r=nalexander Back when those were added, option defaults could not indirectly depend on `target` or `host`, but that changed with bug 1322025. As a side effect, this allows to turn them into straight js_options without resorting to the manual add_old_configure_arg. Differential Revision:

# -*- 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

def moz_jemalloc4(value):
    die('MOZ_JEMALLOC4 is deprecated')

def jemalloc_default(target):
    return target.kernel in ('Darwin', 'Linux', 'WINNT')

js_option('--enable-jemalloc', env='MOZ_MEMORY', default=jemalloc_default,
          help='{Replace|Do not replace} memory allocator with jemalloc')

set_config('MOZ_MEMORY', True, when='--enable-jemalloc')
set_define('MOZ_MEMORY', True, when='--enable-jemalloc')
add_old_configure_assignment('MOZ_MEMORY', True, when='--enable-jemalloc')

@depends(milestone, build_project)
def replace_malloc_default(milestone, build_project):
    if build_project == 'memory':
        return True
    if milestone.is_nightly and build_project != 'js':
        return True

js_option('--enable-replace-malloc', default=replace_malloc_default,
          help='{Enable|Disable} ability to dynamically replace the malloc implementation')

set_config('MOZ_REPLACE_MALLOC', True, when='--enable-replace-malloc')
set_define('MOZ_REPLACE_MALLOC', True, when='--enable-replace-malloc')

@depends(build_project, when='--enable-replace-malloc')
def replace_malloc_static(build_project):
    # Default to statically linking replace-malloc libraries that can be
    # statically linked, except when building with --enable-project=memory.
    if build_project != 'memory':
        return True

set_config('MOZ_REPLACE_MALLOC_STATIC', replace_malloc_static)