summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2012-12-16 15:28:06 +0000
committerVincent Sanders <vince@kyllikki.org>2012-12-16 15:28:06 +0000
commitaa56613581ef3afe172022871a561c0e4b032918 (patch)
tree3b56df074cada8bc04f98e03b5f1fb2750b60928
parent842cbbe2deac7546b6e860bf413e03b6ad565c82 (diff)
downloadtoolchains-aa56613581ef3afe172022871a561c0e4b032918.tar.gz
toolchains-aa56613581ef3afe172022871a561c0e4b032918.tar.bz2
make RISC OS build of spidermonkey 1.7.0 succeed. still missing its pkgconfig though
-rw-r--r--sdk/Makefile12
-rw-r--r--sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.7.0/Makefile.ref.p33
-rw-r--r--sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.7.0/RISCOS.mk.p69
-rw-r--r--sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.7.0/jsautocfg.h.p55
-rw-r--r--sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.7.0/jsautokw.h.p404
-rw-r--r--sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.7.0/rules.mk.p36
6 files changed, 605 insertions, 4 deletions
diff --git a/sdk/Makefile b/sdk/Makefile
index a2d589d..0113144 100644
--- a/sdk/Makefile
+++ b/sdk/Makefile
@@ -84,7 +84,9 @@ ifeq ($(TARGET),arm-unknown-riscos)
SDK_ITEMS := $(addprefix $(BUILDSTEPS)/, $(COMMON_SDK_ITEMS) spidermonkey.d)
EXTRAARGS_LIBCARES := --disable-shared
EXTRAARGS_LIBCURL := --enable-nonblocking --enable-ares $(LIBCURL_DISABLES)
- ifeq ($(VERSION_SPIDERMONKEY),1.8.5)
+ ifeq ($(VERSION_SPIDERMONKEY),1.7.0)
+ EXTRAARGS_SPIDERMONKEY := BUILD_OPT=1 OS_ARCH=RISCOS OS_CPUARCH=arm OS_CONFIG=RISCOS
+ else
EXTRAARGS_SPIDERMONKEY := --disable-tracejit --disable-thumb2 --without-thumb --enable-static --disable-shared --disable-shared-js --with-cpu-arch=armv3 --disable-tests --disable-methodjit
endif
endif
@@ -109,7 +111,7 @@ ifeq ($(TARGET),ppc-amigaos)
SDK_ITEMS := $(addprefix $(BUILDSTEPS)/, libiconv.d libtre.d libpbl.d $(COMMON_SDK_ITEMS))
EXTRAARGS_LIBCARES := --disable-shared
EXTRAARGS_LIBCURL := --disable-ntlm-wb --without-random
- #VERSION_SPIDERMONKEY := 1.7.0
+ VERSION_SPIDERMONKEY := 1.7.0
endif
ifeq ($(TARGET),i686-w64-mingw32)
@@ -490,12 +492,13 @@ $(SOURCEDIR)/nspr-$(VERSION_NSPR).tar.gz:
# spidermonkey (libmozjs)
$(BUILDSTEPS)/spidermonkey.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/nspr.d $(BUILDSTEPS)/spidermonkey-src.d
ifeq ($(VERSION_SPIDERMONKEY),1.7.0)
- $(env) make -C $(BUILDDIR)/spidermonkey/js-$(VERSION_SPIDERMONKEY)/js/src -f Makefile.ref
+ $(env) make -C $(BUILDDIR)/spidermonkey/js-$(VERSION_SPIDERMONKEY)/js/src -f Makefile.ref JS_DIST=$(GCCSDK_INSTALL_ENV) $(EXTRAARGS_SPIDERMONKEY)
+ $(env) make -C $(BUILDDIR)/spidermonkey/js-$(VERSION_SPIDERMONKEY)/js/src -f Makefile.ref JS_DIST=$(GCCSDK_INSTALL_ENV) $(EXTRAARGS_SPIDERMONKEY) export
else
cd $(BUILDDIR)/spidermonkey/js-$(VERSION_SPIDERMONKEY)/js/src && $(env) ./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --with-system-nspr --with-nspr-prefix=$(GCCSDK_INSTALL_ENV) $(EXTRAARGS_SPIDERMONKEY)
cd $(BUILDDIR)/spidermonkey/js-$(VERSION_SPIDERMONKEY)/js/src && $(env) make
-endif
cd $(BUILDDIR)/spidermonkey/js-$(VERSION_SPIDERMONKEY)/js/src && $(env) make install
+endif
touch $@
$(BUILDSTEPS)/spidermonkey-src.d: $(BUILDSTEPS)/sourcedir.d $(SOURCEDIR)/spidermonkey-$(VERSION_SPIDERMONKEY).tar.gz
@@ -505,6 +508,7 @@ $(BUILDSTEPS)/spidermonkey-src.d: $(BUILDSTEPS)/sourcedir.d $(SOURCEDIR)/spiderm
ifeq ($(VERSION_SPIDERMONKEY),1.7.0)
mkdir $(BUILDDIR)/spidermonkey/js-$(VERSION_SPIDERMONKEY)
mv $(BUILDDIR)/spidermonkey/js $(BUILDDIR)/spidermonkey/js-$(VERSION_SPIDERMONKEY)/
+ mkdir $(BUILDDIR)/spidermonkey/js-$(VERSION_SPIDERMONKEY)/js/src/RISCOS_OPT.OBJ
endif
for p in `ls $(RECIPES)/patches/spidermonkey/$(TARGET)-$(VERSION_SPIDERMONKEY)/*.p` ; do patch -d $(BUILDDIR)/spidermonkey/js-$(VERSION_SPIDERMONKEY) -p0 <$$p ; done
touch $@
diff --git a/sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.7.0/Makefile.ref.p b/sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.7.0/Makefile.ref.p
new file mode 100644
index 0000000..f26f671
--- /dev/null
+++ b/sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.7.0/Makefile.ref.p
@@ -0,0 +1,33 @@
+--- js/src/Makefile.ref.orig 2006-07-26 20:16:47.000000000 +0100
++++ js/src/Makefile.ref 2012-12-16 12:32:02.331547000 +0000
+@@ -305,7 +305,7 @@
+ $(OBJDIR)/jskwgen.$(OBJ_SUFFIX): jskwgen.c jskeyword.tbl
+
+ $(OBJDIR)/jsautokw.h: $(OBJDIR)/jskwgen$(HOST_BIN_SUFFIX) jskeyword.tbl
+- $(OBJDIR)/jskwgen$(HOST_BIN_SUFFIX) $@
++# $(OBJDIR)/jskwgen$(HOST_BIN_SUFFIX) $@
+
+ ifdef USE_MSVC
+
+@@ -349,8 +349,8 @@
+ $(HFILES) $(CFILES): $(OBJDIR)/jsautocfg.h
+
+ $(OBJDIR)/jsautocfg.h: $(OBJDIR)/jscpucfg
+- rm -f $@
+- $(OBJDIR)/jscpucfg > $@
++# rm -f $@
++# $(OBJDIR)/jscpucfg > $@
+
+ $(OBJDIR)/jscpucfg: $(OBJDIR)/jscpucfg.o
+ $(CC) -o $@ $(OBJDIR)/jscpucfg.o
+--- js/src/editline/Makefile.ref.orig 2005-02-12 20:10:33.000000000 +0000
++++ js/src/editline/Makefile.ref 2012-12-16 12:36:54.983350000 +0000
+@@ -103,7 +103,7 @@
+ LIBRARY = $(OBJDIR)/libedit.a
+
+ define MAKE_OBJDIR
+-if test ! -d $(@D); then rm -rf $(@D); mkdir $(@D); fi
++if test ! -d $(@D); then rm -rf $(@D); mkdir -p $(@D); fi
+ endef
+
+ all: $(LIBRARY)
diff --git a/sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.7.0/RISCOS.mk.p b/sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.7.0/RISCOS.mk.p
new file mode 100644
index 0000000..f4afe55
--- /dev/null
+++ b/sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.7.0/RISCOS.mk.p
@@ -0,0 +1,69 @@
+--- js/src/config/RISCOS.mk.orig 2012-12-16 12:03:22.369313976 +0000
++++ js/src/config/RISCOS.mk 2012-12-16 12:03:16.485339267 +0000
+@@ -0,0 +1,66 @@
++# -*- Mode: makefile -*-
++#
++# ***** BEGIN LICENSE BLOCK *****
++# Version: MPL 1.1/GPL 2.0/LGPL 2.1
++#
++# The contents of this file are subject to the Mozilla Public License Version
++# 1.1 (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.mozilla.org/MPL/
++#
++# Software distributed under the License is distributed on an "AS IS" basis,
++# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
++# for the specific language governing rights and limitations under the
++# License.
++#
++# The Original Code is Mozilla Communicator client code, released
++# March 31, 1998.
++#
++# The Initial Developer of the Original Code is
++# Netscape Communications Corporation.
++# Portions created by the Initial Developer are Copyright (C) 1998
++# the Initial Developer. All Rights Reserved.
++#
++# Contributor(s):
++#
++# Alternatively, the contents of this file may be used under the terms of
++# either the GNU General Public License Version 2 or later (the "GPL"), or
++# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
++# in which case the provisions of the GPL or the LGPL are applicable instead
++# of those above. If you wish to allow use of your version of this file only
++# under the terms of either the GPL or the LGPL, and not to allow others to
++# use your version of this file under the terms of the MPL, indicate your
++# decision by deleting the provisions above and replace them with the notice
++# and other provisions required by the GPL or the LGPL. If you do not delete
++# the provisions above, a recipient may use your version of this file under
++# the terms of any one of the MPL, the GPL or the LGPL.
++#
++# ***** END LICENSE BLOCK *****
++
++#
++# Config for all versions of Linux
++#
++
++CCC := $(CXX)
++CC ?= gcc
++CCC ?= g++
++CFLAGS += -static -Wall -Wno-format
++OS_CFLAGS = -DXP_UNIX -DSVR4 -DSYSV -D_BSD_SOURCE -DPOSIX_SOURCE -DHAVE_LOCALTIME_R
++
++RANLIB = echo
++MKSHLIB = $(LD) -shared $(XMKSHLIBOPTS)
++
++#.c.o:
++# $(CC) -c -MD $*.d $(CFLAGS) $<
++
++CPU_ARCH = arm
++
++GFX_ARCH = x
++
++OS_LIBS = -lm -lc
++
++ASFLAGS += -x assembler-with-cpp
++
++# Use the editline library to provide line-editing support.
++JS_EDITLINE = 1
++
diff --git a/sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.7.0/jsautocfg.h.p b/sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.7.0/jsautocfg.h.p
new file mode 100644
index 0000000..5ab277a
--- /dev/null
+++ b/sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.7.0/jsautocfg.h.p
@@ -0,0 +1,55 @@
+--- js/src/RISCOS_OPT.OBJ/jsautocfg.h.orig 2012-12-16 12:41:07.537588600 +0000
++++ js/src/RISCOS_OPT.OBJ/jsautocfg.h 2012-12-16 12:40:03.307277000 +0000
+@@ -0,0 +1,52 @@
++#ifndef js_cpucfg___
++#define js_cpucfg___
++
++/* AUTOMATICALLY GENERATED - DO NOT EDIT */
++
++#define IS_LITTLE_ENDIAN 1
++#undef IS_BIG_ENDIAN
++
++#define JS_BYTES_PER_BYTE 1L
++#define JS_BYTES_PER_SHORT 2L
++#define JS_BYTES_PER_INT 4L
++#define JS_BYTES_PER_INT64 8L
++#define JS_BYTES_PER_LONG 4L
++#define JS_BYTES_PER_FLOAT 4L
++#define JS_BYTES_PER_DOUBLE 8L
++#define JS_BYTES_PER_WORD 4L
++#define JS_BYTES_PER_DWORD 8L
++
++#define JS_BITS_PER_BYTE 8L
++#define JS_BITS_PER_SHORT 16L
++#define JS_BITS_PER_INT 32L
++#define JS_BITS_PER_INT64 64L
++#define JS_BITS_PER_LONG 32L
++#define JS_BITS_PER_FLOAT 32L
++#define JS_BITS_PER_DOUBLE 64L
++#define JS_BITS_PER_WORD 32L
++
++#define JS_BITS_PER_BYTE_LOG2 3L
++#define JS_BITS_PER_SHORT_LOG2 4L
++#define JS_BITS_PER_INT_LOG2 5L
++#define JS_BITS_PER_INT64_LOG2 6L
++#define JS_BITS_PER_LONG_LOG2 5L
++#define JS_BITS_PER_FLOAT_LOG2 5L
++#define JS_BITS_PER_DOUBLE_LOG2 6L
++#define JS_BITS_PER_WORD_LOG2 5L
++
++#define JS_ALIGN_OF_SHORT 2L
++#define JS_ALIGN_OF_INT 4L
++#define JS_ALIGN_OF_LONG 4L
++#define JS_ALIGN_OF_INT64 4L
++#define JS_ALIGN_OF_FLOAT 4L
++#define JS_ALIGN_OF_DOUBLE 4L
++#define JS_ALIGN_OF_POINTER 4L
++#define JS_ALIGN_OF_WORD 4L
++
++#define JS_BYTES_PER_WORD_LOG2 2L
++#define JS_BYTES_PER_DWORD_LOG2 3L
++#define JS_WORDS_PER_DWORD_LOG2 1L
++
++#define JS_STACK_GROWTH_DIRECTION (-1)
++
++#endif /* js_cpucfg___ */
diff --git a/sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.7.0/jsautokw.h.p b/sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.7.0/jsautokw.h.p
new file mode 100644
index 0000000..9c66cf4
--- /dev/null
+++ b/sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.7.0/jsautokw.h.p
@@ -0,0 +1,404 @@
+--- js/src/RISCOS_OPT.OBJ/jsautokw.h.orig 2012-12-16 12:44:10.504922500 +0000
++++ js/src/RISCOS_OPT.OBJ/jsautokw.h 2012-12-16 12:44:24.520490000 +0000
+@@ -0,0 +1,401 @@
++ /*
++ * Generating switch for the list of 61 entries:
++ * break
++ * case
++ * continue
++ * default
++ * delete
++ * do
++ * else
++ * export
++ * false
++ * for
++ * function
++ * if
++ * in
++ * new
++ * null
++ * return
++ * switch
++ * this
++ * true
++ * typeof
++ * var
++ * void
++ * while
++ * with
++ * const
++ * try
++ * catch
++ * finally
++ * throw
++ * instanceof
++ * abstract
++ * boolean
++ * byte
++ * char
++ * class
++ * double
++ * extends
++ * final
++ * float
++ * goto
++ * implements
++ * import
++ * int
++ * interface
++ * long
++ * native
++ * package
++ * private
++ * protected
++ * public
++ * short
++ * static
++ * super
++ * synchronized
++ * throws
++ * transient
++ * volatile
++ * enum
++ * debugger
++ * yield
++ * let
++ */
++ switch (JSKW_LENGTH()) {
++ case 2:
++ if (JSKW_AT(0) == 'd') {
++ if (JSKW_AT(1)=='o') {
++ JSKW_GOT_MATCH(5) /* do */
++ }
++ JSKW_NO_MATCH()
++ }
++ if (JSKW_AT(0) == 'i') {
++ if (JSKW_AT(1) == 'f') {
++ JSKW_GOT_MATCH(11) /* if */
++ }
++ if (JSKW_AT(1) == 'n') {
++ JSKW_GOT_MATCH(12) /* in */
++ }
++ JSKW_NO_MATCH()
++ }
++ JSKW_NO_MATCH()
++ case 3:
++ switch (JSKW_AT(2)) {
++ case 'r':
++ if (JSKW_AT(0) == 'f') {
++ if (JSKW_AT(1)=='o') {
++ JSKW_GOT_MATCH(9) /* for */
++ }
++ JSKW_NO_MATCH()
++ }
++ if (JSKW_AT(0) == 'v') {
++ if (JSKW_AT(1)=='a') {
++ JSKW_GOT_MATCH(20) /* var */
++ }
++ JSKW_NO_MATCH()
++ }
++ JSKW_NO_MATCH()
++ case 't':
++ if (JSKW_AT(0) == 'i') {
++ if (JSKW_AT(1)=='n') {
++ JSKW_GOT_MATCH(42) /* int */
++ }
++ JSKW_NO_MATCH()
++ }
++ if (JSKW_AT(0) == 'l') {
++ if (JSKW_AT(1)=='e') {
++ JSKW_GOT_MATCH(60) /* let */
++ }
++ JSKW_NO_MATCH()
++ }
++ JSKW_NO_MATCH()
++ case 'w':
++ if (JSKW_AT(0)=='n' && JSKW_AT(1)=='e') {
++ JSKW_GOT_MATCH(13) /* new */
++ }
++ JSKW_NO_MATCH()
++ case 'y':
++ if (JSKW_AT(0)=='t' && JSKW_AT(1)=='r') {
++ JSKW_GOT_MATCH(25) /* try */
++ }
++ JSKW_NO_MATCH()
++ }
++ JSKW_NO_MATCH()
++ case 4:
++ switch (JSKW_AT(3)) {
++ case 'd':
++ if (JSKW_AT(0)=='v' && JSKW_AT(1)=='o' && JSKW_AT(2)=='i') {
++ JSKW_GOT_MATCH(21) /* void */
++ }
++ JSKW_NO_MATCH()
++ case 'e':
++ if (JSKW_AT(2) == 's') {
++ if (JSKW_AT(0) == 'c') {
++ if (JSKW_AT(1)=='a') {
++ JSKW_GOT_MATCH(1) /* case */
++ }
++ JSKW_NO_MATCH()
++ }
++ if (JSKW_AT(0) == 'e') {
++ if (JSKW_AT(1)=='l') {
++ JSKW_GOT_MATCH(6) /* else */
++ }
++ JSKW_NO_MATCH()
++ }
++ JSKW_NO_MATCH()
++ }
++ if (JSKW_AT(2) == 't') {
++ if (JSKW_AT(0)=='b' && JSKW_AT(1)=='y') {
++ JSKW_GOT_MATCH(32) /* byte */
++ }
++ JSKW_NO_MATCH()
++ }
++ if (JSKW_AT(2) == 'u') {
++ if (JSKW_AT(0)=='t' && JSKW_AT(1)=='r') {
++ JSKW_GOT_MATCH(18) /* true */
++ }
++ JSKW_NO_MATCH()
++ }
++ JSKW_NO_MATCH()
++ case 'g':
++ if (JSKW_AT(0)=='l' && JSKW_AT(1)=='o' && JSKW_AT(2)=='n') {
++ JSKW_GOT_MATCH(44) /* long */
++ }
++ JSKW_NO_MATCH()
++ case 'h':
++ if (JSKW_AT(0)=='w' && JSKW_AT(1)=='i' && JSKW_AT(2)=='t') {
++ JSKW_GOT_MATCH(23) /* with */
++ }
++ JSKW_NO_MATCH()
++ case 'l':
++ if (JSKW_AT(0)=='n' && JSKW_AT(1)=='u' && JSKW_AT(2)=='l') {
++ JSKW_GOT_MATCH(14) /* null */
++ }
++ JSKW_NO_MATCH()
++ case 'm':
++ if (JSKW_AT(0)=='e' && JSKW_AT(1)=='n' && JSKW_AT(2)=='u') {
++ JSKW_GOT_MATCH(57) /* enum */
++ }
++ JSKW_NO_MATCH()
++ case 'o':
++ if (JSKW_AT(0)=='g' && JSKW_AT(1)=='o' && JSKW_AT(2)=='t') {
++ JSKW_GOT_MATCH(39) /* goto */
++ }
++ JSKW_NO_MATCH()
++ case 'r':
++ if (JSKW_AT(0)=='c' && JSKW_AT(1)=='h' && JSKW_AT(2)=='a') {
++ JSKW_GOT_MATCH(33) /* char */
++ }
++ JSKW_NO_MATCH()
++ case 's':
++ if (JSKW_AT(0)=='t' && JSKW_AT(1)=='h' && JSKW_AT(2)=='i') {
++ JSKW_GOT_MATCH(17) /* this */
++ }
++ JSKW_NO_MATCH()
++ }
++ JSKW_NO_MATCH()
++ case 5:
++ switch (JSKW_AT(3)) {
++ case 'a':
++ if (JSKW_AT(0) == 'b') {
++ if (JSKW_AT(4)=='k' && JSKW_AT(1)=='r' && JSKW_AT(2)=='e') {
++ JSKW_GOT_MATCH(0) /* break */
++ }
++ JSKW_NO_MATCH()
++ }
++ if (JSKW_AT(0) == 'f') {
++ if (JSKW_AT(4) == 'l') {
++ if (JSKW_AT(2)=='n' && JSKW_AT(1)=='i') {
++ JSKW_GOT_MATCH(37) /* final */
++ }
++ JSKW_NO_MATCH()
++ }
++ if (JSKW_AT(4) == 't') {
++ if (JSKW_AT(2)=='o' && JSKW_AT(1)=='l') {
++ JSKW_GOT_MATCH(38) /* float */
++ }
++ JSKW_NO_MATCH()
++ }
++ JSKW_NO_MATCH()
++ }
++ JSKW_NO_MATCH()
++ case 'c':
++ if (JSKW_AT(0)=='c' && JSKW_AT(1)=='a' && JSKW_AT(2)=='t' && JSKW_AT(4)=='h') {
++ JSKW_GOT_MATCH(26) /* catch */
++ }
++ JSKW_NO_MATCH()
++ case 'e':
++ if (JSKW_AT(0)=='s' && JSKW_AT(1)=='u' && JSKW_AT(2)=='p' && JSKW_AT(4)=='r') {
++ JSKW_GOT_MATCH(52) /* super */
++ }
++ JSKW_NO_MATCH()
++ case 'l':
++ if (JSKW_AT(0) == 'w') {
++ if (JSKW_AT(4)=='e' && JSKW_AT(1)=='h' && JSKW_AT(2)=='i') {
++ JSKW_GOT_MATCH(22) /* while */
++ }
++ JSKW_NO_MATCH()
++ }
++ if (JSKW_AT(0) == 'y') {
++ if (JSKW_AT(4)=='d' && JSKW_AT(1)=='i' && JSKW_AT(2)=='e') {
++ JSKW_GOT_MATCH(59) /* yield */
++ }
++ JSKW_NO_MATCH()
++ }
++ JSKW_NO_MATCH()
++ case 'o':
++ if (JSKW_AT(0)=='t' && JSKW_AT(1)=='h' && JSKW_AT(2)=='r' && JSKW_AT(4)=='w') {
++ JSKW_GOT_MATCH(28) /* throw */
++ }
++ JSKW_NO_MATCH()
++ case 'r':
++ if (JSKW_AT(0)=='s' && JSKW_AT(1)=='h' && JSKW_AT(2)=='o' && JSKW_AT(4)=='t') {
++ JSKW_GOT_MATCH(50) /* short */
++ }
++ JSKW_NO_MATCH()
++ case 's':
++ if (JSKW_AT(0) == 'c') {
++ if (JSKW_AT(4) == 's') {
++ if (JSKW_AT(2)=='a' && JSKW_AT(1)=='l') {
++ JSKW_GOT_MATCH(34) /* class */
++ }
++ JSKW_NO_MATCH()
++ }
++ if (JSKW_AT(4) == 't') {
++ if (JSKW_AT(2)=='n' && JSKW_AT(1)=='o') {
++ JSKW_GOT_MATCH(24) /* const */
++ }
++ JSKW_NO_MATCH()
++ }
++ JSKW_NO_MATCH()
++ }
++ if (JSKW_AT(0) == 'f') {
++ if (JSKW_AT(4)=='e' && JSKW_AT(1)=='a' && JSKW_AT(2)=='l') {
++ JSKW_GOT_MATCH(8) /* false */
++ }
++ JSKW_NO_MATCH()
++ }
++ JSKW_NO_MATCH()
++ }
++ JSKW_NO_MATCH()
++ case 6:
++ switch (JSKW_AT(0)) {
++ case 'd':
++ if (JSKW_AT(1) == 'o') {
++ if (JSKW_AT(5)=='e' && JSKW_AT(4)=='l' && JSKW_AT(2)=='u' && JSKW_AT(3)=='b') {
++ JSKW_GOT_MATCH(35) /* double */
++ }
++ JSKW_NO_MATCH()
++ }
++ if (JSKW_AT(1) == 'e') {
++ if (JSKW_AT(5)=='e' && JSKW_AT(4)=='t' && JSKW_AT(2)=='l' && JSKW_AT(3)=='e') {
++ JSKW_GOT_MATCH(4) /* delete */
++ }
++ JSKW_NO_MATCH()
++ }
++ JSKW_NO_MATCH()
++ case 'e':
++ JSKW_TEST_GUESS(7) /* export */
++ case 'i':
++ JSKW_TEST_GUESS(41) /* import */
++ case 'n':
++ JSKW_TEST_GUESS(45) /* native */
++ case 'p':
++ JSKW_TEST_GUESS(49) /* public */
++ case 'r':
++ JSKW_TEST_GUESS(15) /* return */
++ case 's':
++ if (JSKW_AT(1) == 't') {
++ if (JSKW_AT(5)=='c' && JSKW_AT(4)=='i' && JSKW_AT(2)=='a' && JSKW_AT(3)=='t') {
++ JSKW_GOT_MATCH(51) /* static */
++ }
++ JSKW_NO_MATCH()
++ }
++ if (JSKW_AT(1) == 'w') {
++ if (JSKW_AT(5)=='h' && JSKW_AT(4)=='c' && JSKW_AT(2)=='i' && JSKW_AT(3)=='t') {
++ JSKW_GOT_MATCH(16) /* switch */
++ }
++ JSKW_NO_MATCH()
++ }
++ JSKW_NO_MATCH()
++ case 't':
++ if (JSKW_AT(5) == 'f') {
++ if (JSKW_AT(4)=='o' && JSKW_AT(1)=='y' && JSKW_AT(2)=='p' && JSKW_AT(3)=='e') {
++ JSKW_GOT_MATCH(19) /* typeof */
++ }
++ JSKW_NO_MATCH()
++ }
++ if (JSKW_AT(5) == 's') {
++ if (JSKW_AT(4)=='w' && JSKW_AT(1)=='h' && JSKW_AT(2)=='r' && JSKW_AT(3)=='o') {
++ JSKW_GOT_MATCH(54) /* throws */
++ }
++ JSKW_NO_MATCH()
++ }
++ JSKW_NO_MATCH()
++ }
++ JSKW_NO_MATCH()
++ case 7:
++ switch (JSKW_AT(0)) {
++ case 'b':
++ JSKW_TEST_GUESS(31) /* boolean */
++ case 'd':
++ JSKW_TEST_GUESS(3) /* default */
++ case 'e':
++ JSKW_TEST_GUESS(36) /* extends */
++ case 'f':
++ JSKW_TEST_GUESS(27) /* finally */
++ case 'p':
++ if (JSKW_AT(1) == 'a') {
++ JSKW_TEST_GUESS(46) /* package */
++ }
++ if (JSKW_AT(1) == 'r') {
++ JSKW_TEST_GUESS(47) /* private */
++ }
++ JSKW_NO_MATCH()
++ }
++ JSKW_NO_MATCH()
++ case 8:
++ switch (JSKW_AT(4)) {
++ case 'g':
++ JSKW_TEST_GUESS(58) /* debugger */
++ case 'i':
++ JSKW_TEST_GUESS(2) /* continue */
++ case 'r':
++ JSKW_TEST_GUESS(30) /* abstract */
++ case 't':
++ if (JSKW_AT(1) == 'o') {
++ JSKW_TEST_GUESS(56) /* volatile */
++ }
++ if (JSKW_AT(1) == 'u') {
++ JSKW_TEST_GUESS(10) /* function */
++ }
++ JSKW_NO_MATCH()
++ }
++ JSKW_NO_MATCH()
++ case 9:
++ if (JSKW_AT(1) == 'n') {
++ JSKW_TEST_GUESS(43) /* interface */
++ }
++ if (JSKW_AT(1) == 'r') {
++ if (JSKW_AT(0) == 'p') {
++ JSKW_TEST_GUESS(48) /* protected */
++ }
++ if (JSKW_AT(0) == 't') {
++ JSKW_TEST_GUESS(55) /* transient */
++ }
++ JSKW_NO_MATCH()
++ }
++ JSKW_NO_MATCH()
++ case 10:
++ if (JSKW_AT(1) == 'n') {
++ JSKW_TEST_GUESS(29) /* instanceof */
++ }
++ if (JSKW_AT(1) == 'm') {
++ JSKW_TEST_GUESS(40) /* implements */
++ }
++ JSKW_NO_MATCH()
++ case 12:
++ JSKW_TEST_GUESS(53) /* synchronized */
++ }
++ JSKW_NO_MATCH()
diff --git a/sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.7.0/rules.mk.p b/sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.7.0/rules.mk.p
new file mode 100644
index 0000000..418c018
--- /dev/null
+++ b/sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.7.0/rules.mk.p
@@ -0,0 +1,36 @@
+--- js/src/rules.mk.orig 2012-12-16 14:55:34.000000000 +0000
++++ js/src/rules.mk 2012-12-16 15:01:53.000000000 +0000
+@@ -58,7 +58,7 @@
+ # TARGETS = $(LIBRARY) # $(PROGRAM) not supported for MSVC yet
+ TARGETS += $(SHARED_LIBRARY) $(PROGRAM) # it is now
+ else
+-TARGETS += $(LIBRARY) $(SHARED_LIBRARY) $(PROGRAM)
++TARGETS += $(LIBRARY) $(PROGRAM)
+ endif
+
+ all:
+@@ -158,9 +158,9 @@
+
+ export:
+ +$(LOOP_OVER_PREDIRS)
+- mkdir -p $(DIST)/include $(DIST)/$(LIBDIR) $(DIST)/bin
++ mkdir -p $(DIST)/include/js $(DIST)/$(LIBDIR) $(DIST)/bin
+ ifneq "$(strip $(HFILES))" ""
+- $(CP) $(HFILES) $(DIST)/include
++ $(CP) $(HFILES) $(DIST)/include/js/
+ endif
+ ifneq "$(strip $(LIBRARY))" ""
+ $(CP) $(LIBRARY) $(DIST)/$(LIBDIR)
+@@ -168,9 +168,9 @@
+ ifneq "$(strip $(JARS))" ""
+ $(CP) $(JARS) $(DIST)/$(LIBDIR)
+ endif
+-ifneq "$(strip $(SHARED_LIBRARY))" ""
+- $(CP) $(SHARED_LIBRARY) $(DIST)/$(LIBDIR)
+-endif
++#ifneq "$(strip $(SHARED_LIBRARY))" ""
++# $(CP) $(SHARED_LIBRARY) $(DIST)/$(LIBDIR)
++#endif
+ ifneq "$(strip $(PROGRAM))" ""
+ $(CP) $(PROGRAM) $(DIST)/bin
+ endif