# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- # 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/. include('js-config.mozbuild') include('js-cxxflags.mozbuild') include('js-testing.mozbuild') CONFIGURE_SUBST_FILES += [ 'js-config', 'js.pc', ] CONFIGURE_DEFINE_FILES += [ 'js-confdefs.h', ] if not CONFIG['JS_STANDALONE']: LIBRARY_DEFINES['MOZ_HAS_MOZGLUE'] = True CONFIGURE_SUBST_FILES += [ '../../config/autoconf-js.mk', '../../config/emptyvars-js.mk', ] CONFIGURE_DEFINE_FILES += [ 'js-config.h', ] if CONFIG['HAVE_DTRACE']: GENERATED_FILES += ['javascript-trace.h'] EXPORTS += ['!javascript-trace.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-config.h', 'js.msg', 'jsalloc.h', 'jsapi.h', 'jsbytecode.h', 'jsclist.h', 'jscpucfg.h', 'jsfriendapi.h', 'jsprf.h', 'jsprototypes.h', 'jspubtd.h', 'jstypes.h', 'jsversion.h', 'jswrapper.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/CallArgs.h', '../public/CallNonGenericMethod.h', '../public/CharacterEncoding.h', '../public/Class.h', '../public/Conversions.h', '../public/Date.h', '../public/Debug.h', '../public/GCAnnotations.h', '../public/GCAPI.h', '../public/GCHashTable.h', '../public/GCPolicyAPI.h', '../public/GCVariant.h', '../public/GCVector.h', '../public/HashTable.h', '../public/HeapAPI.h', '../public/Id.h', '../public/Initialization.h', '../public/LegacyIntTypes.h', '../public/MemoryMetrics.h', '../public/Principals.h', '../public/ProfilingFrameIterator.h', '../public/ProfilingStack.h', '../public/Proxy.h', '../public/Realm.h', '../public/RequiredDefines.h', '../public/RootingAPI.h', '../public/SliceBudget.h', '../public/StructuredClone.h', '../public/SweepingAPI.h', '../public/TraceKind.h', '../public/TracingAPI.h', '../public/TrackedOptimizationInfo.h', '../public/TypeDecls.h', '../public/UbiNode.h', '../public/UbiNodeBreadthFirst.h', '../public/UbiNodeCensus.h', '../public/UbiNodeDominatorTree.h', '../public/UbiNodePostOrder.h', '../public/UbiNodeShortestPaths.h', '../public/UniquePtr.h', '../public/Utility.h', '../public/Value.h', '../public/Vector.h', '../public/WeakMapPtr.h', ] DIRS += [ 'builtin', 'devtools', 'ds', 'frontend', 'gc', 'irregexp', 'jit', 'perf', 'proxy', 'threading', 'wasm', ] if CONFIG['JS_HAS_CTYPES']: DIRS += ['ctypes'] if CONFIG['JS_BUNDLED_EDITLINE']: DIRS += ['editline'] if CONFIG['JS_NEW_REGEXP']: DIRS += ['regexp'] if not CONFIG['JS_DISABLE_SHELL']: DIRS += ['shell'] if CONFIG['MOZ_VTUNE']: DIRS += ['vtune'] SOURCES += [ 'jsalloc.cpp', 'jsapi.cpp', 'jsarray.cpp', 'jsatom.cpp', 'jsbool.cpp', 'jscntxt.cpp', 'jscompartment.cpp', 'jsdate.cpp', 'jsdtoa.cpp', 'jsexn.cpp', 'jsfriendapi.cpp', 'jsfun.cpp', 'jsgc.cpp', 'jsiter.cpp', 'jsmath.cpp', 'jsnativestack.cpp', 'jsnum.cpp', 'jsobj.cpp', 'json.cpp', 'jsopcode.cpp', 'jsprf.cpp', 'jspropertytree.cpp', 'jsscript.cpp', 'jsstr.cpp', 'jsutil.cpp', 'jsweakmap.cpp', ] # Suppress warnings in third-party code. # We are keeping this in the main moz.build because it is file specific if CONFIG['CLANG_CXX'] or CONFIG['GNU_CXX']: SOURCES['jsdtoa.cpp'].flags += ['-Wno-implicit-fallthrough'] SOURCES += [ 'vm/ArgumentsObject.cpp', 'vm/ArrayBufferObject.cpp', 'vm/AsyncFunction.cpp', 'vm/AsyncIteration.cpp', 'vm/Caches.cpp', 'vm/CallNonGenericMethod.cpp', 'vm/CharacterEncoding.cpp', 'vm/CodeCoverage.cpp', 'vm/Compression.cpp', 'vm/DateTime.cpp', 'vm/Debugger.cpp', 'vm/DebuggerMemory.cpp', 'vm/EnvironmentObject.cpp', 'vm/ErrorObject.cpp', 'vm/ForOfIterator.cpp', 'vm/GeneratorObject.cpp', 'vm/GlobalObject.cpp', 'vm/HelperThreads.cpp', 'vm/Id.cpp', 'vm/Initialization.cpp', 'vm/Interpreter.cpp', 'vm/JSONParser.cpp', 'vm/MemoryMetrics.cpp', 'vm/NativeObject.cpp', 'vm/ObjectGroup.cpp', 'vm/PIC.cpp', 'vm/Printer.cpp', 'vm/Probes.cpp', 'vm/ProxyObject.cpp', 'vm/Realm.cpp', 'vm/ReceiverGuard.cpp', 'vm/RegExpObject.cpp', 'vm/RegExpStatics.cpp', 'vm/Runtime.cpp', 'vm/SavedStacks.cpp', 'vm/Scope.cpp', 'vm/SelfHosting.cpp', 'vm/Shape.cpp', 'vm/SharedArrayObject.cpp', 'vm/SharedImmutableStringsCache.cpp', 'vm/SPSProfiler.cpp', 'vm/Stack.cpp', 'vm/Stopwatch.cpp', 'vm/String.cpp', 'vm/StringBuffer.cpp', 'vm/StructuredClone.cpp', 'vm/Symbol.cpp', 'vm/TaggedProto.cpp', 'vm/Time.cpp', 'vm/TypedArrayObject.cpp', 'vm/TypeInference.cpp', 'vm/UbiNode.cpp', 'vm/UbiNodeCensus.cpp', 'vm/UbiNodeShortestPaths.cpp', 'vm/UnboxedObject.cpp', 'vm/Unicode.cpp', 'vm/Value.cpp', 'vm/WeakMapPtr.cpp', 'vm/Xdr.cpp', ] if CONFIG['JS_POSIX_NSPR']: SOURCES += [ 'vm/PosixNSPR.cpp', ] if CONFIG['ENABLE_TRACE_LOGGING']: SOURCES += [ 'vm/TraceLogging.cpp', 'vm/TraceLoggingGraph.cpp', 'vm/TraceLoggingTypes.cpp', ] # 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'] SDK_LIBRARY = True else: Library('js') FORCE_STATIC_LIB = True STATIC_LIBRARY_NAME = 'js_static' if not CONFIG['MOZ_ICU_DATA_ARCHIVE']: USE_LIBS += [ 'icu', ] else: # Linking 'icu' will pull in the stubdata library, # which the shell doesn't want, so link the other bits. USE_LIBS += [ 'icui18n', 'icuuc', ] USE_LIBS += [ 'nspr', 'zlib', ] if CONFIG['OS_ARCH'] not in ('WINNT'): 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', ] OS_LIBS += CONFIG['REALTIME_LIBS'] NO_EXPAND_LIBS = True DIST_INSTALL = True