aboutsummaryrefslogtreecommitdiff
path: root/lang/gcl
diff options
context:
space:
mode:
authorJustin M. Seger <jseger@FreeBSD.org>1999-11-25 18:34:01 +0000
committerJustin M. Seger <jseger@FreeBSD.org>1999-11-25 18:34:01 +0000
commita1d94b37d5e4eae5278ec6ab5579acaee1e3b234 (patch)
tree0ff86db0f53148098befde196e8bde7237e2baab /lang/gcl
parent75550d0920584f86e4a0607419803e080dff3ecc (diff)
downloadports-a1d94b37d5e4eae5278ec6ab5579acaee1e3b234.tar.gz
ports-a1d94b37d5e4eae5278ec6ab5579acaee1e3b234.zip
Notes
Diffstat (limited to 'lang/gcl')
-rw-r--r--lang/gcl/Makefile21
-rw-r--r--lang/gcl/distinfo2
-rw-r--r--lang/gcl/files/patch-ab50
-rw-r--r--lang/gcl/files/patch-ac128
-rw-r--r--lang/gcl/files/patch-ad28
-rw-r--r--lang/gcl/files/patch-ah22
-rw-r--r--lang/gcl/files/patch-ai120
-rw-r--r--lang/gcl/files/patch-ak11
-rw-r--r--lang/gcl/files/patch-al32
-rw-r--r--lang/gcl/pkg-plist45
10 files changed, 311 insertions, 148 deletions
diff --git a/lang/gcl/Makefile b/lang/gcl/Makefile
index cb71d3ad5254..964143939fd5 100644
--- a/lang/gcl/Makefile
+++ b/lang/gcl/Makefile
@@ -1,23 +1,26 @@
# New ports collection makefile for: gcl
-# Version required: 2.2.2
-# Date created: Wed Feb 8 01:49:11 1995
+# Version required: 2.3
+# Date created: Feb 8 1995
# Whom: hsu
#
# $FreeBSD$
#
-DISTNAME= gcl-2.2.2
-CATEGORIES= lang
-MASTER_SITES= ftp://ftp.ma.utexas.edu/pub/gcl/ \
- ${MASTER_SITE_GNU}
-MASTER_SITE_SUBDIR= gcl
+DISTNAME= gcl-2.3
+CATEGORIES= lang tk82
+MASTER_SITES= ftp://ftp.ma.utexas.edu/pub/gcl/
+EXTRACT_SUFX= .tgz
-MAINTAINER= jseger@freebsd.org
+MAINTAINER= jseger@FreeBSD.org
-BROKEN_ELF= yes
+LIB_DEPENDS= tk82.1:${PORTSDIR}/x11-toolkits/tk82
MAKEFILE= makefile
+GNU_CONFIGURE= yes
+
+PLIST_SUB= GCL_VER=2.3
+
pre-build:
${RM} -rf ${WRKSRC}/info/gcl-si.info*
diff --git a/lang/gcl/distinfo b/lang/gcl/distinfo
index 5c2b3bd81a4b..a1c23d5092a3 100644
--- a/lang/gcl/distinfo
+++ b/lang/gcl/distinfo
@@ -1 +1 @@
-MD5 (gcl-2.2.2.tar.gz) = 89e418c1ac255f30fe4ca8ba8743daf1
+MD5 (gcl-2.3.tgz) = c4e0ca62a33fd2801069df80a78285ac
diff --git a/lang/gcl/files/patch-ab b/lang/gcl/files/patch-ab
index 698e46e96778..4d1a9e132ca6 100644
--- a/lang/gcl/files/patch-ab
+++ b/lang/gcl/files/patch-ab
@@ -1,36 +1,26 @@
---- makefile.orig Sat Mar 22 16:47:17 1997
-+++ makefile Sun Oct 5 14:17:32 1997
-@@ -120,7 +120,7 @@
- merge:
- ${CC} -o merge merge.c
-
--LISP_LIB=cmpnew/collectfn.o lsp/gprof.lsp lsp/info.o lsp/profile.lsp gcl-tk/tkl.o gcl-tk/tinfo.o gcl-tk/demos/*.lsp gcl-tk/demos/*.lisp gcl-tk/demos/*.o
-+LISP_LIB=cmpnew/collectfn.o lsp/gprof.lsp lsp/info.o lsp/profile.lsp
-
- install-command:
- rm -f ${PREFIX_DIR}/bin/gcl
-@@ -141,21 +141,13 @@
- -if [ -d "${PREFIX_DIR}/lib" ] ;then true; else mkdir ${PREFIX_DIR}/lib ; fi
- -if [ -d "${PREFIX_DIR}/bin" ] ;then true; else mkdir ${PREFIX_DIR}/bin ; fi
+--- makefile.orig Tue Nov 9 17:03:29 1999
++++ makefile Mon Nov 15 17:14:36 1999
+@@ -175,21 +175,22 @@
+ -if [ -d "${prefix}/lib" ] ;then true; else mkdir ${prefix}/lib ; fi
+ -if [ -d "${prefix}/bin" ] ;then true; else mkdir ${prefix}/bin ; fi
-if [ -d "${INSTALL_LIB_DIR}" ] ; then true; else mkdir ${INSTALL_LIB_DIR} ;fi
-+ -if [ -d "${PREFIX_DIR}/info" ] ; then true; else mkdir ${PREFIX_DIR}/info; fi
- make install-command "INSTALL_LIB_DIR=${INSTALL_LIB_DIR}" "PREFIX_DIR=${PREFIX_DIR}"
- rm -f ${PREFIX_DIR}/bin/gcl.exe
++ -if [ -d "${prefix}/info" ];then true; else mkdir ${prefix}/info ; fi
+ make install-command "INSTALL_LIB_DIR=${INSTALL_LIB_DIR}" "prefix=${prefix}"
+ rm -f ${prefix}/bin/gcl.exe
- tar cvf - unixport/saved_gcl info/*info* doc/*.el ${LISP_LIB} \
-- gcl-tk/gcl.tcl gcl-tk/gcltkaux | (cd ${INSTALL_LIB_DIR} ;tar xvf -)
-+ tar cvf - unixport/saved_gcl ${LISP_LIB} \
-+ | (cd ${INSTALL_LIB_DIR} ;tar xvf -)
++ tar cvf - unixport/saved_gcl doc/*.el ${LISP_LIB} \
+ gcl-tk/gcl.tcl gcl-tk/gcltkaux | (cd ${INSTALL_LIB_DIR} ;tar xvf -)
ln ${SYMB} ${INSTALL_LIB_DIR}/unixport/saved_gcl \
- ${PREFIX_DIR}/bin/gcl.exe
-- -cat gcl-tk/gcltksrv | \
-- sed -e "s:GCL_TK_DIR=.*:GCL_TK_DIR=${INSTALL_LIB_DIR}/gcl-tk:g" \
-- -e "s:TK_LIBRARY=.*:TK_LIBRARY=${TK_LIBRARY}:g" > \
-- ${INSTALL_LIB_DIR}/gcl-tk/gcltksrv
-- -if [ "${TK_CONFIG_PREFIX}" != "unknown" ] ; then \
-- chmod a+x ${INSTALL_LIB_DIR}/gcl-tk/gcltksrv ; fi
-- -if [ "${TK_CONFIG_PREFIX}" != "unknown" ] ; then \
-- (cd ${INSTALL_LIB_DIR}/gcl-tk/demos ; \
-- echo '(load "../tkl.o")(TK::GET-AUTOLOADS (directory "*.lisp"))' | ${PREFIX_DIR}/bin/gcl) ; fi
+ ${prefix}/bin/gcl.exe
+ -cat gcl-tk/gcltksrv | \
+ sed -e "s:GCL_TK_DIR=.*:GCL_TK_DIR=${INSTALL_LIB_DIR}/gcl-tk:g" \
+ -e "s:TK_LIBRARY=.*:TK_LIBRARY=${TK_LIBRARY}:g" > \
+ ${INSTALL_LIB_DIR}/gcl-tk/gcltksrv
+ -if [ "${TK_CONFIG_PREFIX}" != "unknown" ] ; then \
+ chmod a+x ${INSTALL_LIB_DIR}/gcl-tk/gcltksrv ; fi
+ -if [ "${TK_CONFIG_PREFIX}" != "unknown" ] ; then \
+ (cd ${INSTALL_LIB_DIR}/gcl-tk/demos ; \
+ echo '(load "../tkl.o")(TK::GET-AUTOLOADS (directory "*.lisp"))' | ${prefix}/bin/gcl) ; fi
(cd info ; make ; make install)
clean:
diff --git a/lang/gcl/files/patch-ac b/lang/gcl/files/patch-ac
index 299cdbe5924c..2a2c2a409dd4 100644
--- a/lang/gcl/files/patch-ac
+++ b/lang/gcl/files/patch-ac
@@ -1,89 +1,41 @@
---- info/makefile.orig Mon Dec 9 01:30:25 1996
-+++ info/makefile Mon Oct 13 10:56:17 1997
-@@ -3,53 +3,46 @@
-
- INFO_DIR=/usr/local/lib/info
- # begin makedefs
--GCLDIR=/home/wfs/gcl-2.2
-+GCLDIR=/tmp/FreeBSD/gcl/work/gcl-2.2.2
+--- info/makefile.orig Wed Nov 10 18:47:19 1999
++++ info/makefile Tue Nov 16 11:16:48 1999
+@@ -16,10 +16,11 @@
+ # root for the installation, eg /usr/local
+ # This would cause make install to create /usr/local/bin/gcl and
+ # /usr/local/lib/gcl-2-??/* with some basic files.
+-prefix=/usr/local
++prefix=${PREFIX}
++prefix?=/usr/local
+
+ # where to place the info files
+-INFO_DIR=/usr/local/info/
++INFO_DIR=${prefix}/info/
+
+ # where to put emacs lisp files.
+ EMACS_SITE_LISP=/usr/share/emacs/20.3/site-lisp
+@@ -49,9 +50,9 @@
+
+
+
+-GCLDIR=/home/wfs/gcl-2.3
++GCLDIR=/tmp/FreeBSD/gcl-2.3
SHELL=/bin/sh
-MACHINE=386-linux
--TK_CONFIG_PREFIX="/usr/local/lib"
--TCL_CONFIG_PREFIX="/usr/local/lib"
--TK_INCLUDE="-I/usr/local/include"
--TK_VERSION=4.2
--TCL_VERSION=7.6
--TK_LIB_SPEC=-L/usr/local/lib -ltk4.2
--TK_LIBRARY=/usr/local/lib/tk4.2
--TCL_LIBRARY=/usr/local/lib/tcl7.6
--TK_BUILD_LIB_SPEC=-L/usr/local.linux14/src/tk4.2/unix -ltk4.2
--TK_XLIBSW=-L/usr/X11R6/lib -lX11
--TK_XINCLUDES=-I/usr/X11R6/include
--TCL_LIB_SPEC=-L/usr/local/lib -ltcl7.6
--TCL_DL_LIBS=-ldl
--TCL_LIBS=-ldl -lieee -lm
--HAVE_X11=-DHAVE_X11
--
--# Machine dependent makefile definitions for intel 386,486 running linux
--
--LBINDIR=/usr/local/bin
--
--OFLAG = -O
--LIBS = -lm
--
--ODIR_DEBUG= -O4
+MACHINE=FreeBSD
-+#could not find tkConfig.sh so using:
-+TK_CONFIG_PREFIX="unknown"
-+#could not find tclConfig.sh so using:
-+TCL_CONFIG_PREFIX="unknown"
-+#could not find dir so using:
-+INFO_DIR="unknown"
-+TK_CONFIG_PREFIX=unknown
-+#could not find X11/Xos.h so using:
-+TK_XINCLUDES="-Iunknown"
-+# Machine dependent makefile definitions for intel 386,486 running 386bsd
-+# Ported to FreeBSD 2.0 by Jeffrey Hsu (hsu@freebsd.org).
-+# Hacked September-93 by Paul F. Werkowski for 386BSD 0.1 + Patchkit 0.2.4
-+
-+LBINDIR=${PREFIX}/bin
-+
-+OFLAG = -O2 -pipe
-+LIBS = -lm
-+ODIR_DEBUG=
-+NULLFILE=../h/twelve_null
-
- # This CC string will be used for compilation of the system,
- # and also in the compiler::*cc* variable for later compilation of
- # lisp files.
--# (the -pipe is just since our file system is slow..)
--CC = gcc -pipe -fwritable-strings -DVOL=volatile -I$(GCLDIR)/o -fsigned-char
--LDCC=${CC} -static
--# note for linuxaout on an elf machine add -b i486-linuxaout
--# CC = gcc -pipe -fwritable-strings -DVOL=volatile -I$(GCLDIR)/o -fsigned-char -b i486-linuxaout
-+
-+CC = gcc -pipe -O -fwritable-strings -fomit-frame-pointer -DVOL=volatile -I$(GCLDIR)/o -I${PREFIX}/lib/gcl-2.2.2/h -fsigned-char
-+
-+LDCC = $(CC) -static
-+
-+# Use the mp.s file on 68k machine
-+MPFILES= $(MPDIR)/mpi-386.o $(MPDIR)/libmport.a
-+GNULIB1=/usr/lib/libgcc.a
-
- # Enable the fastloading mechanism which does not use ld -A
- # requires c/rel_.. machine dependent code.
--
- RSYM = rsym
- SFASL = $(ODIR)/sfasl.o
-
--
--MPFILES= $(MPDIR)/mpi-386d.o $(MPDIR)/libmport.a
--
--
- # When using SFASL it is good to have (si::build-symbol-table)
- INITFORM=(si::build-symbol-table)
-
-@@ -67,8 +60,8 @@
+
+ # notes for redhat 6.0
+ # the configure should select the compiler GCC=/usr/bin/i386-glibc20-linux-gcc
+@@ -62,7 +63,7 @@
+
+ # Machine dependent makefile definitions for intel 386,486 running linux
+
+-LBINDIR=/usr/local/bin
++LBINDIR=${prefix}/bin
+
+ OFLAG = -O
+ LIBS = -lm
+@@ -109,8 +110,8 @@
.texi.info:
rm -f $*.*gz
@@ -94,7 +46,7 @@
GCL_SI= number.texi sequence.texi character.texi list.texi io.texi \
form.texi compile.texi symbol.texi system.texi structure.texi \
-@@ -82,14 +75,14 @@
+@@ -124,14 +125,6 @@
install:
@@ -106,14 +58,6 @@
- -if fgrep gcl.info ${INFO_DIR}/dir > /dev/null ; then true ; else \
- echo "* GCL Ansi Doc: (gcl.info). Ansi Common Lisp Specification." >> ${INFO_DIR}/dir ; fi
- -if [ -d "${INFO_DIR}" ] ; then cp *.info* ${INFO_DIR} ; fi
-+# if [ -d "${INFO_DIR}" ] ; then true ; else exit 0; fi
-+# -if fgrep gcl-si ${INFO_DIR}/dir > /dev/null ; then true ; else \
-+# echo "* GCL Doc: (gcl-si.info). GNU Common Lisp specific Documentation." >> ${INFO_DIR}/dir ; fi
-+# -if fgrep gcl-tk ${INFO_DIR}/dir > /dev/null ; then true ; else \
-+# echo "* GCL TK Doc: (gcl-tk.info). TK window GCL interface." >> ${INFO_DIR}/dir ; fi
-+# -if fgrep gcl.info ${INFO_DIR}/dir > /dev/null ; then true ; else \
-+# echo "* GCL Ansi Doc: (gcl.info). Ansi Common Lisp Specification." >> ${INFO_DIR}/dir ; fi
-+# -if [ -d "${INFO_DIR}" ] ; then cp *.info* ${INFO_DIR} ; fi
diff --git a/lang/gcl/files/patch-ad b/lang/gcl/files/patch-ad
index 155a24f5d651..49afc9b069f6 100644
--- a/lang/gcl/files/patch-ad
+++ b/lang/gcl/files/patch-ad
@@ -1,20 +1,34 @@
---- h/FreeBSD.defs.orig Sun Oct 5 09:52:52 1997
-+++ h/FreeBSD.defs Sun Oct 5 09:53:46 1997
-@@ -2,7 +2,7 @@
+--- h/FreeBSD.defs.orig Wed May 3 10:02:24 1995
++++ h/FreeBSD.defs Thu Nov 25 11:59:14 1999
+@@ -1,11 +1,12 @@
+ # Machine dependent makefile definitions for intel 386,486 running 386bsd
# Ported to FreeBSD 2.0 by Jeffrey Hsu (hsu@freebsd.org).
# Hacked September-93 by Paul F. Werkowski for 386BSD 0.1 + Patchkit 0.2.4
++# Adapted for gcl-2.3/FreeBSD 4.0 by Justin Seger (jseger@FreeBSD.org)
-LBINDIR=/usr/local/bin
+LBINDIR=${PREFIX}/bin
- OFLAG = -O2 -pipe
- LIBS = -lm
-@@ -13,7 +13,7 @@
+-OFLAG = -O2 -pipe
+-LIBS = -lm
++OFLAG = -O
++LIBS = -lm -lcompat
+ ODIR_DEBUG=
+ NULLFILE=../h/twelve_null
+
+@@ -13,12 +14,13 @@
# and also in the compiler::*cc* variable for later compilation of
# lisp files.
-CC = gcc -pipe -O -fwritable-strings -fomit-frame-pointer -DVOL=volatile -I$(GCLDIR)/o -I/usr/local/lib/gcl-2.0/h -fsigned-char
-+CC = gcc -pipe -O -fwritable-strings -fomit-frame-pointer -DVOL=volatile -I$(GCLDIR)/o -I${PREFIX}/lib/gcl-2.2.2/h -fsigned-char
++CC = gcc -fwritable-strings -fomit-frame-pointer -DVOL=volatile -I$(GCLDIR)/o \
++ -fsigned-char
LDCC = $(CC) -static
+ # Use the mp.s file on 68k machine
+-MPFILES= $(MPDIR)/mpi-386.o $(MPDIR)/libmport.a
++#MPFILES= $(MPDIR)/mpi-386.o $(MPDIR)/libmport.a
+ GNULIB1=/usr/lib/libgcc.a
+
+ # Enable the fastloading mechanism which does not use ld -A
diff --git a/lang/gcl/files/patch-ah b/lang/gcl/files/patch-ah
new file mode 100644
index 000000000000..148995192c04
--- /dev/null
+++ b/lang/gcl/files/patch-ah
@@ -0,0 +1,22 @@
+--- configure.orig Thu Nov 11 11:19:54 1999
++++ configure Thu Nov 25 13:04:20 1999
+@@ -1956,7 +1956,8 @@
+ old)
+ use=dos-go32;;
+
+- *86*-freebsd)
++ *86*-freebsd*)
++ MPI_FILE=mpi-386_no_under.o
+ use=FreeBSD;;
+
+ hp3*-*hpux*)
+@@ -2340,6 +2341,9 @@
+ TK_CONFIG_PREFIX=`tclsh8.0 conftest.tcl`
+ if test -d "${TK_CONFIG_PREFIX}" ; then true; else
+ TK_CONFIG_PREFIX=`tclsh conftest.tcl`
++if test -d "${TK_CONFIG_PREFIX}" ; then true; else
++TK_CONFIG_PREFIX="unknown"
++fi
+ fi
+ fi
+ #AC_MSG_CHECKING(TK_CONFIG_PREFIX=${TK_CONFIG_PREFIX})
diff --git a/lang/gcl/files/patch-ai b/lang/gcl/files/patch-ai
new file mode 100644
index 000000000000..cebe49a1cb66
--- /dev/null
+++ b/lang/gcl/files/patch-ai
@@ -0,0 +1,120 @@
+--- h/FreeBSD.h.orig Tue Nov 17 18:51:53 1998
++++ h/FreeBSD.h Thu Nov 25 01:17:34 1999
+@@ -1,92 +1,41 @@
+ /*
+- * FreeBSD.h for gcl 1.1
++ * FreeBSD.h for gcl 2.3
+ *
+- * Ported by Jeffrey Hsu (hsu@freebsd.org).
++ * Ported by Jeffrey Hsu (hsu@freebsd.org) for gcl 1.1
+ * Looked at previous versions by Hsu, Werkowsksi, Tobin, and Mogart.
+ *
++ * Updated to work with gcl 2.3 and FreeBSD 4.0/ELF by
++ * Justin Seger (jseger@FreeBSD.org).
++ *
+ */
+
+-#include "bsd.h"
+-
+-#undef LD_COMMAND
+-#define LD_COMMAND(command,main,start,input,ldarg,output) \
+- sprintf(command, "ld -dc -N -x -A %s -T %x %s %s -o %s", \
+- main,start,input,ldarg,output)
+-
+-#define ADDITIONAL_FEATURES \
+- ADD_FEATURE("386BSD");\
+- ADD_FEATURE("FreeBSD");
+-
+-
+-#define I386
+-#define IEEEFLOAT
+-
+-/* we don't need to worry about zeroing fp->_base, to prevent what??? */
+-#define FCLOSE_SETBUF_OK
+-
+-#undef HAVE_XDR
+-
+-#define USE_ATT_TIME
+-
+-#undef LISTEN_FOR_INPUT
+-#define LISTEN_FOR_INPUT(fp) \
+- if ((fp)->_r <=0 && (c=0, ioctl((fp)->_file, FIONREAD, &c), c<=0)) \
+- return(FALSE)
+-
+-#ifdef IN_GBC
+ #include <sys/types.h>
+-#endif
+
+-#define DATA_BEGIN (char *) N_DATADDR(header);
+-#define A_TEXT_OFFSET(x) (sizeof (struct exec))
+-#define A_TEXT_SEEK(hdr) (N_TXTOFF(hdr) + A_TEXT_OFFSET(hdr))
+-#define start_of_data() &etext
+-#define start_of_text() ((char *)(sizeof(struct exec) + getpagesize()))
+-
+-#define UNIXSAVE "unexec.c"
+-#ifdef UNIXSAVE
+- extern char etext;
++#ifdef IN_UNIXSAVE
++ #undef IN_UNIXSAVE
++ #define WAS_IN_UNIXSAVE
+ #endif
+
+-#define RELOC_FILE "rel_sun3.c" /* for SFASL - enabled in bsd.h */
++#include "386-linux.h"
+
+-#ifdef CLOCKS_PER_SEC
+-#define HZ CLOCKS_PER_SEC
+-#else
+-#define HZ 128
++#ifdef WAS_IN_UNIXSAVE
++ #define IN_UNIXSAVE
+ #endif
+-#define ss_base ss_sp
+
+-/* begin for GC */
+-#define PAGEWIDTH 12 /* i386 sees 4096 byte pages */
+-/* end for GC */
+-
+-#define SIG_STACK_SIZE (SIGSTKSZ/sizeof(double))
+-#define SETUP_SIG_STACK \
+-{ \
+- static struct sigaltstack estack; \
+- estack.ss_sp = estack_buf; \
+- estack.ss_size = SIGSTKSZ; \
+- estack.ss_flags = 0; \
+- if (sigaltstack(&estack, 0) < 0) \
+- perror("sigaltstack"); \
+-}
+-
+-#define INSTALL_SEGMENTATION_CATCHER \
+- (void) gcl_signal(SIGSEGV, segmentation_catcher); \
+- (void) gcl_signal(SIGBUS, segmentation_catcher)
+-
+-/*
+- * The next two defines are for SGC,
+- * one of which needs to go in cmpinclude.h.
+- */
+-#define SIGPROTV SIGBUS
+-
+-/* Begin for cmpinclude */
+-#define SGC /* can mprotect pages and so selective gc will work */
++#undef INSTALL_MPROTECT_HANDLER
++#undef GET_FAULT_ADDR
++#undef LISTEN_FOR_INPUT
+
+-/* End for cmpinclude */
++#define LISTEN_FOR_INPUT(fp) \
++ if ((fp)->_r <=0 && (c=0, ioctl((fp)->_file, FIONREAD, &c), c<=0)) \
++ return(FALSE)
+
+-#if defined(IN_UNIXTIME)
+-# include <time.h>
++#if 0
++{\
++ int fd = (fp)->_file;\
++ static struct timeval tv = {0,0};\
++ static fd_set rmask; FD_ZERO(&rmask); FD_SET(fd,&rmask);\
++ select(fd+1,&rmask,NULL,NULL,&tv);\
++ return (FD_ISSET(fd,&rmask));\
++}
+ #endif
diff --git a/lang/gcl/files/patch-ak b/lang/gcl/files/patch-ak
new file mode 100644
index 000000000000..888e7265ee80
--- /dev/null
+++ b/lang/gcl/files/patch-ak
@@ -0,0 +1,11 @@
+--- o/unixfasl.c.orig Thu Nov 25 01:11:50 1999
++++ o/unixfasl.c Thu Nov 25 01:12:20 1999
+@@ -282,7 +282,7 @@
+
+ object faslfile, ldargstring;
+ {
+-#if defined(__linux__) && defined(__ELF__)
++#if (defined(__linux__) || defined(__FreeBSD__)) && defined(__ELF__)
+ FEerror("faslink() not supported for ELF yet",0);
+ #else
+ struct exec header, faslheader;
diff --git a/lang/gcl/files/patch-al b/lang/gcl/files/patch-al
new file mode 100644
index 000000000000..cdc5ae57c902
--- /dev/null
+++ b/lang/gcl/files/patch-al
@@ -0,0 +1,32 @@
+--- o/sfaslelf.c.orig Thu Nov 25 01:28:03 1999
++++ o/sfaslelf.c Thu Nov 25 01:31:36 1999
+@@ -15,7 +15,7 @@
+
+ */
+
+-#ifndef __linux__
++#if !(defined(__linux__) || defined(__FreeBSD__))
+ #define ELF_TARGET_SPARC 1
+ #endif
+
+@@ -373,7 +373,7 @@
+ *(unsigned int *)where += ((val & mask) | ((*(unsigned int *)where) & ~mask))
+
+ switch(ELF32_R_TYPE(reloc_info->r_info)){
+-#if (defined(__svr4__) || defined(__linux__)) && defined(__i386__)
++#if (defined(__svr4__) || defined(__linux__) || defined(__FreeBSD__)) && defined(__i386__)
+ case R_386_NONE:
+ FEerror("Unsupported ELF type R_386_NONE");
+ break;
+@@ -420,9 +420,11 @@
+ FEerror("Unsupported ELF type R_386_GOTPC");
+ break;
+
++#ifdef R_386_NUM
+ case R_386_NUM:
+ FEerror("Unsupported ELF type R_386_NUM");
+ break;
++#endif
+
+ #else
+ case R_SPARC_WDISP30:
diff --git a/lang/gcl/pkg-plist b/lang/gcl/pkg-plist
index b6690aa890c2..c32e810edb80 100644
--- a/lang/gcl/pkg-plist
+++ b/lang/gcl/pkg-plist
@@ -3,12 +3,39 @@ bin/gcl.exe
@unexec install-info --delete %D/info/gcl-si.info %D/info/dir
info/gcl-si.info
@exec install-info %D/info/gcl-si.info %D/info/dir
-lib/gcl-2.2.2/cmpnew/collectfn.o
-lib/gcl-2.2.2/lsp/gprof.lsp
-lib/gcl-2.2.2/lsp/info.o
-lib/gcl-2.2.2/lsp/profile.lsp
-lib/gcl-2.2.2/unixport/saved_gcl
-@dirrm lib/gcl-2.2.2/unixport
-@dirrm lib/gcl-2.2.2/lsp
-@dirrm lib/gcl-2.2.2/cmpnew
-@dirrm lib/gcl-2.2.2
+lib/gcl-%%GCL_VER%%/unixport/saved_gcl
+lib/gcl-%%GCL_VER%%/cmpnew/collectfn.o
+lib/gcl-%%GCL_VER%%/lsp/gprof.lsp
+lib/gcl-%%GCL_VER%%/lsp/info.o
+lib/gcl-%%GCL_VER%%/lsp/profile.lsp
+lib/gcl-%%GCL_VER%%/gcl-tk/decode.tcl
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/index.lsp
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/gc-monitor.lisp
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/mkBasic.lisp
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/mkCanvText.lisp
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/mkEntry.lisp
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/mkEntry2.lisp
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/mkForm.lisp
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/mkHScale.lisp
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/mkItems.lisp
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/mkLabel.lisp
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/mkListbox.lisp
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/mkPlot.lisp
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/mkRadio.lisp
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/mkRuler.lisp
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/mkSearch.lisp
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/mkStyles.lisp
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/mkTextBind.lisp
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/mkVScale.lisp
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/mkdialog.lisp
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/nqthm-stack.lisp
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/showVars.lisp
+lib/gcl-%%GCL_VER%%/gcl-tk/demos/widget.lisp
+lib/gcl-%%GCL_VER%%/gcl-tk/gcl.tcl
+lib/gcl-%%GCL_VER%%/gcl-tk/gcltksrv
+@dirrm lib/gcl-%%GCL_VER%%/unixport
+@dirrm lib/gcl-%%GCL_VER%%/lsp
+@dirrm lib/gcl-%%GCL_VER%%/gcl-tk/demos
+@dirrm lib/gcl-%%GCL_VER%%/gcl-tk
+@dirrm lib/gcl-%%GCL_VER%%/cmpnew
+@dirrm lib/gcl-%%GCL_VER%%