js/src/moz.build
author Mike Hommey <mh+mozilla@glandium.org>
Thu, 28 Nov 2013 14:24:05 +0900
changeset 173501 e668d88804d15156ee133f019609a3709b007b1e
parent 173495 3fd4b546eed453156a7d87548c9d30f938f46053
child 173525 f4b143a9c6241644470aab2a35e8e8045d0b59ff
permissions -rw-r--r--
Backout changeset 3fd4b546eed4 (bug 874266) and changeset a35d2e3a872f (bug 942043) for ASAN build bustage and Windows test bustage

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

DIRS += ['config']

if CONFIG['DEHYDRA_PATH']:
    DIRS += ['analysis-tests']

if CONFIG['JS_NATIVE_EDITLINE']:
    DIRS += ['editline']

# editline needs to get built before the shell
if not CONFIG['JS_DISABLE_SHELL']:
    DIRS += ['shell']

TEST_DIRS += ['jsapi-tests', 'tests', 'gdb']

mfbt_root = '../../mfbt'
LOCAL_INCLUDES += ['%s/double-conversion' % mfbt_root]

if CONFIG['JS_STANDALONE']:
    LIBRARY_NAME = 'mozjs-%s' % CONFIG['MOZILLA_SYMBOLVERSION']

    # When building standalone, we need to include mfbt sources, and to declare
    # "exported" mfbt symbols on its behalf when we use its headers.
    include('%s/common.mozbuild' % mfbt_root)
else:
    LIBRARY_NAME = 'mozjs'

CONFIGURE_SUBST_FILES += [
    'devtools/rootAnalysis/Makefile',
    'js-confdefs.h',
]

CONFIGURE_DEFINE_FILES += [
    'js-config.h',
]

# Changes to internal header files, used externally, massively slow down
# browser builds.  Don't add new files here unless you know what you're
# doing!
EXPORTS += [
    'js.msg',
    'jsalloc.h',
    'jsapi.h',
    'jsbytecode.h',
    'jsclist.h',
    'jscpucfg.h',
    'jsfriendapi.h',
    'jsprf.h',
    'jsprototypes.h',
    'jsproxy.h',
    'jspubtd.h',
    'jstypes.h',
    'jsversion.h',
    'jswrapper.h',
    'perf/jsperf.h',
]

# If you add a header here, add it to js/src/jsapi-tests/testIntTypesABI.cpp so
# that we ensure we don't over-expose our internal integer typedefs.  Note that
# LegacyIntTypes.h below is deliberately exempted from this requirement.
EXPORTS.js += [
    '../public/Anchor.h',
    '../public/CallArgs.h',
    '../public/CallNonGenericMethod.h',
    '../public/CharacterEncoding.h',
    '../public/Class.h',
    '../public/Date.h',
    '../public/GCAPI.h',
    '../public/HashTable.h',
    '../public/HeapAPI.h',
    '../public/Id.h',
    '../public/LegacyIntTypes.h',
    '../public/MemoryMetrics.h',
    '../public/OldDebugAPI.h',
    '../public/ProfilingStack.h',
    '../public/PropertyKey.h',
    '../public/RequiredDefines.h',
    '../public/RootingAPI.h',
    '../public/StructuredClone.h',
    '../public/Tracer.h',
    '../public/TypeDecls.h',
    '../public/Utility.h',
    '../public/Value.h',
    '../public/Vector.h',
]

