# -*- 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 deprecated') option('--enable-jemalloc', env='MOZ_MEMORY', help='Replace memory allocator with jemalloc') @depends('--enable-jemalloc', target) def jemalloc(value, target): if value.origin != 'default': return bool(value) or None if target.kernel in ('Darwin', 'Linux', 'WINNT'): 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) 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 build_project == 'memory': return True 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) @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)