Initial import of Cobalt 2.8885 2016-07-27
diff --git a/src/third_party/mozjs/mozjs.gyp b/src/third_party/mozjs/mozjs.gyp
new file mode 100644
index 0000000..99a6a34
--- /dev/null
+++ b/src/third_party/mozjs/mozjs.gyp
@@ -0,0 +1,358 @@
+# Copyright 2016 Google Inc. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+{
+ 'includes': [
+ 'mozjs.gypi',
+ ],
+ 'variables': {
+ 'common_jit_defines': [
+ 'JS_ION=1',
+ 'JS_METHODJIT=1',
+ 'JS_METHODJIT_TYPED_ARRAY=1',
+ 'ENABLE_YARR_JIT=1',
+ ],
+ },
+ 'target_defaults': {
+ 'defines': [
+ # This makes it so the embedded JavaScript that is generated in the
+ # CreateEmbeddedJS action is compressed.
+ 'USE_ZLIB',
+ # Do not use the default js_xxx allocator function implementations, but
+ # include "jscustomallocator.h", which should implement them.
+ 'JS_USE_CUSTOM_ALLOCATOR',
+ # Do not export symbols that are declare with JS_PUBLIC_[API|DATA].
+ 'STATIC_JS_API',
+ ],
+ 'include_dirs': [
+ 'cobalt_config/include',
+ 'js/src',
+ 'js/src/assembler',
+ 'mfbt/double-conversion',
+ '<(DEPTH)/third_party/icu/public/common',
+ '<(generated_include_directory)',
+ ],
+ 'conditions': [
+ [ 'target_arch == "x64"', {
+ 'defines': [
+ 'JS_CPU_X64=1',
+ 'JS_PUNBOX64=1',
+ '<@(common_jit_defines)',
+ ],
+ }],
+ [ 'target_arch == "x86"', {
+ 'defines': [
+ 'JS_CPU_X86=1',
+ 'JS_NUNBOX32=1',
+ '<@(common_jit_defines)',
+ ],
+ }],
+ [ 'target_arch == "arm"', {
+ 'defines': [
+ 'JS_CPU_ARM=1',
+ 'JS_NUNBOX32=1',
+ '<@(common_jit_defines)',
+ ],
+ }],
+ ],
+ },
+ 'targets': [
+ {
+ # The SpiderMonkey library.
+ 'target_name': 'mozjs_lib',
+ 'type': 'static_library',
+ 'sources': [ '<@(mozjs_sources)' ],
+ 'defines': [
+ # Enable incremental garbage collection.
+ 'JSGC_INCREMENTAL=1',
+
+ # See vm/Probes.h for different values. This was the value set by the
+ # configure script when building for linux-release.
+ 'JS_DEFAULT_JITREPORT_GRANULARITY=3',
+
+ # Set this to enable the ECMAScript Internationalization API. Consider
+ # doing this after upgrading to a more recent version of ICU, since
+ # Cobalt's is older than the one SpiderMonkey needs for this.
+ # 'ENABLE_INTL_API=1',
+ ],
+ 'cflags' : [
+ '-Wno-invalid-offsetof',
+ '-Wno-uninitialized',
+ '-Wno-unused',
+ '-include',
+ 'js-confdefs.h',
+ ],
+ 'conditions': [
+ [ 'target_arch == "x64"', {
+ 'sources': [
+ 'js/src/assembler/assembler/MacroAssemblerX86Common.cpp',
+ 'js/src/jit/shared/Assembler-x86-shared.cpp',
+ 'js/src/jit/shared/BaselineCompiler-x86-shared.cpp',
+ 'js/src/jit/shared/BaselineIC-x86-shared.cpp',
+ 'js/src/jit/shared/CodeGenerator-x86-shared.cpp',
+ 'js/src/jit/shared/IonFrames-x86-shared.cpp',
+ 'js/src/jit/shared/Lowering-x86-shared.cpp',
+ 'js/src/jit/shared/MoveEmitter-x86-shared.cpp',
+ 'js/src/jit/x64/Assembler-x64.cpp',
+ 'js/src/jit/x64/Bailouts-x64.cpp',
+ 'js/src/jit/x64/BaselineCompiler-x64.cpp',
+ 'js/src/jit/x64/BaselineIC-x64.cpp',
+ 'js/src/jit/x64/CodeGenerator-x64.cpp',
+ 'js/src/jit/x64/Lowering-x64.cpp',
+ 'js/src/jit/x64/MacroAssembler-x64.cpp',
+ 'js/src/jit/x64/Trampoline-x64.cpp',
+ '<@(mozjs_jit_sources)',
+ ],
+ }],
+ [ 'target_arch == "x86"', {
+ 'sources': [
+ 'js/src/assembler/assembler/MacroAssemblerX86Common.cpp',
+ 'js/src/jit/shared/Assembler-x86-shared.cpp',
+ 'js/src/jit/shared/BaselineCompiler-x86-shared.cpp',
+ 'js/src/jit/shared/BaselineIC-x86-shared.cpp',
+ 'js/src/jit/shared/CodeGenerator-x86-shared.cpp',
+ 'js/src/jit/shared/IonFrames-x86-shared.cpp',
+ 'js/src/jit/shared/Lowering-x86-shared.cpp',
+ 'js/src/jit/shared/MoveEmitter-x86-shared.cpp',
+ 'js/src/jit/x86/Assembler-x86.cpp',
+ 'js/src/jit/x86/Bailouts-x86.cpp',
+ 'js/src/jit/x86/BaselineCompiler-x86.cpp',
+ 'js/src/jit/x86/BaselineIC-x86.cpp',
+ 'js/src/jit/x86/CodeGenerator-x86.cpp',
+ 'js/src/jit/x86/Lowering-x86.cpp',
+ 'js/src/jit/x86/MacroAssembler-x86.cpp',
+ 'js/src/jit/x86/Trampoline-x86.cpp',
+ '<@(mozjs_jit_sources)',
+ ],
+ }],
+ [ 'target_arch == "arm"', {
+ 'sources': [
+ 'js/src/assembler/assembler/ARMAssembler.cpp',
+ 'js/src/assembler/assembler/MacroAssemblerARM.cpp',
+ 'js/src/jit/arm/Architecture-arm.cpp',
+ 'js/src/jit/arm/Assembler-arm.cpp',
+ 'js/src/jit/arm/Bailouts-arm.cpp',
+ 'js/src/jit/arm/BaselineCompiler-arm.cpp',
+ 'js/src/jit/arm/BaselineIC-arm.cpp',
+ 'js/src/jit/arm/CodeGenerator-arm.cpp',
+ 'js/src/jit/arm/IonFrames-arm.cpp',
+ 'js/src/jit/arm/Lowering-arm.cpp',
+ 'js/src/jit/arm/MacroAssembler-arm.cpp',
+ 'js/src/jit/arm/MoveEmitter-arm.cpp',
+ 'js/src/jit/arm/Trampoline-arm.cpp',
+ '<@(mozjs_jit_sources)',
+ ],
+ }],
+ ],
+ 'dependencies': [
+ 'build_include_directory',
+ '<(DEPTH)/third_party/icu/icu.gyp:icui18n',
+ '<(DEPTH)/third_party/zlib/zlib.gyp:zlib',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ 'cobalt_config/include',
+ 'js/src',
+ '<(generated_include_directory)',
+ ],
+ 'defines': [
+ 'JS_USE_CUSTOM_ALLOCATOR',
+ 'STATIC_JS_API',
+ ],
+ 'cflags' : [
+ '-Wno-invalid-offsetof',
+ '-Wno-uninitialized',
+ '-Wno-unused',
+ '-include',
+ 'js-confdefs.h',
+ ],
+ },
+ # Mark this target as a hard dependency because targets that depend on
+ # this one need to wait for the build_include_directory to be generated.
+ # The more correct things would be to insert that target as a dependency
+ # in direct_dependent_settings, but it wasn't as straightforward as I'd
+ # hoped.
+ 'hard_dependency': 1,
+ },
+ {
+ # Command line SpiderMonkey shell.
+ 'target_name': 'mozjs_shell',
+ 'type': '<(final_executable_type)',
+ 'sources': [
+ 'js/src/shell/js.cpp',
+ 'js/src/shell/jsheaptools.cpp',
+ 'js/src/shell/jsoptparse.cpp',
+ ],
+ 'dependencies': [
+ 'mozjs_lib',
+ '<(DEPTH)/starboard/starboard.gyp:starboard',
+ '<(DEPTH)/third_party/zlib/zlib.gyp:zlib',
+ ]
+ },
+ {
+ # SpiderMonkey source expects to include files from a certain directory
+ # structure that is made by copying (or symlinking) the real source files
+ # into the destination directory structure.
+ 'target_name': 'build_include_directory',
+ 'type': 'none',
+ 'copies': [
+ {
+ 'destination': '<(generated_include_directory)/mozilla',
+ 'files': [
+ 'mfbt/Assertions.h',
+ 'mfbt/Atomics.h',
+ 'mfbt/Attributes.h',
+ 'mfbt/BloomFilter.h',
+ 'mfbt/Casting.h',
+ 'mfbt/Char16.h',
+ 'mfbt/CheckedInt.h',
+ 'mfbt/Compiler.h',
+ 'mfbt/Constants.h',
+ 'mfbt/DebugOnly.h',
+ 'mfbt/decimal/Decimal.h',
+ 'mfbt/Endian.h',
+ 'mfbt/EnumSet.h',
+ 'mfbt/FloatingPoint.h',
+ 'mfbt/GuardObjects.h',
+ 'mfbt/HashFunctions.h',
+ 'mfbt/Likely.h',
+ 'mfbt/LinkedList.h',
+ 'mfbt/MathAlgorithms.h',
+ 'mfbt/MemoryChecking.h',
+ 'mfbt/MSStdInt.h',
+ 'mfbt/NullPtr.h',
+ 'mfbt/PodOperations.h',
+ 'mfbt/Poison.h',
+ 'mfbt/Range.h',
+ 'mfbt/RangedPtr.h',
+ 'mfbt/RefPtr.h',
+ 'mfbt/Scoped.h',
+ 'mfbt/SHA1.h',
+ 'mfbt/SplayTree.h',
+ 'mfbt/StandardInteger.h',
+ 'mfbt/ThreadLocal.h',
+ 'mfbt/TypedEnum.h',
+ 'mfbt/Types.h',
+ 'mfbt/TypeTraits.h',
+ 'mfbt/Util.h',
+ 'mfbt/WeakPtr.h',
+ ],
+ },
+ {
+ 'destination': '<(generated_include_directory)/js',
+ 'files': [
+ 'js/public/Anchor.h',
+ 'js/public/CallArgs.h',
+ 'js/public/CharacterEncoding.h',
+ 'js/public/Date.h',
+ 'js/public/GCAPI.h',
+ 'js/public/HashTable.h',
+ 'js/public/HeapAPI.h',
+ 'js/public/LegacyIntTypes.h',
+ 'js/public/MemoryMetrics.h',
+ 'js/public/PropertyKey.h',
+ 'js/public/RequiredDefines.h',
+ 'js/public/RootingAPI.h',
+ 'js/public/TemplateLib.h',
+ 'js/public/Utility.h',
+ 'js/public/Value.h',
+ 'js/public/Vector.h',
+ ],
+ },
+ {
+ 'destination': '<(generated_include_directory)',
+ 'files': [
+ 'js/src/perf/jsperf.h',
+ ],
+ },
+ ],
+ 'dependencies': [
+ 'generated_headers',
+ ],
+ 'hard_dependency': 1,
+ },
+ {
+ 'target_name': 'generated_headers',
+ 'type': 'none',
+ 'actions': [
+ {
+ # Embed JavaScript source into a header file.
+ 'action_name': 'CreateEmbeddedJS',
+ 'inputs': [ '<@(embedded_js_sources)', 'js/src/js.msg'],
+ 'outputs': [
+ '<(embedded_js_file)',
+ '<(embedded_js_header)',
+ ],
+ 'action': [
+ 'python',
+ 'js/src/builtin/embedjs.py',
+ '-DUSE_ZLIB',
+ '-p',
+ '<(CC) -E',
+ '-m',
+ 'js/src/js.msg',
+ '-o',
+ '<(embedded_js_header)',
+ '-s',
+ '<(embedded_js_file)',
+ '<@(embedded_js_sources)'
+ ],
+ },
+ {
+ 'action_name': 'CreateKeywordHeader',
+ 'inputs': [],
+ 'outputs': [ '<(generated_keyword_header)' ],
+ 'action': [
+ '<(PRODUCT_DIR)/mozjs_keyword_header_gen',
+ '<(generated_keyword_header)',
+ ],
+ },
+ {
+ 'action_name': 'CreateOpcodeLengthHeader',
+ 'inputs': [],
+ 'outputs': [ '<(generated_opcode_length_header)' ],
+ 'action': [
+ '<(PRODUCT_DIR)/mozjs_opcode_length_header_gen',
+ '<(generated_opcode_length_header)',
+ ],
+ },
+ ],
+ 'dependencies': [
+ 'mozjs_keyword_header_gen#host',
+ 'mozjs_opcode_length_header_gen#host'
+ ],
+ 'hard_dependency': 1,
+ },
+ {
+ # Host tool used to generate a header file that defines a huge switch
+ # statement for JavaScript keywords.
+ 'target_name': 'mozjs_keyword_header_gen',
+ 'type': '<(final_executable_type)',
+ 'toolsets': ['host'],
+ 'sources': [
+ 'js/src/jskwgen.cpp',
+ ],
+ 'hard_dependency': 1,
+ },
+ {
+ # Host tool used to generate a header file that defines opcode lengths.
+ 'target_name': 'mozjs_opcode_length_header_gen',
+ 'type': '<(final_executable_type)',
+ 'toolsets': ['host'],
+ 'sources': [
+ 'js/src/jsoplengen.cpp',
+ ],
+ 'hard_dependency': 1,
+ },
+ ]
+}