js/src/build/moz.build
author Andy Wingo <wingo@igalia.com>
Wed, 06 Feb 2019 13:41:56 +0000
changeset 457557 4b74d76e55a819852c8fa925efd25c57fdf35c9d
parent 437336 6a27ee7d892bbc85ce8b2223724929ce783c5a76
child 474763 2a4a5afa1ff204c9052697e573391992ee99e4c7
permissions -rw-r--r--
Bug 1522436 - Enable BigInt compilation by default r=jandem,terpri,froydnj Differential Revision: https://phabricator.services.mozilla.com/D17487

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

CONFIGURE_SUBST_FILES += [
    'js-config',
    'js.pc',
]

LIBRARY_DEFINES['EXPORT_JS_API'] = True

if not CONFIG['JS_STANDALONE']:
    LIBRARY_DEFINES['MOZ_HAS_MOZGLUE'] = True

# JavaScript must be built shared, even for static builds, as it is used by
# other modules which are always built shared. Failure to do so results in
# the js code getting copied into xpinstall and jsd as well as mozilla-bin,
# and then the static data cells used for locking no longer work.
#
# In fact, we now build both a static and a shared library, as the
# JS shell would like to link to the static library.

if CONFIG['JS_SHARED_LIBRARY']:
    GeckoSharedLibrary('js', linkage=None)
    SHARED_LIBRARY_NAME = CONFIG['JS_LIBRARY_NAME']

    # Ensure symbol versions of shared library on Linux do not conflict
    # with those in libxul.
    if CONFIG['OS_TARGET'] == 'Linux':
        GENERATED_FILES += ['symverscript']
        GENERATED_FILES['symverscript'].script = '/build/gen_symverscript.py'
        GENERATED_FILES['symverscript'].inputs = ['symverscript.in']
        GENERATED_FILES['symverscript'].flags = [
            CONFIG['JS_LIBRARY_NAME'].replace('-', '_'),
        ]
        SYMBOLS_FILE = '!symverscript'
else:
    Library('js')

FORCE_STATIC_LIB = True
STATIC_LIBRARY_NAME = 'js_static'

if CONFIG['ENABLE_INTL_API']:
    USE_LIBS += [
        'icu',
    ]

USE_LIBS += [
    'nspr',
    'zlib',
]

if CONFIG['OS_ARCH'] not in ('WINNT', 'HP-UX'):
    OS_LIBS += [
        'm',
    ]

if CONFIG['OS_ARCH'] == 'FreeBSD':
    OS_LIBS += [
        '-pthread',
    ]

if CONFIG['OS_ARCH'] == 'Linux':
    OS_LIBS += [
        'dl',
    ]

if CONFIG['OS_ARCH'] == 'SunOS':
    OS_LIBS += [
        'posix4',
        'dl',
        'nsl',
        'socket',
    ]

if CONFIG['MOZ_NEEDS_LIBATOMIC']:
    OS_LIBS += ['atomic']

OS_LIBS += CONFIG['REALTIME_LIBS']

NO_EXPAND_LIBS = True

DIST_INSTALL = True

# Run SpiderMonkey style checker after linking the static library. This avoids
# running the script for no-op builds.
GENERATED_FILES += ['spidermonkey_checks']
run_checks = GENERATED_FILES['spidermonkey_checks']
run_checks.script = '/config/run_spidermonkey_checks.py'
run_checks.inputs += [
    '!%sjs_static.%s' % (CONFIG['LIB_PREFIX'], CONFIG['LIB_SUFFIX']),
    '/config/check_spidermonkey_style.py',
    '/config/check_macroassembler_style.py',
    '/config/check_js_opcode.py'
]