UNIFIED_SOURCES += [
    'assembler/jit/ExecutableAllocator.cpp',
    'builtin/Eval.cpp',
    'builtin/Intl.cpp',
    'builtin/MapObject.cpp',
    'builtin/Object.cpp',
    'builtin/ParallelArray.cpp',
    'builtin/Profilers.cpp',
    'builtin/RegExp.cpp',
    'builtin/TestingFunctions.cpp',
    'builtin/TypedObject.cpp',
    'builtin/TypeRepresentation.cpp',
    'devtools/sharkctl.cpp',
    'ds/LifoAlloc.cpp',
    'frontend/BytecodeCompiler.cpp',
    'frontend/BytecodeEmitter.cpp',
    'frontend/FoldConstants.cpp',
    'frontend/NameFunctions.cpp',
    'frontend/ParseMaps.cpp',
    'frontend/ParseNode.cpp',
    'frontend/TokenStream.cpp',
    'gc/Barrier.cpp',
    'gc/Iteration.cpp',
    'gc/Marking.cpp',
    'gc/Memory.cpp',
    'gc/Nursery.cpp',
    'gc/RootMarking.cpp',
    'gc/Statistics.cpp',
    'gc/StoreBuffer.cpp',
    'gc/Tracer.cpp',
    'gc/Verifier.cpp',
    'gc/Zone.cpp',
    'jsalloc.cpp',
    'jsanalyze.cpp',
    'jsapi.cpp',
    'jsarray.cpp',
    'jsatom.cpp',
    'jsbool.cpp',
    'jscntxt.cpp',
    'jscompartment.cpp',
    'jscrashreport.cpp',
    'jsdate.cpp',
    'jsdtoa.cpp',
    'jsexn.cpp',
    'jsfriendapi.cpp',
    'jsfun.cpp',
    'jsgc.cpp',
    'jsinfer.cpp',
    'jsiter.cpp',
    'jsnativestack.cpp',
    'jsnum.cpp',
    'jsobj.cpp',
    'json.cpp',
    'jsonparser.cpp',
    'jsopcode.cpp',
    'jsprf.cpp',
    'jspropertytree.cpp',
    'jsproxy.cpp',
    'jsreflect.cpp',
    'jsscript.cpp',
    'jsstr.cpp',
    'jswatchpoint.cpp',
    'jsweakmap.cpp',
    'jsworkers.cpp',
    'jswrapper.cpp',
    'perf/jsperf.cpp',
    'prmjtime.cpp',
    'vm/ArgumentsObject.cpp',
    'vm/CallNonGenericMethod.cpp',
    'vm/CharacterEncoding.cpp',
    'vm/DateTime.cpp',
    'vm/Debugger.cpp',
    'vm/ForkJoin.cpp',
    'vm/GlobalObject.cpp',
    'vm/Id.cpp',
    'vm/Interpreter.cpp',
    'vm/MemoryMetrics.cpp',
    'vm/Monitor.cpp',
    'vm/ObjectImpl.cpp',
    'vm/OldDebugAPI.cpp',
    'vm/Probes.cpp',
    'vm/PropertyKey.cpp',
    'vm/ProxyObject.cpp',
    'vm/RegExpObject.cpp',
    'vm/RegExpStatics.cpp',
    'vm/Runtime.cpp',
    'vm/ScopeObject.cpp',
    'vm/SelfHosting.cpp',
    'vm/Shape.cpp',
    'vm/SPSProfiler.cpp',
    'vm/Stack.cpp',
    'vm/String.cpp',
    'vm/StringBuffer.cpp',
    'vm/StructuredClone.cpp',
    'vm/ThreadPool.cpp',
    'vm/TypedArrayObject.cpp',
    'vm/Unicode.cpp',
    'vm/Value.cpp',
    'vm/Xdr.cpp',
    'yarr/PageBlock.cpp',
    'yarr/YarrCanonicalizeUCS2.cpp',
    'yarr/YarrInterpreter.cpp',
    'yarr/YarrPattern.cpp',
    'yarr/YarrSyntaxChecker.cpp',
]

# frontend/Parser.cpp cannot be built in unified mode because of explicit
# template instantiations.
# jsmath.cpp cannot be built in unified mode because it needs to pull rand_s
# from <stdlib.h> on Windows through a preprocessor define.
# jsutil.cpp cannot be built in unified mode because it is needed for
# check-vanilla-allocations.
SOURCES += [
    'frontend/Parser.cpp',
    'jsmath.cpp',
    'jsutil.cpp',
]

if CONFIG['JS_POSIX_NSPR']:
    UNIFIED_SOURCES += [
        'vm/PosixNSPR.cpp',
    ]

if CONFIG['MOZ_INSTRUMENTS']:
    SOURCES += [
        'devtools/Instruments.cpp',
    ]

if CONFIG['ENABLE_TRACE_LOGGING']:
    SOURCES += [
        'TraceLogging.cpp',
    ]

