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

GeckoProgram('jsapi-tests', linkage=None)

UNIFIED_SOURCES += [
    'selfTest.cpp',
    'testAddPropertyPropcache.cpp',
    'testArgumentsObject.cpp',
    'testArrayBuffer.cpp',
    'testArrayBufferView.cpp',
    'testBoundFunction.cpp',
    'testBug604087.cpp',
    'testCallArgs.cpp',
    'testCallNonGenericMethodOnProxy.cpp',
    'testChromeBuffer.cpp',
    'testClassGetter.cpp',
    'testCloneScript.cpp',
    'testDateToLocaleString.cpp',
    'testDebugger.cpp',
    'testDeepFreeze.cpp',
    'testDefineGetterSetterNonEnumerable.cpp',
    'testDefineProperty.cpp',
    'testDefinePropertyIgnoredAttributes.cpp',
    'testDeflateStringToUTF8Buffer.cpp',
    'testDifferentNewTargetInvokeConstructor.cpp',
    'testEnclosingFunction.cpp',
    'testErrorCopying.cpp',
    'testException.cpp',
    'testExternalArrayBuffer.cpp',
    'testExternalStrings.cpp',
    'testFindSCCs.cpp',
    'testForceLexicalInitialization.cpp',
    'testForOfIterator.cpp',
    'testForwardSetProperty.cpp',
    'testFreshGlobalEvalRedefinition.cpp',
    'testFunctionProperties.cpp',
    'testGCAllocator.cpp',
    'testGCCellPtr.cpp',
    'testGCChunkPool.cpp',
    'testGCExactRooting.cpp',
    'testGCFinalizeCallback.cpp',
    'testGCHeapPostBarriers.cpp',
    'testGCHooks.cpp',
    'testGCMarking.cpp',
    'testGCOutOfMemory.cpp',
    'testGCStoreBufferRemoval.cpp',
    'testGCUniqueId.cpp',
    'testGCWeakCache.cpp',
    'testGCWeakRef.cpp',
    'testGetPropertyDescriptor.cpp',
    'testHashTable.cpp',
    'testIndexToString.cpp',
    'testIntern.cpp',
    'testIntlAvailableLocales.cpp',
    'testIntString.cpp',
    'testIntTypesABI.cpp',
    'testIsInsideNursery.cpp',
    'testIteratorObject.cpp',
    'testJSEvaluateScript.cpp',
    'testLookup.cpp',
    'testLooselyEqual.cpp',
    'testMappedArrayBuffer.cpp',
    'testMutedErrors.cpp',
    'testNewObject.cpp',
    'testNewTargetInvokeConstructor.cpp',
    'testNullRoot.cpp',
    'testObjectEmulatingUndefined.cpp',
    'testOOM.cpp',
    'testParseJSON.cpp',
    'testPersistentRooted.cpp',
    'testPreserveJitCode.cpp',
    'testPrintf.cpp',
    'testPrivateGCThingValue.cpp',
    'testProfileStrings.cpp',
    'testPropCache.cpp',
    'testRegExp.cpp',
    'testResolveRecursion.cpp',
    'tests.cpp',
    'testSameValue.cpp',
    'testSavedStacks.cpp',
    'testScriptInfo.cpp',
    'testScriptObject.cpp',
    'testSetProperty.cpp',
    'testSetPropertyIgnoringNamedGetter.cpp',
    'testSharedImmutableStringsCache.cpp',
    'testSourcePolicy.cpp',
    'testStringBuffer.cpp',
    'testStructuredClone.cpp',
    'testSymbol.cpp',
    'testThreadingConditionVariable.cpp',
    'testThreadingExclusiveData.cpp',
    'testThreadingMutex.cpp',
    'testThreadingThread.cpp',
    'testToIntWidth.cpp',
    'testTypedArrays.cpp',
    'testUbiNode.cpp',
    'testUncaughtSymbol.cpp',
    'testUTF8.cpp',
    'testWasmLEB128.cpp',
    'testWeakMap.cpp',
    'testXDR.cpp',
]

SOURCES += [
    # There are clashing definitions of js::jit::AssemblerBuffer.
    'testAssemblerBuffer.cpp',
]

if CONFIG['ENABLE_ION']:
    UNIFIED_SOURCES += [
        'testJitDCEinGVN.cpp',
        'testJitFoldsTo.cpp',
        'testJitGVN.cpp',
        'testJitMacroAssembler.cpp',
        'testJitMoveEmitterCycles-mips32.cpp',
        'testJitMoveEmitterCycles.cpp',
        'testJitRangeAnalysis.cpp',
        'testJitRegisterSet.cpp',
        'testJitRValueAlloc.cpp',
    ]

if CONFIG['SPIDERMONKEY_PROMISE']:
    UNIFIED_SOURCES += [
        'testPromise.cpp',
    ]

DEFINES['EXPORT_JS_API'] = True

LOCAL_INCLUDES += [
    '!..',
    '..',
]

if CONFIG['MOZ_ICU_DATA_ARCHIVE']:
    # The ICU libraries linked into libmozjs will not include the ICU data,
    # so link it directly.
    USE_LIBS += ['icudata']

USE_LIBS += [
    'static:js',
]

OS_LIBS += CONFIG['MOZ_ZLIB_LIBS']

if CONFIG['GNU_CXX']:
    CXXFLAGS += ['-Wno-shadow', '-Werror=format', '-fno-strict-aliasing']

# This is intended as a temporary workaround to enable VS2015.
if CONFIG['_MSC_VER']:
    CXXFLAGS += ['-wd4312']

DEFINES['topsrcdir'] = '%s/js/src' % TOPSRCDIR
OBJDIR_PP_FILES.js.src['jsapi-tests'] += ['jsapi-tests-gdb.py.in']