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.
81 lines
3.2 KiB
81 lines
3.2 KiB
dnl This Source Code Form is subject to the terms of the Mozilla Public |
|
dnl License, v. 2.0. If a copy of the MPL was not distributed with this |
|
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/. |
|
|
|
AC_DEFUN([MOZ_SUBCONFIGURE_JEMALLOC], [ |
|
|
|
if test "$MOZ_BUILD_APP" != js -o -n "$JS_STANDALONE"; then |
|
|
|
# Run jemalloc configure script |
|
|
|
if test "$MOZ_MEMORY" && test -n "$MOZ_REPLACE_MALLOC"; then |
|
ac_configure_args="--build=$build --host=$target --enable-stats --with-jemalloc-prefix=je_ --disable-valgrind" |
|
# We're using memalign for _aligned_malloc in memory/build/mozmemory_wrap.c |
|
# on Windows, so just export memalign on all platforms. |
|
ac_configure_args="$ac_configure_args ac_cv_func_memalign=yes" |
|
if test -n "$MOZ_REPLACE_MALLOC"; then |
|
# When using replace_malloc, we always want valloc exported from jemalloc. |
|
ac_configure_args="$ac_configure_args ac_cv_func_valloc=yes" |
|
if test "${OS_ARCH}" = Darwin; then |
|
# We also need to enable pointer validation on Mac because jemalloc's |
|
# zone allocator is not used. |
|
ac_configure_args="$ac_configure_args --enable-ivsalloc" |
|
fi |
|
fi |
|
MANGLE="malloc posix_memalign aligned_alloc calloc realloc free memalign valloc malloc_usable_size" |
|
JEMALLOC_WRAPPER=replace_ |
|
if test -n "$MANGLE"; then |
|
MANGLED= |
|
for mangle in ${MANGLE}; do |
|
if test -n "$MANGLED"; then |
|
MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle,$MANGLED" |
|
else |
|
MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle" |
|
fi |
|
done |
|
ac_configure_args="$ac_configure_args --with-mangling=$MANGLED" |
|
fi |
|
unset CONFIG_FILES |
|
if test -z "$MOZ_TLS"; then |
|
ac_configure_args="$ac_configure_args --disable-tls" |
|
fi |
|
EXTRA_CFLAGS="$CFLAGS" |
|
for var in AS CC CXX CPP LD AR RANLIB STRIP CPPFLAGS EXTRA_CFLAGS LDFLAGS; do |
|
ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'" |
|
done |
|
|
|
# jemalloc's configure assumes that if you have CFLAGS set at all, you set |
|
# all the flags necessary to configure jemalloc, which is not likely to be |
|
# the case on Windows if someone is building Firefox with flags set in |
|
# their mozconfig. |
|
if test "$_MSC_VER"; then |
|
ac_configure_args="$ac_configure_args CFLAGS=" |
|
fi |
|
|
|
# Force disable DSS support in jemalloc. |
|
ac_configure_args="$ac_configure_args ac_cv_func_sbrk=false" |
|
|
|
# Make Linux builds munmap freed chunks instead of recycling them. |
|
ac_configure_args="$ac_configure_args --enable-munmap" |
|
|
|
# Disable cache oblivious behavior that appears to have a performance |
|
# impact on Firefox. |
|
ac_configure_args="$ac_configure_args --disable-cache-oblivious" |
|
|
|
if ! test -e memory/jemalloc; then |
|
mkdir -p memory/jemalloc |
|
fi |
|
|
|
# jemalloc's configure runs git to determine the version. But when building |
|
# from a gecko git clone, the git commands it uses is going to pick gecko's |
|
# information, not jemalloc's, which is useless. So pretend we don't have git |
|
# at all. That will make jemalloc's configure pick the in-tree VERSION file. |
|
(PATH="$srcdir/memory/jemalloc/helper:$PATH"; |
|
AC_OUTPUT_SUBDIRS(memory/jemalloc/src) |
|
) || exit 1 |
|
ac_configure_args="$_SUBDIR_CONFIG_ARGS" |
|
fi |
|
|
|
fi |
|
|
|
])
|
|
|