From e16381d8b4c9cb1bc5bf03458d70b47e48cc05f7 Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Fri, 21 Oct 2011 20:26:45 +0000
Subject: [PATCH] Add build files for Spidermonkey and Cryptlib

---
 3rdp/build/Common.gmake | 134 ++++++++++++++++++++++++++++++++++++++++
 3rdp/build/Common.make  |   3 +
 3rdp/build/GNUmakefile  |  48 ++++++++++++++
 3rdp/build/targets.mk   |  10 +++
 4 files changed, 195 insertions(+)
 create mode 100644 3rdp/build/Common.gmake
 create mode 100644 3rdp/build/Common.make
 create mode 100644 3rdp/build/GNUmakefile
 create mode 100644 3rdp/build/targets.mk

diff --git a/3rdp/build/Common.gmake b/3rdp/build/Common.gmake
new file mode 100644
index 0000000000..2353d5edc0
--- /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 0000000000..d1defc96dc
--- /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 0000000000..30645c4fd1
--- /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 0000000000..b5479e17c8
--- /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)
-- 
GitLab