# -*- 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/.
NO_VISIBILITY_FLAGS = True

EXPORTS.mozilla += [
    'mozalloc.h',
    'mozalloc_abort.h',
    'mozalloc_oom.h',
]

if CONFIG['WRAP_STL_INCLUDES']:
    if CONFIG['GNU_CXX']:
        EXPORTS.mozilla += ['throw_gcc.h']
    elif CONFIG['_MSC_VER']:
        DEFINES['_HAS_EXCEPTIONS'] = 0
        if CONFIG['MOZ_MSVC_STL_WRAP_RAISE']:
            EXPORTS.mozilla += [
                'msvc_raise_wrappers.h',
                'throw_msvc.h',
            ]
            SOURCES += [
                'msvc_raise_wrappers.cpp',
            ]

UNIFIED_SOURCES += [
    'mozalloc.cpp',
    'mozalloc_abort.cpp',
    'mozalloc_oom.cpp',
]

FINAL_LIBRARY = 'mozglue'

# The strndup declaration in string.h is in an ifdef __USE_GNU section
DEFINES['_GNU_SOURCE'] = True

DISABLE_STL_WRAPPING = True

DEFINES['IMPL_MFBT'] = True

if CONFIG['_MSC_VER']:
    DIRS += ['staticruntime']

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

DIST_INSTALL = True

if CONFIG['GNU_CXX']:
    CXXFLAGS += ['-Wshadow']
