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

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

UNIFIED_SOURCES += [
    'selfTest.cpp',
    'testAddPropertyPropcache.cpp',
    'testArgumentsObject.cpp',
    'testArrayBuffer.cpp',
    'testArrayBufferView.cpp',
    'testBug604087.cpp',
    'testCallNonGenericMethodOnProxy.cpp',
    'testChromeBuffer.cpp',
    'testClassGetter.cpp',
    'testCloneScript.cpp',
    'testContexts.cpp',
    'testDateToLocaleString.cpp',
    'testDebugger.cpp',
    'testDeepFreeze.cpp',
    'testDefineGetterSetterNonEnumerable.cpp',
    'testDefineProperty.cpp',
    'testDefinePropertyIgnoredAttributes.cpp',
    'testDifferentNewTargetInvokeConstructor.cpp',
    'testEnclosingFunction.cpp',
    'testErrorCopying.cpp',
    'testException.cpp',
    'testExternalStrings.cpp',
    'testFindSCCs.cpp',
    'testForOfIterator.cpp',
    'testForwardSetProperty.cpp',
    'testFreshGlobalEvalRedefinition.cpp',
    'testFunctionProperties.cpp',
    'testGCAllocator.cpp',
    'testGCCellPtr.cpp',
    'testGCChunkPool.cpp',
    'testGCExactRooting.cpp',
    'testGCFinalizeCallback.cpp',
    'testGCHeapPostBarriers.cpp',
    'testGCMarking.cpp',
    'testGCOutOfMemory.cpp',
    'testGCStoreBufferRemoval.cpp',
    'testGCUniqueId.cpp',
    'testGCWeakRef.cpp',
    'testGetPropertyDescriptor.cpp',
    'testHashTable.cpp',
    'testIndexToString.cpp',
    'testIntern.cpp',
    'testIntlAvailableLocales.cpp',
    'testIntString.cpp',
    'testIntTypesABI.cpp',
    'testIsInsideNursery.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',
    'testProfileStrings.cpp',
    'testPropCache.cpp',
    'testRegExp.cpp',
    'testResolveRecursion.cpp',
    'tests.cpp',
    'testSameValue.cpp',
    'testSavedStacks.cpp',
    'testScriptInfo.cpp',
    'testScriptObject.cpp',
    'testSetProperty.cpp',
    'testSetPropertyIgnoringNamedGetter.cpp',
    'testSourcePolicy.cpp',
    'testStringBuffer.cpp',
    'testStructuredClone.cpp',
    'testSymbol.cpp',
    'testToIntWidth.cpp',
    'testTypedArrays.cpp',
    'testUbiNode.cpp',
    'testUncaughtError.cpp',
    'testUTF8.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',
        'testJitMoveEmitterCycles-mips32.cpp',
        'testJitMoveEmitterCycles.cpp',
        'testJitRangeAnalysis.cpp',
        'testJitRegisterSet.cpp',
        'testJitRValueAlloc.cpp',
    ]

DEFINES['EXPORT_JS_API'] = True

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

USE_LIBS += [
    'static:js',
]

OS_LIBS += CONFIG['MOZ_ZLIB_LIBS']
