diff --git a/3rdp/build/Common.gmake b/3rdp/build/Common.gmake
new file mode 100644
index 0000000000000000000000000000000000000000..2353d5edc02dffe55afeb71eeea86836ff24e4fd
--- /dev/null
+++ b/3rdp/build/Common.gmake
@@ -0,0 +1,134 @@
+##############
+# NSPR Stuff #
+##############
+
+ifeq ($(shell nspr-config --version > /dev/null 2>&1 && echo YES),YES)
+ NSPRDIR ?= $(shell nspr-config --libdir)
+ NSPRINCLUDE ?= $(shell nspr-config --includedir)
+endif
+
+ifeq ($(os),sunos)
+ ifeq ($(shell test -f /usr/sfw/lib/mozilla/libnspr4.so && echo "yes"),yes)
+  NSPRDIR ?= /usr/sfw/lib/mozilla
+  ifeq ($(shell test -d /usr/sfw/include/mozilla/nspr && echo "yes"),yes)
+   NSPRINCLUDE ?= /usr/sfw/include/mozilla/nspr
+  endif
+ endif
+endif
+
+ifdef NSPRINCLUDE
+ NSPR_CFLAGS += -I$(NSPRINCLUDE)
+else
+ # Use local NSPR first...
+ NSPR_CFLAGS += -I/usr/local/include -I$(SRC_ROOT)$(DIRSEP)..$(DIRSEP)include$(DIRSEP)mozilla$(DIRSEP)nspr
+endif
+
+ifndef NSPRDIR
+ NSPRDIR := $(SRC_ROOT)$(DIRSEP)..$(DIRSEP)lib$(DIRSEP)mozilla$(DIRSEP)nspr$(DIRSEP)$(machine).$(BUILD)
+endif
+
+#The following is needed for nspr support on Linux
+ifeq ($(os),linux)
+ NSPR_LIBS +=	-ldl
+endif
+
+NSPR_LDFLAGS	+=	-L/usr/local/lib -L$(NSPRDIR) -lnspr4
+
+
+################
+# Common stuff #
+################
+3RDPODIR :=	$(3RDP_ROOT)/$(CCPRE).$(machine).$(BUILDPATH)
+3RDPSRCDIR :=	$(3RDP_ROOT)/src
+3RDPDISTDIR :=	$(3RDP_ROOT)/dist
+3RDPBUILDDIR :=	$(3RDP_ROOT)/build
+JS_SRC :=	$(3RDP_ROOT)/src/mozjs
+JS_IDIR :=	$(3RDPODIR)/mozjs
+CRYPT_SRC :=	$(3RDP_ROOT)/src/cl
+CRYPT_IDIR :=	$(3RDPODIR)/cl
+
+############
+# JS Stuff #
+############
+
+JS_CFLAGS += -DJAVASCRIPT $(NSPR_CFLAGS)
+JS_LDFLAGS += $(NSPR_LDFLAGS)
+JS_LIBS += $(NSPR_LIBS)
+
+ifdef JSLIB
+ JS_NOBUILD:=1
+else
+ ifdef JSINCLUDE
+  JS_NOBUILD:=1
+ else
+  ifdef JSLIBDIR
+   JS_NOBUILD:=1
+  endif
+ endif
+endif
+
+ifdef JS_NOBUILD
+ ##############################
+ # JS Specified on build line #
+ ##############################
+ ifeq ($(os),sunos)
+  ifeq ($(shell test -f /usr/sfw/lib/mozilla/libmozjs185.so && echo "yes"),yes)
+   JSLIBDIR ?= /usr/sfw/lib/mozilla
+   JSLIB ?= mozjs185
+  endif
+ endif
+
+ ifndef JSLIB
+  JSLIB	:=	mozjs185
+ endif
+ JS_DEPS :=
+else
+ JSINCLUDE := $(JS_IDIR)$(DIRSEP)include/js
+ JSLIBDIR := $(JS_IDIR)$(DIRSEP)lib
+ JSLIB := mozjs185
+ JS_DEPS := js
+endif
+ 
+# Put it all together...
+
+ifdef JSINCLUDE
+ JS_CFLAGS += -I$(JSINCLUDE)
+endif
+ifdef JSLIBDIR
+ JS_LDFLAGS += -L$(JSLIBDIR)
+endif
+JS_LIBS += -l$(JSLIB)
+
+##################
+# Cryptlib Stuff #
+##################
+
+ifdef CRYPTLIBINCLUDE
+ CRYPTLIB_NOBUILD:=1
+else
+ ifdef CRYPTLIBDIR
+  CRYPTLIB_NOBUILD:=1
+ endif
+endif
+
+ifdef CRYPTLIB_NOBUILD
+ ####################################
+ # Cryptlib specified on build line #
+ ####################################
+ CRYPT_DEPS :=
+#else
+ CRYPTLIBINCLUDE := $(CRYPT_IDIR)
+ CRYPTLIBDIR := $(CRYPT_IDIR)
+ CRYPT_DEPS := cl
+endif
+
+# Put it all together...
+
+ifdef CRYPTLIBINCLUDE
+ CRYPT_CFLAGS += -I$(CRYPTLIBINCLUDE)
+endif
+ifdef CRYPTLIBDIR
+ CRYPT_LDFLAGS += -L$(CRYPTLIBDIR)
+endif
+CRYPT_LIBS += -lcl
+
diff --git a/3rdp/build/Common.make b/3rdp/build/Common.make
new file mode 100644
index 0000000000000000000000000000000000000000..d1defc96dc7fa5f9ce51b4a832a1b1557d97fea7
--- /dev/null
+++ b/3rdp/build/Common.make
@@ -0,0 +1,3 @@
+JS_LIB =       $(3RDPODIR)$(DIRSEP)mozjs$(DIRSEP)lib$(DIRSEP)$(LIBPREFIX)mozjs185$(SOFILE)
+CRYPT_LIB =    $(3RDPODIR)$(DIRSEP)cl$(DIRSEP)$(LIBPREFIX)cl$(LIBFILE)
+
diff --git a/3rdp/build/GNUmakefile b/3rdp/build/GNUmakefile
new file mode 100644
index 0000000000000000000000000000000000000000..30645c4fd1c85116d90235ed20df2ca4a72e17ba
--- /dev/null
+++ b/3rdp/build/GNUmakefile
@@ -0,0 +1,48 @@
+# $Id$
+
+SRC_ROOT = ../../src
+# Cross platform/compiler definitions
+include $(SRC_ROOT)/build/Common.gmake	# defines clean and output directory rules
+
+JS_CONFIGURE_ARGS += --with-system-nspr --disable-tests --enable-threadsafe --prefix=$(shell echo `pwd`$(DIRSEP)$(JS_IDIR))
+ifdef DEBUG
+ JS_CONFIGURE_ARGS += --enable-debug-symbols --disable-optimize
+else
+ JS_CONFIGURE_ARGS += --enable-optimize=-O3
+endif
+
+###############
+# Directories #
+###############
+$(3RDPODIR):
+	$(QUIET)$(IFNOTEXIST) mkdir $(3RDPODIR)
+
+$(3RDPSRCDIR):
+	$(QUIET)$(IFNOTEXIST) mkdir $(3RDPSRCDIR)
+
+$(JS_SRC): | $(3RDPSRCDIR)
+	$(QUIET)$(IFNOTEXIST) mkdir $(JS_SRC)
+
+$(JS_IDIR): | $(3RDPODIR)
+	$(QUIET)$(IFNOTEXIST) mkdir $(JS_IDIR)
+
+$(JSLIB_BUILD): $(3RDP_ROOT)$(DIRSEP)dist/libmozjs.tgz | $(JS_SRC) $(JS_IDIR)
+	@echo Creating $@ ...
+	$(QUIET)tar -xzC $(JS_SRC) -f $(3RDPDISTDIR)$(DIRSEP)libmozjs.tgz
+	-$(QUIET)cd $(JS_SRC)$(DIRSEP)js-1.8.5$(DIRSEP)js$(DIRSEP)src && autoconf-2.13
+	$(QUIET)cd $(JS_SRC)$(DIRSEP)js-1.8.5$(DIRSEP)js$(DIRSEP)src && ./configure $(JS_CONFIGURE_ARGS)
+	$(QUIET)$(MAKE) -C $(JS_SRC)$(DIRSEP)js-1.8.5$(DIRSEP)js$(DIRSEP)src
+	$(QUIET)$(MAKE) -C $(JS_SRC)$(DIRSEP)js-1.8.5$(DIRSEP)js$(DIRSEP)src install
+
+$(CRYPT_SRC): | $(3RDPSRCDIR)
+	$(QUIET)$(IFNOTEXIST) mkdir $(CRYPT_SRC)
+
+$(CRYPT_IDIR): | $(3RDPODIR)
+	$(QUIET)$(IFNOTEXIST) mkdir $(CRYPT_IDIR)
+
+$(CRYPTLIB_BUILD): $(3RDP_ROOT)$(DIRSEP)dist/cryptlib.zip | $(CRYPT_SRC) $(CRYPT_IDIR)
+	@echo Creating $@ ...
+	$(QUIET)unzip -oua $(3RDPDISTDIR)$(DIRSEP)cryptlib.zip -d $(CRYPT_SRC)
+	$(QUIET)make -C $(CRYPT_SRC) default
+	$(QUIET)cp $(CRYPT_SRC)$(DIRSEP)libcl.a $(CRYPT_IDIR)
+	$(QUIET)cp $(CRYPT_SRC)$(DIRSEP)cryptlib.h $(CRYPT_IDIR)
diff --git a/3rdp/build/targets.mk b/3rdp/build/targets.mk
new file mode 100644
index 0000000000000000000000000000000000000000..b5479e17c82ed80dff21ef30a0d492e0c2ac98e4
--- /dev/null
+++ b/3rdp/build/targets.mk
@@ -0,0 +1,10 @@
+JSLIB_BUILD	=	..$(DIRSEP)build$(DIRSEP)$(JS_LIB)
+CRYPTLIB_BUILD	=	..$(DIRSEP)build$(DIRSEP)$(CRYPT_LIB)
+
+all: lib
+
+jslib: $(JSLIB_BUILD)
+
+cryptlib: $(CRYPTLIB_BUILD)
+
+lib: $(JSLIB_BUILD) $(CRYPTLIB_BUILD)