if CONFIG['ENABLE_ION']:
    UNIFIED_SOURCES += [
        'jit/AliasAnalysis.cpp',
        'jit/AsmJS.cpp',
        'jit/AsmJSLink.cpp',
        'jit/AsmJSModule.cpp',
        'jit/AsmJSSignalHandlers.cpp',
        'jit/BacktrackingAllocator.cpp',
        'jit/Bailouts.cpp',
        'jit/BaselineBailouts.cpp',
        'jit/BaselineCompiler.cpp',
        'jit/BaselineFrame.cpp',
        'jit/BaselineFrameInfo.cpp',
        'jit/BaselineIC.cpp',
        'jit/BaselineInspector.cpp',
        'jit/BaselineJIT.cpp',
        'jit/BitSet.cpp',
        'jit/BytecodeAnalysis.cpp',
        'jit/C1Spewer.cpp',
        'jit/CodeGenerator.cpp',
        'jit/CompileWrappers.cpp',
        'jit/EdgeCaseAnalysis.cpp',
        'jit/EffectiveAddressAnalysis.cpp',
        'jit/Ion.cpp',
        'jit/IonAnalysis.cpp',
        'jit/IonBuilder.cpp',
        'jit/IonCaches.cpp',
        'jit/IonFrames.cpp',
        'jit/IonMacroAssembler.cpp',
        'jit/IonSpewer.cpp',
        'jit/JSONSpewer.cpp',
        'jit/LICM.cpp',
        'jit/LinearScan.cpp',
        'jit/LIR.cpp',
        'jit/LiveRangeAllocator.cpp',
        'jit/Lowering.cpp',
        'jit/MCallOptimize.cpp',
        'jit/MIR.cpp',
        'jit/MIRGraph.cpp',
        'jit/MoveResolver.cpp',
        'jit/ParallelFunctions.cpp',
        'jit/ParallelSafetyAnalysis.cpp',
        'jit/PerfSpewer.cpp',
        'jit/RangeAnalysis.cpp',
        'jit/RegisterAllocator.cpp',
        'jit/Safepoints.cpp',
        'jit/shared/BaselineCompiler-shared.cpp',
        'jit/shared/CodeGenerator-shared.cpp',
        'jit/shared/Lowering-shared.cpp',
        'jit/Snapshots.cpp',
        'jit/StupidAllocator.cpp',
        'jit/TypePolicy.cpp',
        'jit/TypeRepresentationSet.cpp',
        'jit/UnreachableCodeElimination.cpp',
        'jit/ValueNumbering.cpp',
        'jit/VMFunctions.cpp',
    ]
    if CONFIG['TARGET_CPU'].find('86') != -1:
        UNIFIED_SOURCES += [
            'jit/shared/Assembler-x86-shared.cpp',
            'jit/shared/BaselineCompiler-x86-shared.cpp',
            'jit/shared/BaselineIC-x86-shared.cpp',
            'jit/shared/CodeGenerator-x86-shared.cpp',
            'jit/shared/IonFrames-x86-shared.cpp',
            'jit/shared/Lowering-x86-shared.cpp',
            'jit/shared/MoveEmitter-x86-shared.cpp',
        ]
        if CONFIG['TARGET_CPU'] == 'x86_64':
            UNIFIED_SOURCES += [
                'jit/x64/Assembler-x64.cpp',
                'jit/x64/Bailouts-x64.cpp',
                'jit/x64/BaselineCompiler-x64.cpp',
                'jit/x64/BaselineIC-x64.cpp',
                'jit/x64/CodeGenerator-x64.cpp',
                'jit/x64/Lowering-x64.cpp',
                'jit/x64/MacroAssembler-x64.cpp',
                'jit/x64/Trampoline-x64.cpp',
            ]
        else:
            UNIFIED_SOURCES += [
                'jit/x86/Assembler-x86.cpp',
                'jit/x86/Bailouts-x86.cpp',
                'jit/x86/BaselineCompiler-x86.cpp',
                'jit/x86/BaselineIC-x86.cpp',
                'jit/x86/CodeGenerator-x86.cpp',
                'jit/x86/Lowering-x86.cpp',
                'jit/x86/MacroAssembler-x86.cpp',
                'jit/x86/Trampoline-x86.cpp',
            ]
    elif CONFIG['TARGET_CPU'].find('arm') != -1:
        UNIFIED_SOURCES += [
            'jit/arm/Architecture-arm.cpp',
            'jit/arm/Assembler-arm.cpp',
            'jit/arm/Bailouts-arm.cpp',
            'jit/arm/BaselineCompiler-arm.cpp',
            'jit/arm/BaselineIC-arm.cpp',
            'jit/arm/CodeGenerator-arm.cpp',
            'jit/arm/IonFrames-arm.cpp',
            'jit/arm/Lowering-arm.cpp',
            'jit/arm/MacroAssembler-arm.cpp',
            'jit/arm/MoveEmitter-arm.cpp',
            'jit/arm/Trampoline-arm.cpp',
        ]

if CONFIG['OS_ARCH'] == 'WINNT':
    SOURCES += [
        'assembler/jit/ExecutableAllocatorWin.cpp',
        'yarr/OSAllocatorWin.cpp',
    ]
elif CONFIG['OS_ARCH'] == 'OS2':
    SOURCES += [
        'assembler/jit/ExecutableAllocatorOS2.cpp',
        'yarr/OSAllocatorOS2.cpp',
    ]
else:
    SOURCES += [
        'assembler/jit/ExecutableAllocatorPosix.cpp',
        'yarr/OSAllocatorPosix.cpp',
    ]

if CONFIG['ENABLE_ION'] or CONFIG['ENABLE_YARR_JIT']:
    SOURCES += [
        'assembler/assembler/ARMAssembler.cpp',
        'assembler/assembler/MacroAssemblerARM.cpp',
        'assembler/assembler/MacroAssemblerX86Common.cpp',
    ]

if CONFIG['ENABLE_YARR_JIT']:
    SOURCES += [
        'yarr/YarrJIT.cpp'
    ]

if CONFIG['JS_HAS_CTYPES']:
    SOURCES += [
        'ctypes/CTypes.cpp',
        'ctypes/Library.cpp',
    ]

if CONFIG['MOZ_VTUNE']:
    SOURCES += [
        'vtune/jitprofiling.c'
    ]

if CONFIG['HAVE_LINUX_PERF_EVENT_H']:
    SOURCES += [
        'perf/pm_linux.cpp'
    ]
else:
    SOURCES += [
        'perf/pm_stub.cpp'
    ]

MSVC_ENABLE_PGO = True

HOST_SOURCES += [
    'jskwgen.cpp',
    'jsoplengen.cpp',
]

HOST_SIMPLE_PROGRAMS += [
    'host_%s' % f.replace('.cpp', '') for f in HOST_SOURCES
]

# 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']:
    FORCE_SHARED_LIB = True

FORCE_STATIC_LIB = True

if CONFIG['MOZ_ETW']:
    GENERATED_FILES = [
        'ETWProvider.h',
    ]