[Buildroot] [PATCH v4 1/1] package/spidermonkey185: new package
Bernd Kuhls
bernd.kuhls at t-online.de
Sun Aug 6 16:44:52 UTC 2017
From: Nicolas Cavallari <nicolas.cavallari at green-communications.fr>
This is the old 1.8.5 branch of spidermonkey, used in Firefox 4.
It is rather unmaintained, but some software still depend on it,
such as couchdb.
Signed-off-by: Nicolas Cavallari <nicolas.cavallari at green-communications.fr>
Bernd: Updated the patch by Nicolas
- rebased
- added myself to DEVELOPERS
- updated patches to solve build problems found by test-pkg
- patches 1-10 were taken from Fedora:
https://src.fedoraproject.org/rpms/js/tree/f26
- patches 11 & 13 are from Nicolas original patch series
- patch 12 was added to fix armv5 support
- HOST_CFLAGS was added to fix configure errors detected by test-pkg:
- br-arcle-hs38:
gcc: error: unrecognized command line option '-matomic';
did you mean '-mbionic'?
- br-xtensa-full:
gcc: error: unrecognized command line option '-mlongcalls'
gcc: error: unrecognized command line option '-mauto-litpools'
- powerpc-ctng_e500v2-linux-gnuspe:
gcc: error: unrecognized argument in option '-mabi=spe'
gcc: note: valid arguments to '-mabi=' are: ms sysv
gcc: error: unrecognized command line option '-mfloat-gprs=double';
did you mean '-ffloat-store'?
- JIT support was disabled for BR2_ARM_CPU_ARMV4 to fix:
{standard input}:35: Error: selected processor does not support ARM mode `blx SetVMFrameRegs'
{standard input}:37: Error: selected processor does not support ARM mode `blx PushActiveVMFrame'
{standard input}:46: Error: selected processor does not support ARM mode `blx PopActiveVMFrame'
{standard input}:55: Error: selected processor does not support ARM mode `blx js_InternalThrow'
{standard input}:60: Error: selected processor does not support ARM mode `blx PopActiveVMFrame'
{standard input}:69: Error: selected processor does not support ARM mode `blx ip'
config/rules.mk:1475: recipe for target 'MethodJIT.o' failed
- test-pkg also detected build errors on powerpc and x86_64:
jsapi.cpp: In function ‘JSBool JS_ConvertArgumentsVA(JSContext*, uintN, jsval*, const char*, __va_list_tag*)’:
jsapi.cpp:361:63: error: cannot convert ‘__va_list_tag**’ to ‘__va_list_tag (*)[1]’
for argument ‘5’ to ‘JSBool TryArgumentFormatter(JSContext*, const char**, JSBool, jsval**, __va_list_tag (*)[1])’
JS_ADDRESSOF_VA_LIST(ap))) {
which were fixed by ac_cv_va_val_copy=no
This package now passes test-pkg on the next branch with this defconfig
BR2_PACKAGE_SPIDERMONKEY185=y
armv5-ctng-linux-gnueabi [ 1/47]: OK
armv7-ctng-linux-gnueabihf [ 2/47]: OK
br-aarch64-glibc [ 3/47]: OK
br-arcle-hs38 [ 4/47]: OK
br-arm-basic [ 5/47]: SKIPPED
br-arm-cortex-a9-glibc [ 6/47]: OK
br-arm-cortex-a9-musl [ 7/47]: OK
br-arm-cortex-m4-full [ 8/47]: SKIPPED
br-arm-full [ 9/47]: OK
br-arm-full-nothread [10/47]: SKIPPED
br-arm-full-static [11/47]: SKIPPED
br-bfin-full [12/47]: SKIPPED
br-i386-pentium4-full [13/47]: OK
br-i386-pentium-mmx-musl [14/47]: OK
br-m68k-5208-full [15/47]: SKIPPED
br-m68k-68040-full [16/47]: SKIPPED
br-microblazeel-full [17/47]: SKIPPED
br-mips32r6-el-hf-glibc [18/47]: OK
br-mips64-n64-full [19/47]: OK
br-mips64r6-el-hf-glibc [20/47]: OK
br-mipsel-o32-full [21/47]: OK
br-nios2-glibc [22/47]: OK
br-openrisc-uclibc [23/47]: SKIPPED
br-powerpc-603e-basic-cpp [24/47]: OK
br-powerpc64le-power8-glibc [25/47]: OK
br-powerpc64-power7-glibc [26/47]: OK
br-powerpc-e500mc-full [27/47]: OK
br-sh4-full [28/47]: OK
br-sparc64-glibc [29/47]: OK
br-sparc-uclibc [30/47]: OK
br-x86-64-core2-full [31/47]: OK
br-x86-64-musl [32/47]: OK
br-xtensa-full [33/47]: OK
i686-ctng-linux-gnu [34/47]: OK
linaro-aarch64 [35/47]: OK
linaro-arm [36/47]: OK
mips64el-ctng_n32-linux-gnu [37/47]: OK
mips64el-ctng_n64-linux-gnu [38/47]: OK
powerpc-ctng_e500v2-linux-gnuspe [39/47]: OK
sourcery-arm-armv4t [40/47]: OK
sourcery-arm [41/47]: OK
sourcery-arm-thumb2 [42/47]: OK
sourcery-mips64 [43/47]: OK
sourcery-mips [44/47]: OK
sourcery-nios2 [45/47]: OK
sourcery-x86-64 [46/47]: OK
x86_64-ctng_locales-linux-gnu [47/47]: OK
47 builds, 9 skipped, 0 build failed, 0 legal-info failed
Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
---
v4: rebased and major patch overhaul
v3: Addressed Maxime Hadjinlian's comments
v2:
* Moved package to Libraries/Other
* Tried to make the package reconfigurable, but stopped when the patch
grew even larger than previous patches. Instead, simplified the patch
to not force a specific arm version, to make the configure patch smaller.
* Added patches to fix DESTDIR being embedded in the symlink and
remove the leftover nspr dependency.
* Added comment on why we define symbols for the host compiler.
* Added upstream patches to fix problems on various architectures,
taking inspiration for the patches that Debian uses.
* Disabled the JIT on sparc64 because that does not compile.
* Added host-perl and host-python, because they are used to build.
* Changed license as per Arnout suggestion
DEVELOPERS | 1 +
package/Config.in | 1 +
.../spidermonkey185/0001-64bit-big-endian.patch | 21 +++
package/spidermonkey185/0002-secondary-jit.patch | 22 +++
package/spidermonkey185/0003-destdir.patch | 24 ++++
package/spidermonkey185/0004-537701.patch | 47 +++++++
package/spidermonkey185/0005-arm-nosoftfp.patch | 41 ++++++
package/spidermonkey185/0006-aarch64.patch | 61 +++++++++
package/spidermonkey185/0007-ppc64le.patch | 56 ++++++++
package/spidermonkey185/0008-array-recursion.patch | 115 ++++++++++++++++
package/spidermonkey185/0009-c++11.patch | 152 +++++++++++++++++++++
package/spidermonkey185/0010-tag.patch | 107 +++++++++++++++
...11-remove-unused-pkgconfg-nspr-dependency.patch | 19 +++
package/spidermonkey185/0012-arm5tej.patch | 24 ++++
...heFlush-support-error-on-exotic-platforms.patch | 36 +++++
package/spidermonkey185/Config.in | 16 +++
package/spidermonkey185/spidermonkey185.hash | 2 +
package/spidermonkey185/spidermonkey185.mk | 36 +++++
18 files changed, 781 insertions(+)
create mode 100644 package/spidermonkey185/0001-64bit-big-endian.patch
create mode 100644 package/spidermonkey185/0002-secondary-jit.patch
create mode 100644 package/spidermonkey185/0003-destdir.patch
create mode 100644 package/spidermonkey185/0004-537701.patch
create mode 100644 package/spidermonkey185/0005-arm-nosoftfp.patch
create mode 100644 package/spidermonkey185/0006-aarch64.patch
create mode 100644 package/spidermonkey185/0007-ppc64le.patch
create mode 100644 package/spidermonkey185/0008-array-recursion.patch
create mode 100644 package/spidermonkey185/0009-c++11.patch
create mode 100644 package/spidermonkey185/0010-tag.patch
create mode 100644 package/spidermonkey185/0011-remove-unused-pkgconfg-nspr-dependency.patch
create mode 100644 package/spidermonkey185/0012-arm5tej.patch
create mode 100644 package/spidermonkey185/0013-Avoid-missing-cacheFlush-support-error-on-exotic-platforms.patch
create mode 100644 package/spidermonkey185/Config.in
create mode 100644 package/spidermonkey185/spidermonkey185.hash
create mode 100644 package/spidermonkey185/spidermonkey185.mk
diff --git a/DEVELOPERS b/DEVELOPERS
index 9df289680..f10476fb3 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -300,6 +300,7 @@ F: package/python-pylru/
F: package/python-slob/
F: package/rtmpdump/
F: package/softether/
+F: package/spidermonkey185/
F: package/taglib/
F: package/tinyxml2/
F: package/tor/
diff --git a/package/Config.in b/package/Config.in
index 85416afdf..a43a2fcf6 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1482,6 +1482,7 @@ endif
source "package/shapelib/Config.in"
source "package/skalibs/Config.in"
source "package/sphinxbase/Config.in"
+ source "package/spidermonkey185/Config.in"
source "package/startup-notification/Config.in"
source "package/tinycbor/Config.in"
source "package/tz/Config.in"
diff --git a/package/spidermonkey185/0001-64bit-big-endian.patch b/package/spidermonkey185/0001-64bit-big-endian.patch
new file mode 100644
index 000000000..9d5142b20
--- /dev/null
+++ b/package/spidermonkey185/0001-64bit-big-endian.patch
@@ -0,0 +1,21 @@
+https://bugzilla.mozilla.org/show_bug.cgi?id=627664
+
+Source:
+https://src.fedoraproject.org/rpms/js/blob/f26/f/js-1.8.5-64bit-big-endian.patch
+
+Patch position #1:
+https://src.fedoraproject.org/rpms/js/blob/master/f/js.spec#_12
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+
+diff -up xulrunner-2.0/mozilla-central/js/src/jsval.h.64bit-big-endian xulrunner-2.0/mozilla-central/js/src/jsval.h
+--- js-1.8.5/js/src/jsval.h.64bit-big-endian 2011-01-20 15:59:49.000000000 +0100
++++ js-1.8.5/js/src/jsval.h 2011-01-20 16:00:21.000000000 +0100
+@@ -347,6 +347,7 @@ typedef union jsval_layout
+ int32 i32;
+ uint32 u32;
+ JSWhyMagic why;
++ jsuword word;
+ } payload;
+ } s;
+ double asDouble;
diff --git a/package/spidermonkey185/0002-secondary-jit.patch b/package/spidermonkey185/0002-secondary-jit.patch
new file mode 100644
index 000000000..a95adf59a
--- /dev/null
+++ b/package/spidermonkey185/0002-secondary-jit.patch
@@ -0,0 +1,22 @@
+https://bugzilla.mozilla.org/show_bug.cgi?id=627668
+
+Source:
+https://src.fedoraproject.org/rpms/js/blob/f26/f/js-1.8.5-secondary-jit.patch
+
+Patch position #2:
+https://src.fedoraproject.org/rpms/js/blob/master/f/js.spec#_13
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+
+diff -up xulrunner-2.0/mozilla-central/js/src/Makefile.in.big-endian-jit xulrunner-2.0/mozilla-central/js/src/Makefile.in
+--- js-1.8.5/js/src/Makefile.in.big-endian-jit 2010-11-04 21:05:48.000000000 +0100
++++ js-1.8.5/js/src/Makefile.in 2010-11-15 14:17:39.000000000 +0100
+@@ -371,7 +371,7 @@ CPPSRCS += checks.cc \
+ # END enclude sources for V8 dtoa
+ #############################################
+
+-ifeq (,$(filter-out powerpc sparc,$(TARGET_CPU)))
++ifeq (,$(filter-out powerpc powerpc64 sparc sparc64 s390 s390x,$(TARGET_CPU)))
+
+ VPATH += $(srcdir)/assembler \
+ $(srcdir)/assembler/wtf \
diff --git a/package/spidermonkey185/0003-destdir.patch b/package/spidermonkey185/0003-destdir.patch
new file mode 100644
index 000000000..3cf20a73f
--- /dev/null
+++ b/package/spidermonkey185/0003-destdir.patch
@@ -0,0 +1,24 @@
+Source:
+https://src.fedoraproject.org/rpms/js/blob/f26/f/js185-destdir.patch
+
+Patch position #3:
+https://src.fedoraproject.org/rpms/js/blob/master/f/js.spec#_14
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+
+# See discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=628723
+# Patch created by Colin Walters <walters at verbum.org>
+
+--- a/js/src/Makefile.in.orig 2011-06-15 19:40:27.447770306 -0400
++++ b/js/src/Makefile.in 2011-06-15 19:40:57.013770299 -0400
+@@ -888,8 +888,8 @@
+ ifeq (,$(HOST_BIN_SUFFIX))
+ mv -f $(SHLIB_ANY_VER) $(SHLIB_EXACT_VER)
+ @[ ! -h $(SHLIB_ABI_VER) ] || rm -f $(SHLIB_ABI_VER)
+- ln -s $(SHLIB_EXACT_VER) $(SHLIB_ABI_VER)
+- ln -s $(SHLIB_ABI_VER) $(SHLIB_ANY_VER)
++ ln -s $(notdir $(SHLIB_EXACT_VER)) $(SHLIB_ABI_VER)
++ ln -s $(notdir $(SHLIB_ABI_VER)) $(SHLIB_ANY_VER)
+ endif
+ endif
+ ifneq (,$(IMPORT_LIBRARY))
diff --git a/package/spidermonkey185/0004-537701.patch b/package/spidermonkey185/0004-537701.patch
new file mode 100644
index 000000000..c8ab58572
--- /dev/null
+++ b/package/spidermonkey185/0004-537701.patch
@@ -0,0 +1,47 @@
+Source:
+https://src.fedoraproject.org/rpms/js/blob/f26/f/js-1.8.5-537701.patch
+
+Patch position #4:
+https://src.fedoraproject.org/rpms/js/blob/master/f/js.spec#_15
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+
+diff -up js-1.8.5/js/src/jsval.h.pad-the-structs-and-asserts js-1.8.5/js/src/jsval.h
+--- js-1.8.5/js/src/jsval.h.pad-the-structs-and-asserts 2011-11-28 12:46:32.811556132 -0600
++++ js-1.8.5/js/src/jsval.h 2011-11-28 12:46:43.493448233 -0600
+@@ -343,11 +343,11 @@ typedef union jsval_layout
+ uint64 payload47 : 47;
+ } debugView;
+ struct {
++ uint32 padding;
+ union {
+ int32 i32;
+ uint32 u32;
+ JSWhyMagic why;
+- jsuword word;
+ } payload;
+ } s;
+ double asDouble;
+diff -up js-1.8.5/js/src/jsvalue.h.pad-the-structs-and-asserts js-1.8.5/js/src/jsvalue.h
+--- js-1.8.5/js/src/jsvalue.h.pad-the-structs-and-asserts 2011-11-28 12:46:37.246509255 -0600
++++ js-1.8.5/js/src/jsvalue.h 2011-11-28 12:46:43.495448203 -0600
+@@ -291,7 +291,6 @@ JSVAL_EXTRACT_NON_DOUBLE_TAG_IMPL(jsval_
+ }
+
+ #ifdef __cplusplus
+-JS_STATIC_ASSERT(offsetof(jsval_layout, s.payload) == 0);
+ JS_STATIC_ASSERT((JSVAL_TYPE_NONFUNOBJ & 0xF) == JSVAL_TYPE_OBJECT);
+ JS_STATIC_ASSERT((JSVAL_TYPE_FUNOBJ & 0xF) == JSVAL_TYPE_OBJECT);
+ #endif
+@@ -729,7 +728,11 @@ class Value
+ }
+
+ const jsuword *payloadWord() const {
++#if JS_BITS_PER_WORD == 32
+ return &data.s.payload.word;
++#elif JS_BITS_PER_WORD == 64
++ return &data.asBits;
++#endif
+ }
+
+ private:
diff --git a/package/spidermonkey185/0005-arm-nosoftfp.patch b/package/spidermonkey185/0005-arm-nosoftfp.patch
new file mode 100644
index 000000000..2df231007
--- /dev/null
+++ b/package/spidermonkey185/0005-arm-nosoftfp.patch
@@ -0,0 +1,41 @@
+Source:
+https://src.fedoraproject.org/rpms/js/blob/f26/f/js185-arm-nosoftfp.patch
+[Bernd: Removed js/src/configure.in part]
+
+Patch position #5:
+https://src.fedoraproject.org/rpms/js/blob/master/f/js.spec#_16
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+
+diff -r -U 2 -p a/js/src/configure b/js/src/configure
+--- a/js/src/configure 2011-10-14 18:27:00.000000000 -0400
++++ b/js/src/configure 2011-10-14 18:37:07.264794994 -0400
+@@ -10741,5 +10741,5 @@ _SAVE_CFLAGS="$CFLAGS"
+ if test "$GNU_CC"; then
+ # gcc needs -mfpu=neon to recognize NEON instructions
+- CFLAGS="$CFLAGS -mfpu=neon -mfloat-abi=softfp"
++ CFLAGS="$CFLAGS -mfpu=neon"
+ fi
+ cat > conftest.$ac_ext <<EOF
+@@ -13407,7 +13407,7 @@ EOF
+ EOF
+
+- CFLAGS="$CFLAGS -march=armv7-a -mthumb -mfloat-abi=softfp $MOZ_ARM_VFP_FLAGS"
+- CXXFLAGS="$CXXFLAGS -march=armv7-a -mthumb -mfloat-abi=softfp $MOZ_ARM_VFP_FLAGS"
+- ASFLAGS="$ASFLAGS -march=armv7-a -mthumb -mfloat-abi=softfp $MOZ_ARM_VFP_FLAGS"
++ CFLAGS="$CFLAGS -mthumb $MOZ_ARM_VFP_FLAGS"
++ CXXFLAGS="$CXXFLAGS -mthumb $MOZ_ARM_VFP_FLAGS"
++ ASFLAGS="$ASFLAGS -mthumb $MOZ_ARM_VFP_FLAGS"
+ else
+ { echo "configure: error: --enable-thumb2 is not supported for non-GNU toolchains" 1>&2; exit 1; }
+@@ -13426,7 +13426,7 @@ elif test "$MOZ_ARM_ARCH" = "armv7"; the
+ EOF
+
+- CFLAGS="$CFLAGS -march=armv7-a -marm -mfloat-abi=softfp $MOZ_ARM_VFP_FLAGS"
+- CXXFLAGS="$CXXFLAGS -march=armv7-a -marm -mfloat-abi=softfp $MOZ_ARM_VFP_FLAGS"
+- ASFLAGS="$ASFLAGS -march=armv7-a -marm -mfloat-abi=softfp $MOZ_ARM_VFP_FLAGS"
++ CFLAGS="$CFLAGS $MOZ_ARM_VFP_FLAGS"
++ CXXFLAGS="$CXXFLAGS $MOZ_ARM_VFP_FLAGS"
++ ASFLAGS="$ASFLAGS $MOZ_ARM_VFP_FLAGS"
+ else
+ { echo "configure: error: --with-cpu-arch=armv7 is not supported for non-GNU toolchains" 1>&2; exit 1; }
diff --git a/package/spidermonkey185/0006-aarch64.patch b/package/spidermonkey185/0006-aarch64.patch
new file mode 100644
index 000000000..9eae13956
--- /dev/null
+++ b/package/spidermonkey185/0006-aarch64.patch
@@ -0,0 +1,61 @@
+Source:
+https://src.fedoraproject.org/rpms/js/blob/f26/f/aarch64.patch
+[Bernd: patched js/src/configure instead of js/src/configure.in]
+
+Patch position 6:
+https://src.fedoraproject.org/rpms/js/blob/master/f/js.spec#_19
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+
+--- js-1.8.5.org/js/src/assembler/jit/ExecutableAllocator.h
++++ js-1.8.5/js/src/assembler/jit/ExecutableAllocator.h
+@@ -391,6 +391,12 @@
+ {
+ CacheRangeFlush(code, size, CACHE_SYNC_ALL);
+ }
++#elif WTF_CPU_AARCH64 && WTF_PLATFORM_LINUX
++ static void cacheFlush(void* code, size_t size)
++ {
++ intptr_t end = reinterpret_cast<intptr_t>(code) + size;
++ __builtin___clear_cache(reinterpret_cast<char*>(code), reinterpret_cast<char*>(end));
++ }
+ #else
+ #error "The cacheFlush support is missing on this platform."
+ #endif
+--- js-1.8.5.org/js/src/assembler/wtf/Platform.h
++++ js-1.8.5/js/src/assembler/wtf/Platform.h
+@@ -292,6 +292,10 @@
+
+ #endif /* ARM */
+
++/* CPU(AArch64) - 64-bit ARM */
++#if defined(__aarch64__)
++#define WTF_CPU_AARCH64 1
++#endif
+
+
+ /* Operating systems - low-level dependencies */
+--- js-1.8.5.org/js/src/configure
++++ js-1.8.5/js/src/configure
+@@ -5805,6 +5805,10 @@
+ CPU_ARCH=arm
+ ;;
+
++aarch64)
++ CPU_ARCH=aarch64
++ ;;
++
+ mips|mipsel)
+ CPU_ARCH="mips"
+ ;;
+--- js-1.8.5.org/js/src/Makefile.in
++++ js-1.8.5/js/src/Makefile.in
+@@ -382,7 +382,7 @@
+ # END enclude sources for V8 dtoa
+ #############################################
+
+-ifeq (,$(filter-out powerpc powerpc64 sparc sparc64 s390 s390x,$(TARGET_CPU)))
++ifeq (,$(filter-out aarch64 powerpc powerpc64 sparc sparc64 s390 s390x,$(TARGET_CPU)))
+
+ VPATH += $(srcdir)/assembler \
+ $(srcdir)/assembler/wtf \
diff --git a/package/spidermonkey185/0007-ppc64le.patch b/package/spidermonkey185/0007-ppc64le.patch
new file mode 100644
index 000000000..41d1b90d9
--- /dev/null
+++ b/package/spidermonkey185/0007-ppc64le.patch
@@ -0,0 +1,56 @@
+Source:
+https://src.fedoraproject.org/rpms/js/blob/f26/f/ppc64le.patch
+[Bernd: patched js/src/configure instead of js/src/configure.in]
+
+Patch position #7:
+https://src.fedoraproject.org/rpms/js/blob/master/f/js.spec#_21
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+
+--- js-1.8.5.org/js/src/assembler/wtf/Platform.h
++++ js-1.8.5/js/src/assembler/wtf/Platform.h
+@@ -129,16 +129,22 @@
+ || defined(__POWERPC__) \
+ || defined(_M_PPC) \
+ || defined(__PPC)
++#if !defined(__ppc64__) && !defined(__PPC64__)
+ #define WTF_CPU_PPC 1
++#endif
++#if !defined(__LITTLE_ENDIAN__)
+ #define WTF_CPU_BIG_ENDIAN 1
+ #endif
++#endif
+
+ /* CPU(PPC64) - PowerPC 64-bit */
+ #if defined(__ppc64__) \
+ || defined(__PPC64__)
+ #define WTF_CPU_PPC64 1
++#if !defined(__LITTLE_ENDIAN__)
+ #define WTF_CPU_BIG_ENDIAN 1
+ #endif
++#endif
+
+ /* CPU(SH4) - SuperH SH-4 */
+ #if defined(__SH4__)
+--- js-1.8.5.org/js/src/configure
++++ js-1.8.5/js/src/configure
+@@ -5769,7 +5769,7 @@
+ CPU_ARCH=x86
+ ;;
+
+-powerpc64 | ppc64)
++powerpc64 | ppc64 | powerpc64le | ppc64le)
+ CPU_ARCH=ppc64
+ ;;
+
+--- js-1.8.5.org/js/src/Makefile.in
++++ js-1.8.5/js/src/Makefile.in
+@@ -382,7 +382,7 @@
+ # END enclude sources for V8 dtoa
+ #############################################
+
+-ifeq (,$(filter-out aarch64 powerpc powerpc64 sparc sparc64 s390 s390x,$(TARGET_CPU)))
++ifeq (,$(filter-out aarch64 powerpc powerpc64 powerpc64le sparc sparc64 s390 s390x,$(TARGET_CPU)))
+
+ VPATH += $(srcdir)/assembler \
+ $(srcdir)/assembler/wtf \
diff --git a/package/spidermonkey185/0008-array-recursion.patch b/package/spidermonkey185/0008-array-recursion.patch
new file mode 100644
index 000000000..1e9466259
--- /dev/null
+++ b/package/spidermonkey185/0008-array-recursion.patch
@@ -0,0 +1,115 @@
+Check for overrecursion in functions that might need it.
+
+Reference:
+https://bugzilla.redhat.com/show_bug.cgi?id=1178141
+http://hg.mozilla.org/mozilla-central/rev/a7b220e7425a
+
+Downloaded rebased version from upstream commit from:
+https://src.fedoraproject.org/rpms/js/blob/f26/f/js-1.8.5-array-recursion.patch
+
+Patch position #8:
+https://src.fedoraproject.org/rpms/js/blob/master/f/js.spec#_23
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+
+diff -ur js-1.8.5.orig/js/src/jsarray.cpp js-1.8.5/js/src/jsarray.cpp
+--- js-1.8.5.orig/js/src/jsarray.cpp 2011-03-31 23:08:36.000000000 +0400
++++ js-1.8.5/js/src/jsarray.cpp 2015-04-15 01:10:10.662544828 +0300
+@@ -1223,8 +1223,6 @@
+ array_toString_sub(JSContext *cx, JSObject *obj, JSBool locale,
+ JSString *sepstr, Value *rval)
+ {
+- JS_CHECK_RECURSION(cx, return false);
+-
+ /* Get characters to use for the separator. */
+ static const jschar comma = ',';
+ const jschar *sep;
+@@ -1323,6 +1321,8 @@
+ static JSBool
+ array_toString(JSContext *cx, uintN argc, Value *vp)
+ {
++ JS_CHECK_RECURSION(cx, return false);
++
+ JSObject *obj = ToObject(cx, &vp[1]);
+ if (!obj)
+ return false;
+@@ -1357,6 +1357,8 @@
+ static JSBool
+ array_toLocaleString(JSContext *cx, uintN argc, Value *vp)
+ {
++ JS_CHECK_RECURSION(cx, return false);
++
+ JSObject *obj = ToObject(cx, &vp[1]);
+ if (!obj)
+ return false;
+@@ -1454,6 +1456,8 @@
+ static JSBool
+ array_join(JSContext *cx, uintN argc, Value *vp)
+ {
++ JS_CHECK_RECURSION(cx, return false);
++
+ JSString *str;
+ if (argc == 0 || vp[2].isUndefined()) {
+ str = NULL;
+diff --git a/js/src/tests/ecma_5/extensions/array-toString-recursion.js b/js/src/tests/ecma_5/extensions/array-toString-recursion.js
+new file mode 100644
+--- /dev/null
++++ b/js/src/tests/ecma_5/extensions/array-toString-recursion.js
+@@ -0,0 +1,46 @@
++/*
++ * Any copyright is dedicated to the Public Domain.
++ * http://creativecommons.org/licenses/publicdomain/
++ */
++
++//-----------------------------------------------------------------------------
++var BUGNUMBER = 635389;
++var summary = 'Infinite recursion via [].{toString,toLocaleString,join}';
++
++print(BUGNUMBER + ": " + summary);
++
++/**************
++ * BEGIN TEST *
++ **************/
++
++try
++{
++ var x = [];
++ x.join = Array.prototype.toString;
++ "" + x;
++ throw new Error("should have thrown");
++}
++catch (e)
++{
++ assertEq(e instanceof InternalError, true,
++ "should have thrown for over-recursion");
++}
++
++try
++{
++ var x = { toString: Array.prototype.toString, join: Array.prototype.toString };
++ "" + x;
++ throw new Error("should have thrown");
++}
++catch (e)
++{
++ assertEq(e instanceof InternalError, true,
++ "should have thrown for over-recursion");
++}
++
++/******************************************************************************/
++
++if (typeof reportCompare === "function")
++ reportCompare(true, true);
++
++print("All tests passed!");
+diff -ur js-1.8.5.orig/js/src/tests/ecma_5/extensions/jstests.list js-1.8.5/js/src/tests/ecma_5/extensions/jstests.list
+--- js-1.8.5.orig/js/src/tests/ecma_5/extensions/jstests.list 2011-03-31 23:08:36.000000000 +0400
++++ js-1.8.5/js/src/tests/ecma_5/extensions/jstests.list 2015-04-15 01:15:08.784740028 +0300
+@@ -9,6 +9,7 @@
+ script bug472534.js
+ script bug496985.js
+ script bug566661.js
++script array-toString-recursion.js
+ script eval-native-callback-is-indirect.js
+ script extension-methods-reject-null-undefined-this.js
+ skip-if(!xulRuntime.shell) script function-definition-with.js # needs evaluate()
diff --git a/package/spidermonkey185/0009-c++11.patch b/package/spidermonkey185/0009-c++11.patch
new file mode 100644
index 000000000..29b86aac7
--- /dev/null
+++ b/package/spidermonkey185/0009-c++11.patch
@@ -0,0 +1,152 @@
+Source:
+https://src.fedoraproject.org/rpms/js/blob/f26/f/js-1.8.5-c++11.patch
+
+Patch position #9:
+https://src.fedoraproject.org/rpms/js/blob/master/f/js.spec#_24
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+
+diff -upr a/js/src/jsapi.cpp b/js/src/jsapi.cpp
+--- a/js/src/jsapi.cpp 2011-03-31 14:08:36.000000000 -0500
++++ b/js/src/jsapi.cpp 2016-02-29 18:10:49.302307353 -0600
+@@ -3985,7 +3985,7 @@ JS_Enumerate(JSContext *cx, JSObject *ob
+ AutoIdVector props(cx);
+ JSIdArray *ida;
+ if (!GetPropertyNames(cx, obj, JSITER_OWNONLY, &props) || !VectorToIdArray(cx, props, &ida))
+- return false;
++ return NULL;
+ for (size_t n = 0; n < size_t(ida->length); ++n)
+ JS_ASSERT(js_CheckForStringIndex(ida->vector[n]) == ida->vector[n]);
+ return ida;
+diff -upr a/js/src/jsfun.cpp b/js/src/jsfun.cpp
+--- a/js/src/jsfun.cpp 2011-03-31 14:08:36.000000000 -0500
++++ b/js/src/jsfun.cpp 2016-02-29 18:21:45.249674890 -0600
+@@ -2051,7 +2051,7 @@ fun_toStringHelper(JSContext *cx, JSObje
+
+ JSString *str = JS_DecompileFunction(cx, fun, indent);
+ if (!str)
+- return false;
++ return NULL;
+
+ if (!indent)
+ cx->compartment->toSourceCache.put(fun, str);
+@@ -2657,7 +2657,7 @@ LookupInterpretedFunctionPrototype(JSCon
+ const Shape *shape = funobj->nativeLookup(id);
+ if (!shape) {
+ if (!ResolveInterpretedFunctionPrototype(cx, funobj))
+- return false;
++ return NULL;
+ shape = funobj->nativeLookup(id);
+ }
+ JS_ASSERT(!shape->configurable());
+diff -upr a/js/src/jsiter.cpp b/js/src/jsiter.cpp
+--- a/js/src/jsiter.cpp 2011-03-31 14:08:36.000000000 -0500
++++ b/js/src/jsiter.cpp 2016-02-29 18:24:22.494659919 -0600
+@@ -425,7 +425,7 @@ NewIteratorObject(JSContext *cx, uintN f
+ */
+ JSObject *obj = js_NewGCObject(cx, FINALIZE_OBJECT0);
+ if (!obj)
+- return false;
++ return NULL;
+ obj->init(cx, &js_IteratorClass, NULL, NULL, NULL, false);
+ obj->setMap(cx->compartment->emptyEnumeratorShape);
+ return obj;
+diff -upr a/js/src/jsparse.cpp b/js/src/jsparse.cpp
+--- a/js/src/jsparse.cpp 2011-03-31 14:08:36.000000000 -0500
++++ b/js/src/jsparse.cpp 2016-02-29 18:29:03.997437475 -0600
+@@ -3352,7 +3352,7 @@ Parser::functionDef(JSAtom *funAtom, Fun
+ if (!outertc->inFunction() && bodyLevel && funAtom && !lambda && outertc->compiling()) {
+ JS_ASSERT(pn->pn_cookie.isFree());
+ if (!DefineGlobal(pn, outertc->asCodeGenerator(), funAtom))
+- return false;
++ return NULL;
+ }
+
+ pn->pn_blockid = outertc->blockid();
+diff -upr a/js/src/jsstr.cpp b/js/src/jsstr.cpp
+--- a/js/src/jsstr.cpp 2011-03-31 14:08:36.000000000 -0500
++++ b/js/src/jsstr.cpp 2016-02-29 19:01:45.857779836 -0600
+@@ -1734,7 +1734,7 @@ class RegExpGuard
+ if (flat) {
+ patstr = flattenPattern(cx, fm.patstr);
+ if (!patstr)
+- return false;
++ return NULL;
+ } else {
+ patstr = fm.patstr;
+ }
+@@ -3400,7 +3400,7 @@ js_InitStringClass(JSContext *cx, JSObje
+ UndefinedValue(), NULL, NULL,
+ JSPROP_READONLY | JSPROP_PERMANENT | JSPROP_SHARED, 0, 0,
+ NULL)) {
+- return JS_FALSE;
++ return NULL;
+ }
+
+ return proto;
+diff -upr a/js/src/jstypedarray.cpp b/js/src/jstypedarray.cpp
+--- a/js/src/jstypedarray.cpp 2011-03-31 14:08:36.000000000 -0500
++++ b/js/src/jstypedarray.cpp 2016-02-29 19:08:53.541136191 -0600
+@@ -1334,7 +1334,7 @@ class TypedArrayTemplate
+ if (size != 0 && count >= INT32_MAX / size) {
+ JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL,
+ JSMSG_NEED_DIET, "size and count");
+- return false;
++ return NULL;
+ }
+
+ int32 bytelen = size * count;
+@@ -1668,7 +1668,7 @@ TypedArrayConstruct(JSContext *cx, jsint
+
+ default:
+ JS_NOT_REACHED("shouldn't have gotten here");
+- return false;
++ return NULL;
+ }
+ }
+
+diff -upr a/js/src/jsxml.cpp b/js/src/jsxml.cpp
+--- a/js/src/jsxml.cpp 2011-03-31 14:08:36.000000000 -0500
++++ b/js/src/jsxml.cpp 2016-02-29 19:17:10.363279731 -0600
+@@ -282,7 +282,7 @@ NewXMLNamespace(JSContext *cx, JSLinearS
+
+ obj = NewBuiltinClassInstanceXML(cx, &js_NamespaceClass);
+ if (!obj)
+- return JS_FALSE;
++ return NULL;
+ JS_ASSERT(JSVAL_IS_VOID(obj->getNamePrefixVal()));
+ JS_ASSERT(JSVAL_IS_VOID(obj->getNameURIVal()));
+ JS_ASSERT(JSVAL_IS_VOID(obj->getNamespaceDeclared()));
+@@ -431,7 +431,7 @@ ConvertQNameToString(JSContext *cx, JSOb
+ size_t length = str->length();
+ jschar *chars = (jschar *) cx->malloc((length + 2) * sizeof(jschar));
+ if (!chars)
+- return JS_FALSE;
++ return NULL;
+ *chars = '@';
+ const jschar *strChars = str->getChars(cx);
+ if (!strChars) {
+diff -upr a/js/src/methodjit/InvokeHelpers.cpp b/js/src/methodjit/InvokeHelpers.cpp
+--- a/js/src/methodjit/InvokeHelpers.cpp 2011-03-31 14:08:36.000000000 -0500
++++ b/js/src/methodjit/InvokeHelpers.cpp 2016-02-29 20:34:14.496983346 -0600
+@@ -728,7 +728,7 @@ AtSafePoint(JSContext *cx)
+ {
+ JSStackFrame *fp = cx->fp();
+ if (fp->hasImacropc())
+- return false;
++ return NULL;
+
+ JSScript *script = fp->script();
+ return script->maybeNativeCodeForPC(fp->isConstructing(), cx->regs->pc);
+diff -upr a/js/src/nanojit/NativeX64.cpp b/js/src/nanojit/NativeX64.cpp
+--- a/js/src/nanojit/NativeX64.cpp 2011-03-31 14:08:36.000000000 -0500
++++ b/js/src/nanojit/NativeX64.cpp 2016-02-29 20:19:56.487934808 -0600
+@@ -1899,7 +1899,7 @@ namespace nanojit
+ }
+ }
+
+- static const AVMPLUS_ALIGN16(int64_t) negateMask[] = {0x8000000000000000LL,0};
++ static const AVMPLUS_ALIGN16(int64_t) negateMask[] = {int64_t(0x8000000000000000LL),0};
+
+ void Assembler::asm_fneg(LIns *ins) {
+ Register rr, ra;
diff --git a/package/spidermonkey185/0010-tag.patch b/package/spidermonkey185/0010-tag.patch
new file mode 100644
index 000000000..398627bd8
--- /dev/null
+++ b/package/spidermonkey185/0010-tag.patch
@@ -0,0 +1,107 @@
+Source:
+https://src.fedoraproject.org/rpms/js/blob/f26/f/mozjs1.8.5-tag.patch
+
+Patch position 10:
+https://src.fedoraproject.org/rpms/js/blob/master/f/js.spec#_26
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+
+diff -up js-1.8.5/js/src/jsval.h.tag js-1.8.5/js/src/jsval.h
+--- js-1.8.5/js/src/jsval.h.tag 2017-03-10 16:27:06.000000000 +0100
++++ js-1.8.5/js/src/jsval.h 2017-03-10 16:30:39.000000000 +0100
+@@ -66,7 +66,7 @@ JS_BEGIN_EXTERN_C
+ #endif
+
+ #if JS_BITS_PER_WORD == 64
+-# define JSVAL_TAG_SHIFT 47
++# define JSVAL_TAG_SHIFT 48
+ #endif
+
+ /*
+@@ -135,7 +135,8 @@ JS_STATIC_ASSERT(sizeof(JSValueTag) == 4
+ /* Remember to propagate changes to the C defines below. */
+ JS_ENUM_HEADER(JSValueTag, uint32)
+ {
+- JSVAL_TAG_MAX_DOUBLE = 0x1FFF0,
++ JSVAL_TAG_DUMMY = 0xFFFFFFFF, /* Make sure the enums cannot fit 16-bits. */
++ JSVAL_TAG_MAX_DOUBLE = 0xFFF8,
+ JSVAL_TAG_INT32 = JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_INT32,
+ JSVAL_TAG_UNDEFINED = JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_UNDEFINED,
+ JSVAL_TAG_STRING = JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_STRING,
+@@ -196,7 +197,7 @@ typedef uint32 JSValueTag;
+ #elif JS_BITS_PER_WORD == 64
+
+ typedef uint32 JSValueTag;
+-#define JSVAL_TAG_MAX_DOUBLE ((uint32)(0x1FFF0))
++#define JSVAL_TAG_MAX_DOUBLE ((uint32)(0xFFF8))
+ #define JSVAL_TAG_INT32 (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_INT32)
+ #define JSVAL_TAG_UNDEFINED (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_UNDEFINED)
+ #define JSVAL_TAG_STRING (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_STRING)
+@@ -236,8 +237,8 @@ typedef uint64 JSValueShiftedTag;
+
+ #elif JS_BITS_PER_WORD == 64
+
+-#define JSVAL_PAYLOAD_MASK 0x00007FFFFFFFFFFFLL
+-#define JSVAL_TAG_MASK 0xFFFF800000000000LL
++#define JSVAL_PAYLOAD_MASK 0x0000FFFFFFFFFFFFLL
++#define JSVAL_TAG_MASK 0xFFFF000000000000LL
+ #define JSVAL_TYPE_TO_TAG(type) ((JSValueTag)(JSVAL_TAG_MAX_DOUBLE | (type)))
+ #define JSVAL_TYPE_TO_SHIFTED_TAG(type) (((uint64)JSVAL_TYPE_TO_TAG(type)) << JSVAL_TAG_SHIFT)
+
+@@ -297,8 +298,8 @@ typedef union jsval_layout
+ #if (!defined(_WIN64) && defined(__cplusplus))
+ /* MSVC does not pack these correctly :-( */
+ struct {
+- uint64 payload47 : 47;
+- JSValueTag tag : 17;
++ uint64 payload48 : 48;
++ JSValueTag tag : 16;
+ } debugView;
+ #endif
+ struct {
+@@ -339,8 +340,8 @@ typedef union jsval_layout
+ {
+ uint64 asBits;
+ struct {
+- JSValueTag tag : 17;
+- uint64 payload47 : 47;
++ JSValueTag tag : 16;
++ uint64 payload48 : 48;
+ } debugView;
+ struct {
+ uint32 padding;
+diff -up js-1.8.5/js/src/jsvalue.h.tag js-1.8.5/js/src/jsvalue.h
+--- js-1.8.5/js/src/jsvalue.h.tag 2017-03-10 16:27:06.000000000 +0100
++++ js-1.8.5/js/src/jsvalue.h 2017-03-10 16:27:06.000000000 +0100
+@@ -255,7 +255,7 @@ JSVAL_SAME_TYPE_IMPL(jsval_layout lhs, j
+ {
+ uint64 lbits = lhs.asBits, rbits = rhs.asBits;
+ return (lbits <= JSVAL_TAG_MAX_DOUBLE && rbits <= JSVAL_TAG_MAX_DOUBLE) ||
+- (((lbits ^ rbits) & 0xFFFF800000000000LL) == 0);
++ (((lbits ^ rbits) & 0xFFFF000000000000LL) == 0);
+ }
+
+ static JS_ALWAYS_INLINE jsval_layout
+@@ -277,7 +277,7 @@ JSVAL_TO_PRIVATE_UINT32_IMPL(jsval_layou
+ static JS_ALWAYS_INLINE JSValueType
+ JSVAL_EXTRACT_NON_DOUBLE_TYPE_IMPL(jsval_layout l)
+ {
+- uint64 type = (l.asBits >> JSVAL_TAG_SHIFT) & 0xF;
++ uint64 type = (l.asBits >> JSVAL_TAG_SHIFT) & 0x7;
+ JS_ASSERT(type > JSVAL_TYPE_DOUBLE);
+ return (JSValueType)type;
+ }
+diff -up js-1.8.5/js/src/methodjit/MethodJIT.cpp.tag js-1.8.5/js/src/methodjit/MethodJIT.cpp
+--- js-1.8.5/js/src/methodjit/MethodJIT.cpp.tag 2011-03-31 21:08:36.000000000 +0200
++++ js-1.8.5/js/src/methodjit/MethodJIT.cpp 2017-03-10 16:27:06.000000000 +0100
+@@ -186,8 +186,8 @@ JS_STATIC_ASSERT(sizeof(VMFrame) % 16 ==
+ JS_STATIC_ASSERT(offsetof(VMFrame, savedRBX) == 0x58);
+ JS_STATIC_ASSERT(offsetof(VMFrame, regs.fp) == 0x38);
+
+-JS_STATIC_ASSERT(JSVAL_TAG_MASK == 0xFFFF800000000000LL);
+-JS_STATIC_ASSERT(JSVAL_PAYLOAD_MASK == 0x00007FFFFFFFFFFFLL);
++JS_STATIC_ASSERT(JSVAL_TAG_MASK == 0xFFFF000000000000LL);
++JS_STATIC_ASSERT(JSVAL_PAYLOAD_MASK == 0x0000FFFFFFFFFFFFLL);
+
+ asm volatile (
+ ".text\n"
diff --git a/package/spidermonkey185/0011-remove-unused-pkgconfg-nspr-dependency.patch b/package/spidermonkey185/0011-remove-unused-pkgconfg-nspr-dependency.patch
new file mode 100644
index 000000000..24738830d
--- /dev/null
+++ b/package/spidermonkey185/0011-remove-unused-pkgconfg-nspr-dependency.patch
@@ -0,0 +1,19 @@
+From: Nicolas Cavallari <nicolas.cavallari at green-communications.fr>
+
+Remove the dependency on nspr.
+
+This dependency was removed when spidermonkey was extracted from the
+mozilla code base. This is probably a left-over, since it is not used.
+
+Signed-off-by: Nicolas Cavallari <nicolas.cavallari at green-communications.fr>
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+
+--- spidermonkey185-1.0.0/js/src/mozjs185.pc.in 2016-05-23 13:41:28.430466213 +0200
++++ spidermonkey185-1.0.0/js/src/mozjs185.pc.in 2016-05-23 13:42:00.727558977 +0200
+@@ -5,6 +5,5 @@
+ Name: SpiderMonkey 1.8.5
+ Description: The Mozilla library for JavaScript 1.8.5
+ Version: %MOZILLA_VERSION%
+-Requires: nspr >= 4.7
+ Libs: -L${libdir} -lmozjs185
+ Cflags: -I${includedir}/js
diff --git a/package/spidermonkey185/0012-arm5tej.patch b/package/spidermonkey185/0012-arm5tej.patch
new file mode 100644
index 000000000..8ed6ddf3e
--- /dev/null
+++ b/package/spidermonkey185/0012-arm5tej.patch
@@ -0,0 +1,24 @@
+Fix support for armv5
+
+Fixes build error with BR2_GCC_TARGET_CPU="arm926ej-s" because
+spidermonkey does not recognize __ARM_ARCH_5TEJ__:
+
+./nanojit/njconfig.cpp:103:18:
+ error: invalid conversion from 'const char*' to 'uint8_t {aka unsigned char}' [-fpermissive]
+ arm_arch = NJ_COMPILER_ARM_ARCH;
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+
+diff -uNr js-1.8.5.org/js/src/nanojit/njcpudetect.h js-1.8.5/js/src/nanojit/njcpudetect.h
+--- js-1.8.5.org/js/src/nanojit/njcpudetect.h 2011-03-31 21:08:36.000000000 +0200
++++ js-1.8.5/js/src/nanojit/njcpudetect.h 2017-08-05 16:01:35.444779038 +0200
+@@ -87,7 +87,8 @@
+ #elif defined(__ARM_ARCH_5__) || \
+ defined(__ARM_ARCH_5T__) || \
+ defined(__ARM_ARCH_5E__) || \
+- defined(__ARM_ARCH_5TE__)
++ defined(__ARM_ARCH_5TE__) || \
++ defined(__ARM_ARCH_5TEJ__)
+
+ #define NJ_COMPILER_ARM_ARCH 5
+
diff --git a/package/spidermonkey185/0013-Avoid-missing-cacheFlush-support-error-on-exotic-platforms.patch b/package/spidermonkey185/0013-Avoid-missing-cacheFlush-support-error-on-exotic-platforms.patch
new file mode 100644
index 000000000..1bb2ab25e
--- /dev/null
+++ b/package/spidermonkey185/0013-Avoid-missing-cacheFlush-support-error-on-exotic-platforms.patch
@@ -0,0 +1,36 @@
+
+# HG changeset patch
+# User Mike Hommey <mh+mozilla at glandium.org>
+# Date 1303461188 -7200
+# Node ID 59771590e9203d48ef8cbcd7eaf2f8ae45dbb1c1
+# Parent c4b82ec27d6d6e1c02ef0abb3b6e805bfdd092ec
+Bug 638056 - Avoid "The cacheFlush support is missing on this platform" error on exotic platforms. r=cdleary
+
+[nicolas.cavallari at green-communications.fr: refresh patch]
+Signed-off-by: Nicolas Cavallari <nicolas.cavallari at green-communications.fr>
+[Bernd: rebased against Fedora patch series]
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+
+diff --git a/js/src/Makefile.in b/js/src/Makefile.in
+--- a/js/src/Makefile.in
++++ b/js/src/Makefile.in
+@@ -377,17 +377,17 @@ CPPSRCS += checks.cc \
+ platform.cc \
+ utils.cc \
+ $(NONE)
+
+ #
+ # END enclude sources for V8 dtoa
+ #############################################
+
+-ifeq (,$(filter-out aarch64 powerpc powerpc64 powerpc64le sparc sparc64 s390 s390x,$(TARGET_CPU)))
++ifeq (,$(filter arm %86 x86_64,$(TARGET_CPU)))
+
+ VPATH += $(srcdir)/assembler \
+ $(srcdir)/assembler/wtf \
+ $(srcdir)/yarr/pcre \
+ $(NULL)
+
+ CPPSRCS += pcre_compile.cpp \
+ pcre_exec.cpp \
+
diff --git a/package/spidermonkey185/Config.in b/package/spidermonkey185/Config.in
new file mode 100644
index 000000000..d1d02bf2e
--- /dev/null
+++ b/package/spidermonkey185/Config.in
@@ -0,0 +1,16 @@
+config BR2_PACKAGE_SPIDERMONKEY185
+ bool "spidermonkey (1.8.5)"
+ depends on BR2_USE_MMU # fork in executable tools.
+ depends on BR2_INSTALL_LIBSTDCPP
+ depends on !BR2_STATIC_LIBS
+ depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # needs pthread_getattr_np()
+ help
+ SpiderMonkey is Mozilla's JavaScript engine written in C/C++. It is
+ used in various Mozilla products, including Firefox.
+
+ This is the old 1.8.5 branch, used in Firefox 4.
+
+comment "Spider monkey (1.8.5) need a toolchain with C++, dynamic library, NPTL"
+ depends on BR2_USE_MMU
+ depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \
+ !BR2_TOOLCHAIN_HAS_THREADS_NPTL
diff --git a/package/spidermonkey185/spidermonkey185.hash b/package/spidermonkey185/spidermonkey185.hash
new file mode 100644
index 000000000..bd651d780
--- /dev/null
+++ b/package/spidermonkey185/spidermonkey185.hash
@@ -0,0 +1,2 @@
+# Locally generated.
+sha256 5d12f7e1f5b4a99436685d97b9b7b75f094d33580227aa998c406bbae6f2a687 js185-1.0.0.tar.gz
diff --git a/package/spidermonkey185/spidermonkey185.mk b/package/spidermonkey185/spidermonkey185.mk
new file mode 100644
index 000000000..4787a6309
--- /dev/null
+++ b/package/spidermonkey185/spidermonkey185.mk
@@ -0,0 +1,36 @@
+################################################################################
+#
+# Spidermonkey (1.8.5)
+#
+################################################################################
+
+SPIDERMONKEY185_VERSION = 1.0.0
+SPIDERMONKEY185_SITE = http://ftp.mozilla.org/pub/js
+SPIDERMONKEY185_SOURCE = js185-$(SPIDERMONKEY185_VERSION).tar.gz
+SPIDERMONKEY185_SUBDIR = js/src
+SPIDERMONKEY185_LICENSE = MPL-1.1 or GPL-2.0+ or LGPL-2.1+
+SPIDERMONKEY185_INSTALL_STAGING = YES
+SPIDERMONKEY185_DEPENDENCIES = host-python host-perl
+
+# To detect endianess a host binary is built from jscpucfg.cpp which is
+# not cross-compile friendly, so we force endianess.
+# HOST_CFLAGS are forced to avoid problems when detecting host gcc
+# because configure would pass TARGET_CFLAGS to the host gcc.
+SPIDERMONKEY185_CONF_ENV = \
+ HOST_CFLAGS="$(HOST_CFLAGS)" \
+ HOST_CXXFLAGS="$(HOST_CXXFLAGS) -DFORCE_$(BR2_ENDIAN)_ENDIAN" \
+ $(if $(BR2_powerpc)$(BR2_x86_64),ac_cv_va_val_copy=no)
+
+# Mozilla mixes up target, host and build. See the comment in configure.in
+# around line 360. Also, nanojit fails to build on sparc64 with
+# #error "unknown nanojit architecture", so disable the JIT.
+# Disable JIT for armv4 because this CPU does not support the asm code
+# used in spidermonkey.
+SPIDERMONKEY185_CONF_OPTS = \
+ --target=$(GNU_TARGET_NAME) \
+ --build=$(GNU_TARGET_NAME) \
+ --host=$(GNU_HOST_NAME) \
+ $(if $(BR2_ARM_CPU_ARMV4),--disable-methodjit) \
+ $(if $(BR2_sparc64),--disable-tracejit)
+
+$(eval $(autotools-package))
--
2.11.0
More information about the buildroot
mailing list