# -*- Mode: python; c-basic-offset: 4; 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/.

EXPORTS += [
    'jemalloc_types.h',
]

if not CONFIG['MOZ_JEMALLOC4']:
    SOURCES += [
        'jemalloc.c',
    ]
    Library('mozjemalloc')
    STATIC_LIBRARY_NAME = 'jemalloc'
    FORCE_STATIC_LIB = True

    # See bug 422055.
    if CONFIG['OS_ARCH'] == 'SunOS' and not CONFIG['GNU_CC'] \
            and CONFIG['MOZ_OPTIMIZE']:
        CFLAGS += ['-xO5']

# For non release/esr builds, enable (some) fatal jemalloc assertions.  This
# helps us catch memory errors.
if CONFIG['MOZ_UPDATE_CHANNEL'] not in ('release', 'esr'):
    DEFINES['MOZ_JEMALLOC_HARD_ASSERTS'] = True

DEFINES['abort'] = 'moz_abort'

DEFINES['MOZ_JEMALLOC_IMPL'] = True

#XXX: PGO on Linux causes problems here
# See bug 419470
if CONFIG['OS_TARGET'] == 'Linux':
    NO_PGO = True

if CONFIG['MOZ_NUWA_PROCESS']:
    DEFINES['pthread_mutex_lock'] = '__real_pthread_mutex_lock';

LOCAL_INCLUDES += [
    '/memory/build',
]

if CONFIG['GNU_CC']:
    CFLAGS += ['-Wshadow']

if CONFIG['_MSC_VER']:
    CFLAGS += ['-wd4273'] # inconsistent dll linkage (bug 558163)
