From e4b5d67f879cf930a351eca851740e8a1c62e5d2 Mon Sep 17 00:00:00 2001 From: "Rob Kendrick (fatigue)" Date: Sun, 4 Nov 2012 18:15:06 +0000 Subject: Build NSPR on RISC OS --- sdk/Makefile | 20 +++- .../patches/nspr/arm-unknown-riscos/thread_noops.p | 119 +++++++++++++++++++++ 2 files changed, 138 insertions(+), 1 deletion(-) create mode 100644 sdk/recipes/patches/nspr/arm-unknown-riscos/thread_noops.p diff --git a/sdk/Makefile b/sdk/Makefile index 99f91fc..657f875 100644 --- a/sdk/Makefile +++ b/sdk/Makefile @@ -42,6 +42,7 @@ VERSION_LDG := 2.32 VERSION_WINDOM := 2.0.1 VERSION_HERMES := 1.3.3 VERSION_FREETYPE := 2.4.10 +VERSION_NSPR := 4.9.3 # Path path__ := $(GCCSDK_INSTALL_CROSSBIN):$(PATH) @@ -73,7 +74,7 @@ BUILDSTEPS := $(BUILDDIR)/build-steps SDK_ITEMS := COMMON_SDK_ITEMS := zlib.d libxml2.d openssl.d libpng.d libjpeg.d liblcms.d \ - libmng.d libcares.d libcurl.d libexpat.d + libmng.d libcares.d libcurl.d libexpat.d nspr.d LIBCURL_DISABLES := $(patsubst %,--disable-%,ftp file dict ldap telnet gopher tftp pop3 imap smtp manual) @@ -451,3 +452,20 @@ $(BUILDSTEPS)/libexpat-src.d: $(BUILDSTEPS)/sourcedir.d $(SOURCEDIR)/expat-$(VER $(SOURCEDIR)/expat-$(VERSION_LIBEXPAT).tar.gz: wget -q -O $@ http://downloads.sourceforge.net/project/expat/expat/$(VERSION_LIBEXPAT)/expat-$(VERSION_LIBEXPAT).tar.gz + +# nspr +$(BUILDSTEPS)/nspr.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/nspr-src.d + mkdir -p $(BUILDDIR)/nspr + cd $(BUILDDIR)/nspr && tar xzf $(SOURCEDIR)/nspr-$(VERSION_NSPR).tar.gz + for p in `ls $(RECIPES)/patches/nspr/$(TARGET)/*.p` ; do patch -d $(BUILDDIR)/nspr/nspr-$(VERSION_NSPR) -p0 <$$p ; done + cd $(BUILDDIR)/nspr/nspr-$(VERSION_NSPR)/mozilla/nsprpub && $(env) CROSS_COMPILE=1 CFLAGS=-D_PR_LOCAL_THREADS_ONLY ./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) --disable-shared --without-pthreads + cd $(BUILDDIR)/nspr/nspr-$(VERSION_NSPR)/mozilla/nsprpub && $(env) make + cd $(BUILDDIR)/nspr/nspr-$(VERSION_NSPR)/mozilla/nsprpub && $(env) make install + touch $@ + + +$(BUILDSTEPS)/nspr-src.d: $(BUILDSTEPS)/sourcedir.d $(SOURCEDIR)/nspr-$(VERSION_NSPR).tar.gz + touch $@ + +$(SOURCEDIR)/nspr-$(VERSION_NSPR).tar.gz: + wget -q -O $@ https://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v$(VERSION_NSPR)/src/nspr-$(VERSION_NSPR).tar.gz diff --git a/sdk/recipes/patches/nspr/arm-unknown-riscos/thread_noops.p b/sdk/recipes/patches/nspr/arm-unknown-riscos/thread_noops.p new file mode 100644 index 0000000..ad77bdf --- /dev/null +++ b/sdk/recipes/patches/nspr/arm-unknown-riscos/thread_noops.p @@ -0,0 +1,119 @@ +=== modified file 'mozilla/nsprpub/pr/include/md/_riscos.h' +--- mozilla/nsprpub/pr/include/md/_riscos.h 2012-11-04 17:32:26 +0000 ++++ mozilla/nsprpub/pr/include/md/_riscos.h 2012-11-04 18:01:57 +0000 +@@ -22,6 +22,10 @@ + #define _PR_STAT_HAS_ONLY_ST_ATIME + #define _PR_HAVE_POSIX_SEMAPHORES + ++#define _PR_STACK_VMBASE 0x50000000 ++#define _MD_MMAP_FLAGS MAP_PRIVATE ++#define _MD_DEFAULT_STACK_SIZE 65536L ++ + #include + #include + #include +@@ -47,7 +51,6 @@ + #define _PR_CONTEXT_TYPE jmp_buf + #define _PR_NUM_GCREGS _JBLEN + #define _MD_GET_SP(_t) (_t)->md.context[7] +- + #define CONTEXT(_th) ((_th)->md.context) + + +@@ -84,6 +87,7 @@ + _PR_CONTEXT_TYPE context; + int id; + int errcode; ++ int no_sched; + }; + + struct _MDThreadStack { + +=== modified file 'mozilla/nsprpub/pr/include/private/primpl.h' +--- mozilla/nsprpub/pr/include/private/primpl.h 2012-11-04 17:32:26 +0000 ++++ mozilla/nsprpub/pr/include/private/primpl.h 2012-11-04 17:57:04 +0000 +@@ -501,8 +501,8 @@ + + #endif /* _PR_GLOBAL_THREADS_ONLY */ + +-#define _PR_SET_RESCHED_FLAG() _PR_MD_CURRENT_CPU()->u.missed[3] = 1 +-#define _PR_CLEAR_RESCHED_FLAG() _PR_MD_CURRENT_CPU()->u.missed[3] = 0 ++#define _PR_SET_RESCHED_FLAG() ++#define _PR_CLEAR_RESCHED_FLAG() + + extern _PRInterruptTable _pr_interruptTable[]; + + +=== modified file 'mozilla/nsprpub/pr/src/io/prlog.c' +--- mozilla/nsprpub/pr/src/io/prlog.c 2012-11-04 17:32:26 +0000 ++++ mozilla/nsprpub/pr/src/io/prlog.c 2012-11-04 17:43:20 +0000 +@@ -29,20 +29,9 @@ + #define _PR_UNLOCK_LOG() _PR_LOCK_UNLOCK(_pr_logLock); } + #else + +-#define _PR_LOCK_LOG() \ +-{ \ +- PRIntn _is; \ +- PRThread *_me = _PR_MD_CURRENT_THREAD(); \ +- if (!_PR_IS_NATIVE_THREAD(_me)) \ +- _PR_INTSOFF(_is); \ +- _PR_LOCK_LOCK(_pr_logLock) ++#define _PR_LOCK_LOG() + +-#define _PR_UNLOCK_LOG() \ +- _PR_LOCK_UNLOCK(_pr_logLock); \ +- PR_ASSERT(_me == _PR_MD_CURRENT_THREAD()); \ +- if (!_PR_IS_NATIVE_THREAD(_me)) \ +- _PR_INTSON(_is); \ +-} ++#define _PR_UNLOCK_LOG() + + #endif + + +=== modified file 'mozilla/nsprpub/pr/src/malloc/prmem.c' +--- mozilla/nsprpub/pr/src/malloc/prmem.c 2012-11-04 17:32:26 +0000 ++++ mozilla/nsprpub/pr/src/malloc/prmem.c 2012-11-04 17:45:50 +0000 +@@ -576,24 +576,10 @@ + } \ + } + #else /* IRIX */ +-#define _PR_Lock_Malloc() { \ +- PRIntn _is; \ +- if(PR_TRUE == _PR_malloc_initialised) { \ +- if (_PR_MD_CURRENT_THREAD() && \ +- !_PR_IS_NATIVE_THREAD( \ +- _PR_MD_CURRENT_THREAD())) \ +- _PR_INTSOFF(_is); \ +- _PR_MD_LOCK(&_PR_MD_malloc_crustylock); \ +- } +- +-#define _PR_Unlock_Malloc() if(PR_TRUE == _PR_malloc_initialised) { \ +- _PR_MD_UNLOCK(&_PR_MD_malloc_crustylock); \ +- if (_PR_MD_CURRENT_THREAD() && \ +- !_PR_IS_NATIVE_THREAD( \ +- _PR_MD_CURRENT_THREAD())) \ +- _PR_INTSON(_is); \ +- } \ +- } ++#define _PR_Lock_Malloc() ++ ++#define _PR_Unlock_Malloc() ++ + #endif /* IRIX */ + #endif /* _PR_PTHREADS */ + + +=== modified file 'mozilla/nsprpub/pr/src/md/unix/riscos.c' +--- mozilla/nsprpub/pr/src/md/unix/riscos.c 2012-11-04 17:32:26 +0000 ++++ mozilla/nsprpub/pr/src/md/unix/riscos.c 2012-11-04 17:55:17 +0000 +@@ -44,8 +44,6 @@ + * set the pointers to the stack-pointer and frame-pointer words in the + * context structure; this is for debugging use. + */ +- thread->md.sp = _MD_GET_SP_PTR(thread); +- thread->md.fp = _MD_GET_FP_PTR(thread); + return PR_SUCCESS; + } + + -- cgit v1.2.3