the Fink project is an effort to port
popular Unix programs to Mac OS X
Info4: <<
Package: spidermonkey
Version: 1.7.0
Revision: 2
Epoch: 1
Description: Mozilla JavaScript-C Engine
License: OSI-Approved
Maintainer: Benjamin Reed
Depends: %N-shlibs (= %e:%v-%r)
BuildDepends: <<
fink (>= 0.29.7-1),
nspr.0d,
readline5
<<
CustomMirror: <<
Primary: http://ftp.mozilla.org/pub/mozilla.org/js
en-US: http://ftp.mozilla.org/pub/mozilla.org/js/older-packages
<<
Source: mirror:custom:js-%v.tar.gz
Source-MD5: 5571134c3863686b623ebe4e6b1f6fe6
SourceDirectory: js/src
PatchScript: sed -e 's,@FINKPREFIX@,%p,g' %{PatchFile} | patch -p2
PatchFile: %n.patch
PatchFile-MD5: 1e2756f65f46ed9929d129daefee98cd
UseMaxBuildJobs: true
CompileScript: <<
#!/bin/sh -ev
make -j1 -f Makefile.ref LIBDIR="/lib" SO_SUFFIX="dylib" JS_THREADSAFE=1 JS_HAS_FILE_OBJECT=1
ranlib Darwin_OPT.OBJ/libjs.a
<<
InstallScript: <<
#!/bin/sh -ev
make -j1 -f Makefile.ref LIBDIR="/lib" SO_SUFFIX="dylib" JS_THREADSAFE=1 install DESTDIR="%d"
mv %i/lib/libjs.dylib %i/lib/libjs.1.0.0.dylib
ln -sf libjs.1.0.0.dylib %i/lib/libjs.1.dylib
ln -sf libjs.1.dylib %i/lib/libjs.dylib
install_name_tool -id %p/lib/libjs.1.dylib %i/lib/libjs.1.0.0.dylib
<<
DocFiles: *.html
SplitOff: <<
Package: %N-shlibs
Depends: <<
nspr.0d-shlibs,
readline5-shlibs
<<
Files: lib/libjs.*.dylib
Shlibs: %p/lib/libjs.1.dylib 1.0.0 %n (>= 1.0-1)
<<
SplitOff2: <<
Package: %N-dev
Depends: %N-shlibs (= %e:%v-%r)
BuildDependsOnly: true
Files: bin/jscpucfg include lib
<<
Homepage: http://www.mozilla.org/js/spidermonkey/
DescPackaging: Thanks to the MacPorts package for patches. :)
<<
diff -Nurd js/src/Makefile.ref js-patched/src/Makefile.ref
--- js/src/Makefile.ref 2006-07-26 15:16:47.000000000 -0400
+++ js-patched/src/Makefile.ref 2011-05-11 12:41:56.000000000 -0400
@@ -63,11 +63,11 @@
ifdef JS_THREADSAFE
DEFINES += -DJS_THREADSAFE
-INCLUDES += -I$(DIST)/include/nspr
+INCLUDES += -I@FINKPREFIX@/include/nspr
ifdef USE_MSVC
OTHER_LIBS += $(DIST)/lib/libnspr$(NSPR_LIBSUFFIX).lib
else
-OTHER_LIBS += -L$(DIST)/lib -lnspr$(NSPR_LIBSUFFIX)
+OTHER_LIBS += -L@FINKPREFIX@/lib/nspr -lnspr$(NSPR_LIBSUFFIX)
endif
endif
@@ -134,7 +134,7 @@
ifdef JS_READLINE
# For those platforms with the readline library installed.
DEFINES += -DEDITLINE
-PROG_LIBS += -lreadline -ltermcap
+PROG_LIBS += -lreadline
else
ifdef JS_EDITLINE
# Use the editline library, built locally.
@@ -188,6 +188,8 @@
jsstr.h \
jsxdrapi.h \
jsxml.h \
+ jsutil.h \
+ jsprf.h \
$(NULL)
API_HFILES = \
@@ -373,3 +375,16 @@
SUFFIXES: .i
%.i: %.c
$(CC) -C -E $(CFLAGS) $< > $*.i
+
+DESTDIR :=
+PREFIX := @FINKPREFIX@
+BINDIR := $(PREFIX)/bin
+MY_LIBDIR := $(PREFIX)/$(LIBDIR)
+INCLUDEDIR := $(PREFIX)/include/js
+INSTALL := install
+install:
+ $(INSTALL) -m 755 -d $(DESTDIR)$(INCLUDEDIR) $(DESTDIR)$(MY_LIBDIR) $(DESTDIR)$(BINDIR)
+ $(INSTALL) -m 755 $(SHARED_LIBRARY) $(DESTDIR)$(MY_LIBDIR)
+ $(INSTALL) -m 644 $(LIBRARY) $(DESTDIR)$(MY_LIBDIR)
+ $(INSTALL) -m 755 $(OBJDIR)/js $(OBJDIR)/jscpucfg $(DESTDIR)$(BINDIR)
+ $(INSTALL) -m 644 $(HFILES) $(DESTDIR)$(INCLUDEDIR)
diff -Nurd js/src/config/Darwin.mk js-patched/src/config/Darwin.mk
--- js/src/config/Darwin.mk 2007-02-05 11:24:49.000000000 -0500
+++ js-patched/src/config/Darwin.mk 2011-05-11 12:45:41.000000000 -0400
@@ -43,13 +43,13 @@
# Just ripped from Linux config
#
-CC = cc
+CC = gcc
CCC = g++
-CFLAGS += -Wall -Wno-format
-OS_CFLAGS = -DXP_UNIX -DSVR4 -DSYSV -D_BSD_SOURCE -DPOSIX_SOURCE -DDARWIN
+CFLAGS += -Wall -Wno-format -no-cpp-precomp -fno-common -pipe
+OS_CFLAGS = -DJS_THREADSAFE -DXP_UNIX -DSVR4 -DSYSV -D_BSD_SOURCE -DPOSIX_SOURCE -DDARWIN -DJS_C_STRINGS_ARE_UTF8
RANLIB = ranlib
-MKSHLIB = $(CC) -dynamiclib $(XMKSHLIBOPTS) -framework System
+MKSHLIB = $(CC) -compatibility_version 1.0 -current_version 1.0 -framework System -dynamiclib $(XMKSHLIBOPTS) -lm -lplds4 -lplc4 -lnspr4 $(LDFLAGS)
SO_SUFFIX = dylib
@@ -59,7 +59,6 @@
CPU_ARCH = $(shell uname -m)
ifeq (86,$(findstring 86,$(CPU_ARCH)))
CPU_ARCH = x86
-OS_CFLAGS+= -DX86_LINUX
endif
GFX_ARCH = x
@@ -67,14 +66,6 @@
ASFLAGS += -x assembler-with-cpp
-ifeq ($(CPU_ARCH),alpha)
-
-# Ask the C compiler on alpha linux to let us work with denormalized
-# double values, which are required by the ECMA spec.
-
-OS_CFLAGS += -mieee
-endif
-
# Use the editline library to provide line-editing support.
JS_EDITLINE = 1
diff -Nurd js/src/config/Linux_All.mk js-patched/src/config/Linux_All.mk
--- js/src/config/Linux_All.mk 2005-05-10 15:53:44.000000000 -0400
+++ js-patched/src/config/Linux_All.mk 2011-05-11 12:41:43.000000000 -0400
@@ -41,37 +41,15 @@
# Config for all versions of Linux
#
-CC = gcc
-CCC = g++
CFLAGS += -Wall -Wno-format
OS_CFLAGS = -DXP_UNIX -DSVR4 -DSYSV -D_BSD_SOURCE -DPOSIX_SOURCE -DHAVE_LOCALTIME_R
RANLIB = echo
-MKSHLIB = $(LD) -shared $(XMKSHLIBOPTS)
+MKSHLIB = $(LD) -shared $(XMKSHLIBOPTS) -soname $(notdir $@)
#.c.o:
# $(CC) -c -MD $*.d $(CFLAGS) $<
-CPU_ARCH = $(shell uname -m)
-# don't filter in x86-64 architecture
-ifneq (x86_64,$(CPU_ARCH))
-ifeq (86,$(findstring 86,$(CPU_ARCH)))
-CPU_ARCH = x86
-OS_CFLAGS+= -DX86_LINUX
-
-ifeq (gcc, $(CC))
-# if using gcc on x86, check version for opt bug
-# (http://bugzilla.mozilla.org/show_bug.cgi?id=24892)
-GCC_VERSION := $(shell gcc -v 2>&1 | grep version | awk '{ print $$3 }')
-GCC_LIST:=$(sort 2.91.66 $(GCC_VERSION) )
-
-ifeq (2.91.66, $(firstword $(GCC_LIST)))
-CFLAGS+= -DGCC_OPT_BUG
-endif
-endif
-endif
-endif
-
GFX_ARCH = x
OS_LIBS = -lm -lc
@@ -88,16 +66,6 @@
endif
# Use the editline library to provide line-editing support.
-JS_EDITLINE = 1
+JS_READLINE = 1
-ifeq ($(CPU_ARCH),x86_64)
-# Use VA_COPY() standard macro on x86-64
-# FIXME: better use it everywhere
OS_CFLAGS += -DHAVE_VA_COPY -DVA_COPY=va_copy
-endif
-
-ifeq ($(CPU_ARCH),x86_64)
-# We need PIC code for shared libraries
-# FIXME: better patch rules.mk & fdlibm/Makefile*
-OS_CFLAGS += -DPIC -fPIC
-endif
diff -Nurd js/src/config.mk js-patched/src/config.mk
--- js/src/config.mk 2006-07-27 17:00:57.000000000 -0400
+++ js-patched/src/config.mk 2011-05-11 12:41:43.000000000 -0400
@@ -116,6 +116,8 @@
CP = cp
endif
+BUILD_OPT := 1
+
ifdef BUILD_OPT
OPTIMIZER = -O
DEFINES += -UDEBUG -DNDEBUG -UDEBUG_$(USER)
diff -Nurd js/src/fdlibm/Makefile.ref js-patched/src/fdlibm/Makefile.ref
--- js/src/fdlibm/Makefile.ref 2003-11-14 19:11:04.000000000 -0500
+++ js-patched/src/fdlibm/Makefile.ref 2011-05-11 12:41:43.000000000 -0400
@@ -151,7 +151,7 @@
$(OBJDIR)/%.o: %.c
@$(MAKE_OBJDIR)
- $(CC) -o $@ -c $(CFLAGS) $*.c
+ $(CC) -o $@ -c $(CFLAGS) $*.c -fPIC
$(OBJDIR)/%.o: %.s
@$(MAKE_OBJDIR)
diff -Nurd js/src/jsprf.c js-patched/src/jsprf.c
--- js/src/jsprf.c 2006-07-06 22:12:02.000000000 -0400
+++ js-patched/src/jsprf.c 2011-05-11 12:41:43.000000000 -0400
@@ -58,6 +58,8 @@
*/
#ifdef HAVE_VA_COPY
#define VARARGS_ASSIGN(foo, bar) VA_COPY(foo,bar)
+#elif defined(va_copy)
+#define VARARGS_ASSIGN(foo, bar) va_copy(foo,bar)
#elif defined(HAVE_VA_LIST_AS_ARRAY)
#define VARARGS_ASSIGN(foo, bar) foo[0] = bar[0]
#else
diff -Nurd js/src/rules.mk js-patched/src/rules.mk
--- js/src/rules.mk 2006-07-06 22:12:02.000000000 -0400
+++ js-patched/src/rules.mk 2011-05-11 12:41:43.000000000 -0400
@@ -82,6 +82,10 @@
@$(MAKE_OBJDIR)
$(CC) -o $@ -c $(CFLAGS) $*.c
+$(OBJDIR)/%.lo: %.c
+ @$(MAKE_OBJDIR)
+ $(CC) -o $@ -c $(CFLAGS) $*.c -fPIC
+
$(OBJDIR)/%.o: %.s
@$(MAKE_OBJDIR)
$(AS) -o $@ $(ASFLAGS) $*.s
@@ -111,11 +115,12 @@
/implib:"$(OBJDIR)/$(@F:.dll=.lib)" $^
else
$(LIBRARY): $(LIB_OBJS)
- $(AR) rv $@ $?
+ $(AR) cr $@ $?
$(RANLIB) $@
-$(SHARED_LIBRARY): $(LIB_OBJS)
- $(MKSHLIB) -o $@ $(LIB_OBJS) $(LDFLAGS) $(OTHER_LIBS)
+SHARED_LIB_OBJS := $(LIB_OBJS:.o=.lo)
+$(SHARED_LIBRARY): $(SHARED_LIB_OBJS)
+ $(MKSHLIB) -o $@ $(SHARED_LIB_OBJS) $(LDFLAGS) $(OTHER_LIBS) -install_name $(PREFIX)/lib/$(notdir $@)
endif
endif