diff --git a/msvc/c/Makefile b/msvc/c/Makefile
new file mode 100644
index 000000000..82e9bd8c1
--- /dev/null
+++ b/msvc/c/Makefile
@@ -0,0 +1,142 @@
+#
+# Makefile for ECL core library
+#
+top_srcdir = ..\..\src
+srcdir = ..\..\src\c
+
+!if "$(ECL_THREADS)" != ""
+THREADS_OBJ= threads_win32.obj
+THREADS_FLAGS= -DECL_THREADS -DGC_WIN32_THREADS
+!else
+THREADS_OBJ=
+THREADS_FLAGS=
+!endif
+
+# Programs used by "make":
+#
+TRUE_CC = cl
+CC = cl
+CFLAGS = -c -MD -Zi -I./ -I$(srcdir) -I$(HDIR) -I../h -I$(top_srcdir)/gc/include -DHAVE_ISATTY $(THREADS_FLAGS) -DGC_NOT_DLL
+# -Wall -W -Wfloat-equal -Wundef -Wendif-labels -Wpointer-arith -Wcast-align \
+# -Wwrite-strings -Wconversion -Wsign-compare -Wmissing-prototypes -Wredundant-decls \
+# -Wunreachable-code -Winline
+DEFS = $(THREADS_FLAGS)
+
+SHELL = /bin/sh
+RM = del
+CP = copy /Y
+MV = move /Y
+LINK = link
+EXE = .exe
+DPP = .\dpp$(EXE)
+
+# Data for installation
+#
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+prefix=@prefix@
+exec_prefix=$(prefix)
+libdir=$(prefix)\lib\ecl
+
+# Files
+
+HDIR = $(top_srcdir)\h
+HFILES = ..\h\config.h $(HDIR)\ecl.h $(HDIR)\ecl-cmp.h\
+ $(HDIR)\object.h $(HDIR)\cs.h $(HDIR)\stacks.h\
+ $(HDIR)\external.h $(HDIR)\eval.h\
+ $(HDIR)\number.h $(HDIR)\page.h $(HDIR)\unify.h\
+ $(HDIR)\lwp.h
+OBJS = main.obj symbol.obj package.obj list.obj\
+ apply.obj eval.obj interpreter.obj compiler.obj disassembler.obj \
+ instance.obj gfun.obj reference.obj character.obj\
+ file.obj read.obj print.obj error.obj string.obj cfun.obj\
+ typespec.obj assignment.obj \
+ predicate.obj big.obj number.obj\
+ num_pred.obj num_comp.obj num_arith.obj num_sfun.obj num_co.obj\
+ num_log.obj num_rand.obj array.obj sequence.obj cmpaux.obj\
+ macros.obj backq.obj stacks.obj \
+ time.obj unixint.obj\
+ mapfun.obj multival.obj hash.obj format.obj pathname.obj\
+ structure.obj load.obj unixfsys.obj unixsys.obj \
+ ffi.obj alloc_2.obj tcp.obj $(THREADS_OBJ)
+
+all: $(DPP) external.h ..\eclmin.lib ..\cinit.obj
+
+.SUFFIXES: .obj .c .d
+
+{$(srcdir:\=/)}.d{}.c:
+ $(DPP) $< $@
+#.d.c:
+# $(DPP) $< $@
+.c.obj:
+ $(CC) $(CFLAGS) -o $@ $<
+
+.PHONY: all
+
+#
+# When compiling the library itself, we have to remove the dllimport
+# declarations, because the variables that they mark are in the
+# in the library and can be referenced without indirection.
+#
+external.h: $(top_srcdir)/h/external.h Makefile
+ cut.exe removedecl < $(top_srcdir)/h/external.h > $@
+
+cut.exe: $(top_srcdir)/util/cut.c
+ $(CC) $(LDFLAGS) /Fecut.exe $(top_srcdir)/util/cut.c
+
+install: $(HFILES)
+ for %i in ($(HFILES)) do $(CP) %i $(libdir)\h
+ cut.exe < ..\h\config.h > $(libdir)\h\config-install.h
+ $(RM) $(libdir)\h\config.h
+ $(MV) $(libdir)\h\config-install.h $(libdir)\h\config.h
+
+flatinstall: $(HFILES)
+ for %i in ($(HFILES)) do $(CP) %i $(prefix)\h
+ cut.exe < ..\h\config.h > $(prefix)\h\config-install.h
+ for %h in (..\h\*.h) do $(CP) %h $(prefix)\h
+ $(RM) $(prefix)\h\config.h
+ $(MV) $(prefix)\h\config-install.h $(prefix)\h\config.h
+
+..\eclmin.lib: $(OBJS:.obj=.c) all_symbols.c $(OBJS) all_symbols.obj all_symbols2.obj
+ -$(RM) $@
+ $(LINK) -lib -out:$@ $(OBJS)
+
+clean:
+ -for %f in (..\h\config.h dpp dpp.obj $(DPP) external.h \
+ ..\eclmin.lib ..\cinit.obj cinit.c \
+ symbols_list2.h) \
+ do $(RM) %f
+ -for %f in ($(OBJS:.obj=.c) all_symbols.c) do $(RM) %f
+ -for %f in ($(OBJS) all_symbols.obj all_symbols2.obj) do $(RM) %f
+ -$(RM) *.pdb
+
+# Build rules
+
+$(DPP): $(srcdir)/dpp.c $(srcdir)/symbols_list2.h ../h/config.h
+ $(TRUE_CC) -I../h -I./ -I$(HDIR) $(DEFS) $(srcdir)/dpp.c -o $@
+../h/config.h: ../h/config.h.msvc6
+ $(CP) ..\h\config.h.msvc6 ..\h\config.h
+
+#
+# GCC might break this code
+#
+gbc.o: gbc.c $(HFILES)
+ $(CC) $(CFLAGS) -O0 gbc.c -o $@
+#
+# This reduces the overhead of jumping to other functions
+#
+apply.o: apply.c $(HFILES) $(HDIR)/cs.h
+ $(CC) $(CFLAGS) apply.c -o $@
+#
+# These files are interrelated
+#
+all_symbols.obj: all_symbols.c
+ $(CC) $(CFLAGS) -Fo$@ -I./ all_symbols.c
+all_symbols2.obj: all_symbols.c
+ $(CC) $(CFLAGS) -DECL_FINAL -Fo$@ -I./ all_symbols.c
+#
+# This is in another directory
+#
+../cinit.obj: cinit.c
+ $(CC) $(CFLAGS) -I./ -o cinit.obj cinit.c
+ $(MV) cinit.obj ..\
diff --git a/msvc/doc/Makefile b/msvc/doc/Makefile
new file mode 100644
index 000000000..0b3021735
--- /dev/null
+++ b/msvc/doc/Makefile
@@ -0,0 +1,162 @@
+top_srcdir= ..\..\src
+srcdir = ..\..\src\doc
+
+prefix=@prefix@
+exec_prefix=$(prefix)\bin
+infodir = $(prefix)\doc\info
+mandir=$(prefix)\doc\man
+docdir=$(prefix)\doc
+manext=1
+
+INFOEXT = info
+SHELL = cmd.exe
+INSTALL = ..\install.bat
+INSTALL_PROGRAM = $(INSTALL)
+INSTALL_DATA = $(INSTALL)
+INSTALL_INFO = $(INSTALL)
+mkinstalldirs = $(SHELL) $(top_srcdir)/gc/mkinstalldirs.bat
+INFO_FILES = ecl.$(INFOEXT) ecldev.$(INFOEXT)
+HTML_FILES = index.html license.html lgpl.html news.html benchmark.html \
+ install.html download.html
+
+RM = erase
+RMDIR = rmdir /S /Q
+MKDIR = mkdir
+CP = copy /Y
+
+ECL_VERSION=0.9f
+
+FILTER = ..\c\cut$(EXE) "@PACKAGE_VERSION@" "$(ECL_VERSION)"
+
+ECL = ../ecl
+
+all: $(INFO_FILES) $(HTML_FILES) developers_manual user_manual clx_manual
+
+ecl.dvi: $(srcdir)/user.txi $(srcdir)/macros.txi clisp.sty ecl.sty
+ tex $(srcdir)/user.txi
+ecldev.dvi: $(srcdir)/devel.txi $(srcdir)/macros.txi clisp.sty ecl.sty
+ tex $(srcdir)/devel.txi
+clx.dvi: clx.texinfo
+ tex clx.texinfo
+
+ecl.ps: ecl.dvi $(srcdir)/macros.txi
+ dvips -o $@ ecl.dvi
+ecldev.ps: ecldev.dvi $(srcdir)/macros.txi
+ dvips -o $@ ecldev.dvi
+clx.ps: clx.dvi
+ dvips -o $@ clx.dvi
+
+install: all
+ IF NOT EXIST $(docdir) $(MKDIR) $(docdir)
+ for %i in (Copyright LGPL) do $(CP) $(top_srcdir)\..\%i $(docdir)
+ for %i in ($(HTML_FILES)) do $(CP) %i $(docdir)
+ IF NOT EXIST $(docdir)\ecldev $(MKDIR) $(docdir)\ecldev
+ for %i in (ecldev\*) do $(CP) %i $(docdir)\ecldev
+ IF NOT EXIST $(docdir)\ecl $(MKDIR) $(docdir)\ecl
+ for %i in (ecl\*) do $(CP) %i $(docdir)\ecl
+ IF NOT EXIST $(docdir)\clx $(MKDIR) $(docdir)\clx
+ for %i in (clx\*) do $(CP) %i $(docdir)\clx
+flatinstall: all
+ IF NOT EXIST $(docdir) $(MKDIR) $(docdir)
+ for %i in (Copyright LGPL) do $(CP) $(top_srcdir)\..\%i $(docdir)
+ for %i in ($(HTML_FILES)) do $(CP) %i $(docdir)
+ IF NOT EXIST $(docdir)\ecldev $(MKDIR) $(docdir)\ecldev
+ for %i in (ecldev\*) do $(CP) %i $(docdir)\ecldev
+ IF NOT EXIST $(docdir)\ecl $(MKDIR) $(docdir)\ecl
+ for %i in (ecl\*) do $(CP) %i $(docdir)\ecl
+ IF NOT EXIST $(docdir)\clx $(MKDIR) $(docdir)\clx
+ for %i in (clx\*) do $(CP) %i $(docdir)\clx
+
+uninstall:
+ for k in $(INFO_FILES); do \
+ rm $$k; \
+ if [ -x $(INSTALL_INFO) ]; then \
+ $(INSTALL_INFO) --delete $$k; \
+ fi; \
+ done
+ rm -r $(infodir)/ecl.$(INFOEXT) $(infodir)/ecldev.$(INFOEXT); \
+ rm $(mandir)/man$(manext)/ecl.$(manext)
+
+head2: developers_manual user_manual clx_manual $(srcdir)/head Makefile
+ IF EXIST ecl\index.html ( \
+ ..\c\cut.exe "ecl/user.html" "ecl/index.html" \
+ "ecldev/devel.html" "ecldev/index.html" \
+ < $(srcdir)/head > head2 \
+ ) ELSE ( \
+ copy /y $(srcdir)/head head2 \
+ )
+ecl.info.gz: ecl.info
+ gzip < ecl.info > ecl.info.gz
+ecldev.info.gz: ecldev.info
+ gzip < ecldev.info > ecldev.info.gz
+clx.info.gz: clx.info
+ gzip < clx.info > clx.info.gz
+ecl.info: $(srcdir)/user.txi $(srcdir)/macros.txi
+ makeinfo -I $(srcdir) --no-split $(srcdir)/user.txi
+ecldev.info: $(srcdir)/devel.txi $(srcdir)/macros.txi
+ makeinfo -I $(srcdir) --no-split $(srcdir)/devel.txi
+clx.info: clx.texinfo
+ makeinfo --no-split clx.texinfo
+clx.texinfo: $(top_srcdir)/clx/manual/clx.texinfo
+ cp $(top_srcdir)/clx/manual/clx.texinfo .
+
+download.html: $(srcdir)/download.in.html head2
+ ( type head2 $(srcdir)\download.in.html $(srcdir)\end ) | $(FILTER) > $@
+index.html: $(srcdir)/index.in.html head2
+ ( type head2 $(srcdir)\index.in.html $(srcdir)\end ) | $(FILTER) > $@
+install.html: $(srcdir)/install.in.html head2
+ ( type head2 $(srcdir)\install.in.html $(srcdir)\end ) | $(FILTER) > $@
+news.html: $(srcdir)\..\..\ANNOUNCEMENT head2
+ type head2 > html_tmp
+ echo "
+
+srcdir = ..\..\src\gc
+
+!if "$(ECL_THREADS)" != ""
+THREADS_OBJ= win32_threads.obj
+THREADS_FLAGS= -DGC_WIN32_THREADS
+!else
+THREADS_OBJ=
+THREADS_FLAGS=
+!endif
+
+OBJS= alloc.obj reclaim.obj allchblk.obj misc.obj mach_dep.obj os_dep.obj mark_rts.obj headers.obj mark.obj obj_map.obj blacklst.obj finalize.obj new_hblk.obj dbg_mlc.obj malloc.obj stubborn.obj dyn_load.obj typd_mlc.obj ptr_chck.obj gc_cpp.obj mallocx.obj $(THREADS_OBJ)
+
+all: gctest.exe cord\de.exe test_cpp.exe
+
+{$(srcdir)}.c{}.obj:
+ $(cc) $(cdebug) $(cflags) $(cvarsdll) -I$(srcdir)\include -DSILENT -DALL_INTERIOR_POINTERS -D__STDC__ -DGC_NOT_DLL $(THREADS_FLAGS) $< /Fo$*.obj
+
+.cpp.obj:
+ $(cc) /MD $(cdebug) $(cflags) $(cvarsdll) -I$(srcdir)\include -DSILENT -DALL_INTERIOR_POINTERS -DGC_NOT_DLL $(THREADS_FLAGS) $*.CPP /Fo$*.obj
+
+$(OBJS) tests\test.obj: $(srcdir)\include\private\gc_priv.h $(srcdir)\include\private\gc_hdrs.h $(srcdir)\include\gc.h $(srcdir)\include\private\gcconfig.h $(srcdir)\include\private\gc_locks.h $(srcdir)\include\private\gc_pmark.h $(srcdir)\include\gc_mark.h
+
+gc.lib: $(OBJS)
+ link -lib /MACHINE:i386 /out:gc.lib $(OBJS)
+# The original NT SDK used lib32 instead of lib
+
+gctest.exe: tests\test.obj gc.lib
+# The following works for win32 debugging. For win32s debugging use debugtype:coff
+# and add mapsympe line.
+# This produces a "GUI" applications that opens no windows and writes to the log file
+# "gc.log". This is done to make the result runnable under win32s.
+ $(link) -debug:full -debugtype:cv $(guiflags) -stack:131072 -out:$*.exe tests\test.obj $(guilibs) gc.lib
+# mapsympe -n -o gctest.sym gctest.exe
+
+cord\de_win.rbj: cord\de_win.res
+ cvtres -$(CPU) cord\de_win.res -o cord\de_win.rbj
+
+cord\de.obj cord\de_win.obj: include\cord.h include\private\cord_pos.h cord\de_win.h cord\de_cmds.h
+
+cord\de_win.res: cord\de_win.rc cord\de_win.h cord\de_cmds.h
+ $(rc) $(rcvars) -r -fo cord\de_win.res $(cvarsdll) cord\de_win.rc
+
+# Cord/de is a real win32 gui application.
+cord\de.exe: cord\cordbscs.obj cord\cordxtra.obj cord\de.obj cord\de_win.obj cord\de_win.rbj gc.lib
+ $(link) -debug:full -debugtype:cv $(guiflags) -stack:16384 -out:cord\de.exe cord\cordbscs.obj cord\cordxtra.obj cord\de.obj cord\de_win.obj cord\de_win.rbj gc.lib $(guilibs)
+
+gc_cpp.obj: $(srcdir)\include\gc_cpp.h $(srcdir)\include\gc.h
+
+gc_cpp.cpp: $(srcdir)\gc_cpp.cc
+ copy $(srcdir)\gc_cpp.cc gc_cpp.cpp
+
+test_cpp.cpp: tests\test_cpp.cc
+ copy tests\test_cpp.cc test_cpp.cpp
+
+# This generates the C++ test executable. The executable expects
+# a single numeric argument, which is the number of iterations.
+# The output appears in the file "gc.log".
+test_cpp.exe: test_cpp.obj include\gc_cpp.h include\gc.h gc.lib
+ $(link) -debug:full -debugtype:cv $(guiflags) -stack:16384 -out:test_cpp.exe test_cpp.obj gc.lib $(guilibs)
+
+
+clean:
+ -del gc.lib
+ -for %i in ($(OBJS) gc_cpp.cpp) do erase %i
diff --git a/msvc/gmp/Makefile b/msvc/gmp/Makefile
new file mode 100644
index 000000000..462e93220
--- /dev/null
+++ b/msvc/gmp/Makefile
@@ -0,0 +1,615 @@
+srcdir = ..\..\src\gmp
+
+AUTO_SUBDIRS = mpn\generic mpf mpq mpz printf scanf
+
+MPN_GC_SOURCES = \
+ mpn\generic\add.c \
+ mpn\generic\add_1.c \
+ mpn\generic\add_n.c \
+ mpn\generic\addmul_1.c \
+ mpn\generic\addsub_n.c \
+ mpn\generic\bdivmod.c \
+ mpn\generic\cmp.c \
+ mpn\generic\dc_divrem_n.c \
+ mpn\generic\dive_1.c \
+ mpn\generic\diveby3.c \
+ mpn\generic\divis.c \
+ mpn\generic\divrem.c \
+ mpn\generic\divrem_1.c \
+ mpn\generic\divrem_2.c \
+ mpn\generic\dump.c \
+ mpn\generic\fib2_ui.c \
+ mpn\generic\gcd.c \
+ mpn\generic\gcd_1.c \
+ mpn\generic\gcdext.c \
+ mpn\generic\get_str.c \
+ mpn\generic\hamdist.c \
+ mpn\generic\jacbase.c \
+ mpn\generic\lshift.c \
+ mpn\generic\mod_1.c \
+ mpn\generic\mod_34lsub1.c \
+ mpn\generic\mode1o.c \
+ mpn\generic\mul.c \
+ mpn\generic\mul_1.c \
+ mpn\generic\mul_basecase.c \
+ mpn\generic\mul_fft.c \
+ mpn\generic\mul_n.c \
+ mpn\generic\perfsqr.c \
+ mpn\generic\popcount.c \
+ mpn\generic\pow_1.c \
+ mpn\generic\pre_divrem_1.c \
+ mpn\generic\pre_mod_1.c \
+ mpn\generic\random.c \
+ mpn\generic\random2.c \
+ mpn\generic\rootrem.c \
+ mpn\generic\rshift.c \
+ mpn\generic\sb_divrem_mn.c \
+ mpn\generic\scan0.c \
+ mpn\generic\scan1.c \
+ mpn\generic\set_str.c \
+ mpn\generic\sizeinbase.c \
+ mpn\generic\sqr_basecase.c \
+ mpn\generic\sqrtrem.c \
+ mpn\generic\sub.c \
+ mpn\generic\sub_1.c \
+ mpn\generic\sub_n.c \
+ mpn\generic\submul_1.c \
+ mpn\generic\tdiv_qr.c \
+ mpn\mp_bases.c
+
+MPN_P0_C_SOURCES = \
+ mpn\generic\add.c \
+ mpn\generic\add_1.c \
+ mpn\generic\addsub_n.c \
+ mpn\generic\bdivmod.c \
+ mpn\generic\cmp.c \
+ mpn\generic\dc_divrem_n.c \
+ mpn\generic\divis.c \
+ mpn\generic\divrem.c \
+ mpn\generic\divrem_2.c \
+ mpn\generic\dump.c \
+ mpn\generic\fib2_ui.c \
+ mpn\generic\gcd.c \
+ mpn\generic\gcd_1.c \
+ mpn\generic\gcdext.c \
+ mpn\generic\get_str.c \
+ mpn\generic\hamdist.c \
+ mpn\generic\jacbase.c \
+ mpn\generic\mode1o.c \
+ mpn\mp_bases.c \
+ mpn\generic\mul.c \
+ mpn\generic\mul_fft.c \
+ mpn\generic\mul_n.c \
+ mpn\generic\perfsqr.c \
+ mpn\generic\popcount.c \
+ mpn\generic\pow_1.c \
+ mpn\generic\pre_divrem_1.c \
+ mpn\generic\pre_mod_1.c \
+ mpn\generic\random.c \
+ mpn\generic\random2.c \
+ mpn\generic\rootrem.c \
+ mpn\generic\sb_divrem_mn.c \
+ mpn\generic\scan0.c \
+ mpn\generic\scan1.c \
+ mpn\generic\set_str.c \
+ mpn\generic\sizeinbase.c \
+ mpn\generic\sqr_basecase.c \
+ mpn\generic\sqrtrem.c \
+ mpn\generic\sub.c \
+ mpn\generic\sub_1.c \
+ mpn\generic\tdiv_qr.c
+
+MPN_P0_ASM_SOURCES = \
+ mpn\x86i\umul.asm \
+ mpn\x86i\udiv.asm \
+ mpn\x86i\rshift.asm \
+ mpn\x86i\mul_basecase.asm \
+ mpn\x86i\mul_1.asm \
+ mpn\x86i\mod_34lsub1.asm \
+ mpn\x86i\mod_1.asm \
+ mpn\x86i\lshift.asm \
+ mpn\x86i\divrem_1.asm \
+ mpn\x86i\diveby3.asm \
+ mpn\x86i\dive_1.asm \
+ mpn\x86i\copyi.asm \
+ mpn\x86i\copyd.asm \
+ mpn\x86i\aorsmul_1.asm \
+ mpn\x86i\aors_n.asm
+
+MPN_P3_C_SOURCES = \
+ mpn\generic\add.c \
+ mpn\generic\add_1.c \
+ mpn\generic\addsub_n.c \
+ mpn\generic\bdivmod.c \
+ mpn\generic\cmp.c \
+ mpn\generic\dc_divrem_n.c \
+ mpn\generic\divis.c \
+ mpn\generic\divrem.c \
+ mpn\generic\divrem_2.c \
+ mpn\generic\dump.c \
+ mpn\generic\fib2_ui.c \
+ mpn\generic\gcd.c \
+ mpn\generic\gcd_1.c \
+ mpn\generic\gcdext.c \
+ mpn\generic\get_str.c \
+ mpn\generic\jacbase.c \
+ mpn\mp_bases.c \
+ mpn\generic\mul.c \
+ mpn\generic\mul_fft.c \
+ mpn\generic\mul_n.c \
+ mpn\generic\perfsqr.c \
+ mpn\generic\pow_1.c \
+ mpn\generic\random.c \
+ mpn\generic\random2.c \
+ mpn\generic\rootrem.c \
+ mpn\generic\sb_divrem_mn.c \
+ mpn\generic\scan0.c \
+ mpn\generic\scan1.c \
+ mpn\generic\set_str.c \
+ mpn\generic\sizeinbase.c \
+ mpn\generic\sqrtrem.c \
+ mpn\generic\sub.c \
+ mpn\generic\sub_1.c \
+ mpn\generic\tdiv_qr.c
+
+MPN_P3_ASM_SOURCES = \
+ mpn\x86i\umul.asm \
+ mpn\x86i\udiv.asm \
+ mpn\x86i\p6\sqr_basecase.asm \
+ mpn\x86i\mul_basecase.asm \
+ mpn\x86i\mul_1.asm \
+ mpn\x86i\p6\mode1o.asm \
+ mpn\x86i\mod_34lsub1.asm \
+ mpn\x86i\p6\mod_1.asm \
+ mpn\x86i\p6\diveby3.asm \
+ mpn\x86i\p6\dive_1.asm \
+ mpn\x86i\copyi.asm \
+ mpn\x86i\p6\copyd.asm \
+ mpn\x86i\p6\aorsmul_1.asm \
+ mpn\x86i\aors_n.asm \
+ mpn\x86i\p6\mmx\rshift.asm \
+ mpn\x86i\p6\p3mmx\popham.asm \
+ mpn\x86i\p6\mmx\lshift.asm \
+ mpn\x86i\p6\mmx\divrem_1.asm
+
+MPN_P4_C_SOURCES = \
+ mpn\generic\add.c \
+ mpn\generic\add_1.c \
+ mpn\generic\addsub_n.c \
+ mpn\generic\bdivmod.c \
+ mpn\generic\cmp.c \
+ mpn\generic\dc_divrem_n.c \
+ mpn\generic\divis.c \
+ mpn\generic\divrem.c \
+ mpn\generic\divrem_2.c \
+ mpn\generic\dump.c \
+ mpn\generic\fib2_ui.c \
+ mpn\generic\gcd.c \
+ mpn\generic\gcd_1.c \
+ mpn\generic\gcdext.c \
+ mpn\generic\get_str.c \
+ mpn\generic\jacbase.c \
+ mpn\mp_bases.c \
+ mpn\generic\mul.c \
+ mpn\generic\mul_fft.c \
+ mpn\generic\mul_n.c \
+ mpn\generic\perfsqr.c \
+ mpn\generic\pow_1.c \
+ mpn\generic\pre_divrem_1.c \
+ mpn\generic\pre_mod_1.c \
+ mpn\generic\random.c \
+ mpn\generic\random2.c \
+ mpn\generic\rootrem.c \
+ mpn\generic\sb_divrem_mn.c \
+ mpn\generic\scan0.c \
+ mpn\generic\scan1.c \
+ mpn\generic\set_str.c \
+ mpn\generic\sizeinbase.c \
+ mpn\generic\sqrtrem.c \
+ mpn\generic\sub.c \
+ mpn\generic\sub_1.c \
+ mpn\generic\tdiv_qr.c
+
+MPN_P4_ASM_SOURCES = \
+ mpn\x86i\umul.asm \
+ mpn\x86i\udiv.asm \
+ mpn\x86i\mod_1.asm \
+ mpn\x86i\divrem_1.asm \
+ mpn\x86i\pentium4\copyi.asm \
+ mpn\x86i\pentium4\copyd.asm \
+ mpn\x86i\pentium4\sse2\submul_1.asm \
+ mpn\x86i\pentium4\sse2\sub_n.asm \
+ mpn\x86i\pentium4\sse2\sqr_basecase.asm \
+ mpn\x86i\pentium4\sse2\mul_basecase.asm \
+ mpn\x86i\pentium4\sse2\mul_1.asm \
+ mpn\x86i\pentium4\sse2\mode1o.asm \
+ mpn\x86i\pentium4\sse2\mod_34lsub1.asm \
+ mpn\x86i\pentium4\sse2\diveby3.asm \
+ mpn\x86i\pentium4\sse2\dive_1.asm \
+ mpn\x86i\pentium4\sse2\addmul_1.asm \
+ mpn\x86i\pentium4\sse2\add_n.asm \
+ mpn\x86i\pentium4\mmx\rshift.asm \
+ mpn\x86i\pentium4\mmx\popham.asm \
+ mpn\x86i\pentium4\mmx\lshift.asm
+
+MPF_SOURCES = \
+ mpf\abs.c \
+ mpf\add.c \
+ mpf\add_ui.c \
+ mpf\ceilfloor.c \
+ mpf\clear.c \
+ mpf\cmp.c \
+ mpf\cmp_d.c \
+ mpf\cmp_si.c \
+ mpf\cmp_ui.c \
+ mpf\div.c \
+ mpf\div_2exp.c \
+ mpf\div_ui.c \
+ mpf\dump.c \
+ mpf\eq.c \
+ mpf\fits_sint.c \
+ mpf\fits_slong.c \
+ mpf\fits_sshort.c \
+ mpf\fits_uint.c \
+ mpf\fits_ulong.c \
+ mpf\fits_ushort.c \
+ mpf\get_d.c \
+ mpf\get_d_2exp.c \
+ mpf\get_dfl_prec.c \
+ mpf\get_prc.c \
+ mpf\get_si.c \
+ mpf\get_str.c \
+ mpf\get_ui.c \
+ mpf\init.c \
+ mpf\init2.c \
+ mpf\inp_str.c \
+ mpf\int_p.c \
+ mpf\iset.c \
+ mpf\iset_d.c \
+ mpf\iset_si.c \
+ mpf\iset_str.c \
+ mpf\iset_ui.c \
+ mpf\mul.c \
+ mpf\mul_2exp.c \
+ mpf\mul_ui.c \
+ mpf\neg.c \
+ mpf\out_str.c \
+ mpf\pow_ui.c \
+ mpf\random2.c \
+ mpf\reldiff.c \
+ mpf\set.c \
+ mpf\set_d.c \
+ mpf\set_dfl_prec.c \
+ mpf\set_prc.c \
+ mpf\set_prc_raw.c \
+ mpf\set_q.c \
+ mpf\set_si.c \
+ mpf\set_str.c \
+ mpf\set_ui.c \
+ mpf\set_z.c \
+ mpf\size.c \
+ mpf\sqrt.c \
+ mpf\sqrt_ui.c \
+ mpf\sub.c \
+ mpf\sub_ui.c \
+ mpf\swap.c \
+ mpf\trunc.c \
+ mpf\ui_div.c \
+ mpf\ui_sub.c \
+ mpf\urandomb.c
+
+MPQ_SOURCES = \
+ mpq\abs.c \
+ mpq\aors.c \
+ mpq\canonicalize.c \
+ mpq\clear.c \
+ mpq\cmp.c \
+ mpq\cmp_si.c \
+ mpq\cmp_ui.c \
+ mpq\div.c \
+ mpq\equal.c \
+ mpq\get_d.c \
+ mpq\get_den.c \
+ mpq\get_num.c \
+ mpq\get_str.c \
+ mpq\init.c \
+ mpq\inp_str.c \
+ mpq\inv.c \
+ mpq\md_2exp.c \
+ mpq\mul.c \
+ mpq\neg.c \
+ mpq\out_str.c \
+ mpq\set.c \
+ mpq\set_d.c \
+ mpq\set_den.c \
+ mpq\set_f.c \
+ mpq\set_num.c \
+ mpq\set_si.c \
+ mpq\set_str.c \
+ mpq\set_ui.c \
+ mpq\set_z.c \
+ mpq\swap.c
+
+MPZ_SOURCES = \
+ mpz\abs.c \
+ mpz\add.c \
+ mpz\add_ui.c \
+ mpz\and.c \
+ mpz\aorsmul.c \
+ mpz\aorsmul_i.c \
+ mpz\array_init.c \
+ mpz\bin_ui.c \
+ mpz\bin_uiui.c \
+ mpz\cdiv_q.c \
+ mpz\cdiv_q_ui.c \
+ mpz\cdiv_qr.c \
+ mpz\cdiv_qr_ui.c \
+ mpz\cdiv_r.c \
+ mpz\cdiv_r_ui.c \
+ mpz\cdiv_ui.c \
+ mpz\cfdiv_q_2exp.c \
+ mpz\cfdiv_r_2exp.c \
+ mpz\clear.c \
+ mpz\clrbit.c \
+ mpz\cmp.c \
+ mpz\cmp_d.c \
+ mpz\cmp_si.c \
+ mpz\cmp_ui.c \
+ mpz\cmpabs.c \
+ mpz\cmpabs_d.c \
+ mpz\cmpabs_ui.c \
+ mpz\com.c \
+ mpz\cong.c \
+ mpz\cong_2exp.c \
+ mpz\cong_ui.c \
+ mpz\dive_ui.c \
+ mpz\divegcd.c \
+ mpz\divexact.c \
+ mpz\divis.c \
+ mpz\divis_2exp.c \
+ mpz\divis_ui.c \
+ mpz\dump.c \
+ mpz\export.c \
+ mpz\fac_ui.c \
+ mpz\fdiv_q.c \
+ mpz\fdiv_q_ui.c \
+ mpz\fdiv_qr.c \
+ mpz\fdiv_qr_ui.c \
+ mpz\fdiv_r.c \
+ mpz\fdiv_r_ui.c \
+ mpz\fdiv_ui.c \
+ mpz\fib2_ui.c \
+ mpz\fib_ui.c \
+ mpz\fits_sint.c \
+ mpz\fits_slong.c \
+ mpz\fits_sshort.c \
+ mpz\fits_uint.c \
+ mpz\fits_ulong.c \
+ mpz\fits_ushort.c \
+ mpz\gcd.c \
+ mpz\gcd_ui.c \
+ mpz\gcdext.c \
+ mpz\get_d.c \
+ mpz\get_d_2exp.c \
+ mpz\get_si.c \
+ mpz\get_str.c \
+ mpz\get_ui.c \
+ mpz\getlimbn.c \
+ mpz\hamdist.c \
+ mpz\import.c \
+ mpz\init.c \
+ mpz\init2.c \
+ mpz\inp_raw.c \
+ mpz\inp_str.c \
+ mpz\invert.c \
+ mpz\ior.c \
+ mpz\iset.c \
+ mpz\iset_d.c \
+ mpz\iset_si.c \
+ mpz\iset_str.c \
+ mpz\iset_ui.c \
+ mpz\jacobi.c \
+ mpz\kronsz.c \
+ mpz\kronuz.c \
+ mpz\kronzs.c \
+ mpz\kronzu.c \
+ mpz\lcm.c \
+ mpz\lcm_ui.c \
+ mpz\lucnum2_ui.c \
+ mpz\lucnum_ui.c \
+ mpz\millerrabin.c \
+ mpz\mod.c \
+ mpz\mul.c \
+ mpz\mul_2exp.c \
+ mpz\mul_si.c \
+ mpz\mul_ui.c \
+ mpz\n_pow_ui.c \
+ mpz\neg.c \
+ mpz\nextprime.c \
+ mpz\out_raw.c \
+ mpz\out_str.c \
+ mpz\perfpow.c \
+ mpz\perfsqr.c \
+ mpz\popcount.c \
+ mpz\pow_ui.c \
+ mpz\powm.c \
+ mpz\powm_ui.c \
+ mpz\pprime_p.c \
+ mpz\random.c \
+ mpz\random2.c \
+ mpz\realloc.c \
+ mpz\realloc2.c \
+ mpz\remove.c \
+ mpz\root.c \
+ mpz\rrandomb.c \
+ mpz\scan0.c \
+ mpz\scan1.c \
+ mpz\set.c \
+ mpz\set_d.c \
+ mpz\set_f.c \
+ mpz\set_q.c \
+ mpz\set_si.c \
+ mpz\set_str.c \
+ mpz\set_ui.c \
+ mpz\setbit.c \
+ mpz\size.c \
+ mpz\sizeinbase.c \
+ mpz\sqrt.c \
+ mpz\sqrtrem.c \
+ mpz\sub.c \
+ mpz\sub_ui.c \
+ mpz\swap.c \
+ mpz\tdiv_q.c \
+ mpz\tdiv_q_2exp.c \
+ mpz\tdiv_q_ui.c \
+ mpz\tdiv_qr.c \
+ mpz\tdiv_qr_ui.c \
+ mpz\tdiv_r.c \
+ mpz\tdiv_r_2exp.c \
+ mpz\tdiv_r_ui.c \
+ mpz\tdiv_ui.c \
+ mpz\tstbit.c \
+ mpz\ui_pow_ui.c \
+ mpz\ui_sub.c \
+ mpz\urandomb.c \
+ mpz\urandomm.c \
+ mpz\xor.c \
+
+PRINTF_SOURCES = \
+ printf\asprintf.c \
+ printf\asprntffuns.c \
+ printf\doprnt.c \
+ printf\doprntf.c \
+ printf\doprnti.c \
+ printf\fprintf.c \
+ printf\obprintf.c \
+ printf\obprntffuns.c \
+ printf\obvprintf.c \
+ printf\printf.c \
+ printf\printffuns.c \
+ printf\repl-vsnprintf.c \
+ printf\snprintf.c \
+ printf\snprntffuns.c \
+ printf\sprintf.c \
+ printf\sprintffuns.c \
+ printf\vasprintf.c \
+ printf\vfprintf.c \
+ printf\vprintf.c \
+ printf\vsnprintf.c \
+ printf\vsprintf.c
+
+SCANF_SOURCES = \
+ scanf\doscan.c \
+ scanf\fscanf.c \
+ scanf\fscanffuns.c \
+ scanf\scanf.c \
+ scanf\sscanf.c \
+ scanf\sscanffuns.c \
+ scanf\vfscanf.c \
+ scanf\vscanf.c \
+ scanf\vsscanf.c
+
+GMP_SOURCES = \
+ ansi2knr.c \
+ assert.c \
+ compat.c \
+ errno.c \
+ extract-dbl.c \
+ insert-dbl.c \
+ memory.c \
+ mp_bpl.c \
+ mp_clz_tab.c \
+ mp_minv_tab.c \
+ mp_set_fns.c \
+ rand.c \
+ randclr.c \
+ randdef.c \
+ randlc.c \
+ randlc2s.c \
+ randlc2x.c \
+ randraw.c \
+ rands.c \
+ randsd.c \
+ randsdui.c \
+ version.c
+
+MPN_GC_OBJS = $(MPN_GC_SOURCES:.c=.obj)
+MPN_P0_OBJS = $(MPN_P0_ASM_SOURCES:.asm=.obj) $(MPN_P0_C_SOURCES:.c=.obj)
+MPN_P3_OBJS = $(MPN_P3_ASM_SOURCES:.asm=.obj) $(MPN_P3_C_SOURCES:.c=.obj)
+MPN_P4_OBJS = $(MPN_P4_ASM_SOURCES:.asm=.obj) $(MPN_P4_C_SOURCES:.c=.obj)
+MPF_OBJS = $(MPF_SOURCES:.c=.obj)
+MPQ_OBJS = $(MPQ_SOURCES:.c=.obj)
+MPZ_OBJS = $(MPZ_SOURCES:.c=.obj)
+PRINTF_OBJS = $(PRINTF_SOURCES:.c=.obj)
+SCANF_OBJS = $(SCANF_SOURCES:.c=.obj)
+GMP_OBJS = $(GMP_SOURCES:.c=.obj)
+
+GMP_ALL_OBJS = $(MPF_OBJS) $(MPQ_OBJS) $(MPZ_OBJS) \
+ $(PRINTF_OBJS) $(SCANF_OBJS) $(GMP_OBJS)
+
+MPN_TYPE = gc
+
+all: gmp.lib
+
+mpn_gc.lib: msvc-build $(MPN_GC_OBJS)
+ link -lib /NOLOGO /OUT:$@ $(MPN_GC_OBJS)
+
+mpn_p0.lib: msvc-build $(MPN_P0_OBJS)
+ link -lib /NOLOGO /OUT:$@ $(MPN_P0_OBJS)
+
+mpn_p3.lib: msvc-build $(MPN_P3_OBJS)
+ link -lib /NOLOGO /OUT:$@ $(MPN_P3_OBJS)
+
+mpn_p4.lib: msvc-build $(MPN_P4_OBJS)
+ link -lib /NOLOGO /OUT:$@ $(MPN_P4_OBJS)
+
+gmp.lib: mpn_$(MPN_TYPE).lib $(GMP_ALL_OBJS)
+ link -lib /NOLOGO /OUT:$@ *.obj mpf\*.obj mpz\*.obj mpq\*.obj $(PRINTF_OBJS) $(SCANF_OBJS) mpn_$(MPN_TYPE).lib
+
+CFLAGS = /nologo /MD /W3 /GX /I "." /I $(srcdir) /I "$(srcdir)\mpn\generic" /D "WIN32" /D "NDEBUG" /D "_LIB" /D "_WIN32" /D "_MBCS"
+
+{$(srcdir)\mpn\generic}.c{mpn\generic}.obj:
+ cl -c $(CFLAGS) /Fo$@ $?
+{$(srcdir)\mpn}.c{mpn}.obj:
+ cl -c $(CFLAGS) /Fo$@ $?
+{$(srcdir)\mpf}.c{mpf}.obj:
+ cl -c $(CFLAGS) /Fo$@ $?
+{$(srcdir)\mpq}.c{mpq}.obj:
+ cl -c $(CFLAGS) /Fo$@ $?
+{$(srcdir)\mpz}.c{mpz}.obj:
+ cl -c $(CFLAGS) /Fo$@ $?
+{$(srcdir)\printf}.c{printf}.obj:
+ cl -c $(CFLAGS) /Fo$@ $?
+{$(srcdir)\scanf}.c{scanf}.obj:
+ cl -c $(CFLAGS) /Fo$@ $?
+{$(srcdir)}.c{}.obj:
+ cl -c $(CFLAGS) /Fo$@ $?
+
+.asm.obj:
+ nasm -O9 -Xvc -f win32 -i $(@D)\ -o $@ $?
+
+msvc-build: config-vc6.$(MPN_TYPE) gmp.h.vc6
+ copy config-vc6.$(MPN_TYPE) config.h
+ copy gmp.h.vc6 gmp.h
+ for %d in ($(AUTO_SUBDIRS)) do \
+ if not exist %d mkdir %d
+ echo > $@
+
+clean:
+ -erase mpn\generic\*.obj
+ -erase mpn\*.obj
+ -erase mpf\*.obj
+ -erase mpq\*.obj
+ -erase mpz\*.obj
+ -erase printf\*.obj
+ -erase scanf\*.obj
+ -erase *.obj
+ -erase mpn_*.lib
+ -erase gmp.lib
+ -for %o in ($(MPN_P0_ASM_SOURCES:.asm=.obj)) do erase %o
+ -for %o in ($(MPN_P3_ASM_SOURCES:.asm=.obj)) do erase %o
+ -for %o in ($(MPN_P4_ASM_SOURCES:.asm=.obj)) do erase %o
+ -for %d in ($(AUTO_SUBDIRS)) do rmdir /S /Q %d
+ -erase config.h
+ -erase gmp.h
+ -erase msvc-build
diff --git a/msvc/util/ecl_nsi.bat b/msvc/util/ecl_nsi.bat
index cd166d5e7..9c3fa48ef 100644
--- a/msvc/util/ecl_nsi.bat
+++ b/msvc/util/ecl_nsi.bat
@@ -1,4 +1,4 @@
-@ECHO off
+REM @ECHO off
REM Converted from ecl_nsi.sh
SETLOCAL
@@ -7,17 +7,17 @@ SET source=%1
SET where=%2
CD %where%
SET dest=ecl.nsi
-SET where=%CD%
-ECHO %where%
-REM set -x
-
-sed -e "/!@INSTALLFILES@/,$d" -e "s,@ECLDIR@,%where:\=\\%," %source% > %dest%
-DIR /B /A:-D | sed -e "/^.*ecl.exe.*$/d" -e "/^.*ecl.nsi.*$/d" -e "s,^%where:\=\\%\\,,g" -e "s,^\(.*\)$, File \"${ECLDIR}\\\1\",g" >> %dest%
-DIR /B /A:D | sed -e "s,^%where:\=\\%\\,,g" -e "s,^\(.*\)$, File /r \"${ECLDIR}\\\1\",g" >> %dest%
-sed -e "1,/!@INSTALLFILES@/d;/!@DELETEFILES@/,$d" %source% >> %dest%
-DIR /B /A:-D | sed -e "/^.*ecl.exe.*$/d" -e "/^.*ecl.nsi.*$/d" -e "s,^%where:\=\\%\\,,g" -e "s,^\(.*\)$, Delete \"$INSTDIR\\\1\",g" >> %dest%
-DIR /B /A:D | sed -e "s,^%where:\=\\%\\,,g" -e "s,^\(.*\)$, RMDir /r \"$INSTDIR\\\1\",g" >> %dest%
-sed -e "1,/!@DELETEFILES@/d" %source% >> %dest%
+type %source%1 | ..\c\cut.exe "@ECLDIR@" "%where%" > %dest%
+dir /s /b /a:-d | ..\c\cut.exe "ecl.exe" "/DELETE/" "ecl.nsi" "/DELETE/" "%where%\\" "" > ../aux_files
+dir /s /b /a:d | ..\c\cut.exe "ecl.exe" "/DELETE/" "ecl.nsi" "/DELETE/" "%where%\\" "" > ../aux_dirs
+echo HOLA
+for /f %%i in (../aux_dirs) do @echo %%i
+for /f %%i in (../aux_dirs) do @echo File /r "${ECLDIR}\%%i" >> %dest%
+for /f %%i in (../aux_files) do @echo File "${ECLDIR}\%%i" >> %dest%
+type %source%2 >> %dest%
+for /f %%i in (../aux_files) do @echo Delete "$INSTDIR\%%i" >> %dest%
+for /f %%i in (../aux_dirs) do @echo RMDir /r "$INSTDIR\%%i" >> %dest%
+type %source%3 >> %dest%
ENDLOCAL
diff --git a/src/CHANGELOG b/src/CHANGELOG
index ab385664f..8737141d4 100644
--- a/src/CHANGELOG
+++ b/src/CHANGELOG
@@ -21,6 +21,9 @@ ECL 0.9g
- Generated C functions now have readable names corresponding to appropriate
Lisp function names (M. Pasternacki)
+ - ECL now compiles with the free Microsoft Visual C++ Toolkit
+ 2003. Instructions are provided on how to do it.
+
* Errors fixed:
- Now .o files compiled with :SYSTEM-P T with dash in filename load
diff --git a/src/c/Makefile.in b/src/c/Makefile.in
index cebb3e5b7..0ab616480 100644
--- a/src/c/Makefile.in
+++ b/src/c/Makefile.in
@@ -92,11 +92,11 @@ clean:
# Build rules
-$(DPP): $(srcdir)/dpp.c symbols_list2.h
+$(DPP): $(srcdir)/dpp.c $(srcdir)/symbols_list2.h
if test -f ../CROSS-DPP; then touch dpp; else \
$(TRUE_CC) @CFLAGS@ @ECL_CFLAGS@ -I../h -I./ -I$(HDIR) $(DEFS) $(srcdir)/dpp.c -o $@ ; \
fi
-symbols_list2.h: $(srcdir)/symbols_list.h Makefile
+$(srcdir)/symbols_list2.h: $(srcdir)/symbols_list.h Makefile
cat $(srcdir)/symbols_list.h | \
sed -e 's%{\([A-Z ]*.*".*"\),[^,]*,[ ]*NULL,.*}%{\1,NULL}%g' \
-e 's%{\([A-Z ]*.*".*"\),[^,]*,[ ]*\([^,]*\),.*}%{\1,"\2"}%g' \
diff --git a/src/c/dpp.c b/src/c/dpp.c
index e0670b5be..38c42e60d 100644
--- a/src/c/dpp.c
+++ b/src/c/dpp.c
@@ -136,12 +136,14 @@ int nres;
put_lineno(void)
{
static int flag = 0;
+#if 0
if (flag)
fprintf(out, "#line %d\n", lineno);
else {
flag++;
fprintf(out, "#line %d \"%s\"\n", lineno, filename);
}
+#endif
}
error(char *s)
diff --git a/src/c/symbols_list2.h b/src/c/symbols_list2.h
new file mode 100644
index 000000000..0f3f222fc
--- /dev/null
+++ b/src/c/symbols_list2.h
@@ -0,0 +1,1528 @@
+#ifdef ECL_CMU_FORMAT
+# define ECL_NAME_PPRINT(x) ECL_NAME(x)
+#else
+# define ECL_NAME_PPRINT(x) NULL
+#endif
+#ifdef ECL_FINAL
+# define ECL_NAME(x) x
+#else
+# define ECL_NAME(x) NULL
+#endif
+#ifdef DPP
+#define CLOS_ "CLOS::"
+#define EXT_ "EXT::"
+#define SYS_ "SI::"
+#define MP_ "MP::"
+#define KEY_ ":"
+struct {
+ const char *name, *translation;
+}
+#else
+#define CLOS_
+#define EXT_
+#define SYS_
+#define MP_
+#define KEY_
+cl_symbol_initializer
+#endif
+cl_symbols[] = {
+
+{"NIL",NULL},
+{"T",NULL},
+#ifdef CLOS
+{SYS_ "UNBOUND","si_unbound"},
+#else
+{SYS_ "UNBOUND",NULL},
+#endif
+
+/* LISP PACKAGE */
+{"&ALLOW-OTHER-KEYS",NULL},
+{"&AUX",NULL},
+{"&BODY",NULL},
+{"&ENVIRONMENT",NULL},
+{"&KEY",NULL},
+{"&OPTIONAL",NULL},
+{"&REST",NULL},
+{"&WHOLE",NULL},
+{"+","cl_P"},
+{"++",NULL},
+{"+++",NULL},
+{"-","cl_M"},
+{"*","cl_X"},
+{"**",NULL},
+{"***",NULL},
+{"/","cl_N"},
+{"//",NULL},
+{"///",NULL},
+{"/=","cl_NE"},
+{"*BREAK-ON-SIGNALS*",NULL},
+{"*COMPILE-FILE-PATHNAME*",NULL},
+{"*COMPILE-FILE-TRUENAME*",NULL},
+{"*COMPILE-PRINT*",NULL},
+{"*COMPILE-VERBOSE*",NULL},
+{"*DEBUG-IO*",NULL},
+{"*DEBUGGER-HOOK*",NULL},
+{"*DEFAULT-PATHNAME-DEFAULTS*",NULL},
+{"*ERROR-OUTPUT*",NULL},
+{"*FEATURES*",NULL},
+{"*GENSYM-COUNTER*",NULL},
+{"*LOAD-PATHNAME*",NULL},
+{"*LOAD-PRINT*",NULL},
+{"*LOAD-TRUENAME*",NULL},
+{"*LOAD-VERBOSE*",NULL},
+{"*MACROEXPAND-HOOK*",NULL},
+{"*MODULES*",NULL},
+{"*MODULE-PROVIDER-FUNCTIONS*",NULL},
+{"*PACKAGE*",NULL},
+{"*PRINT-ARRAY*",NULL},
+{"*PRINT-BASE*",NULL},
+{"*PRINT-CASE*",NULL},
+{"*PRINT-CIRCLE*",NULL},
+{"*PRINT-ESCAPE*",NULL},
+{"*PRINT-GENSYM*",NULL},
+{"*PRINT-LENGTH*",NULL},
+{"*PRINT-LEVEL*",NULL},
+{"*PRINT-LINES*",NULL},
+{"*PRINT-MISER-WIDTH*",NULL},
+{"*PRINT-PPRINT-DISPATCH*",NULL},
+#if defined(ECL_CMU_FORMAT)
+{"*PRINT-PRETTY*",NULL},
+#else
+{"*PRINT-PRETTY*",NULL},
+#endif
+{"*PRINT-RADIX*",NULL},
+{"*PRINT-READABLY*",NULL},
+{"*PRINT-RIGHT-MARGIN*",NULL},
+{"*QUERY-IO*",NULL},
+{"*RANDOM-STATE*",NULL},
+{"*READ-BASE*",NULL},
+{"*READ-DEFAULT-FLOAT-FORMAT*",NULL},
+{"*READ-EVAL*",NULL},
+{"*READ-SUPPRESS*",NULL},
+{"*READTABLE*",NULL},
+{"*STANDARD-INPUT*",NULL},
+{"*STANDARD-OUTPUT*",NULL},
+{"*TERMINAL-IO*",NULL},
+{"*TRACE-OUTPUT*",NULL},
+{"1+","cl_1P"},
+{"1-","cl_1M"},
+{"<","cl_L"},
+{"<=","cl_LE"},
+{"=","cl_E"},
+{">","cl_G"},
+{">=","cl_GE"},
+{"ABORT",NULL},
+{"ABS","ECL_NAME(cl_abs)"},
+{"ACONS","cl_acons"},
+{"ACOS","ECL_NAME(cl_acos)"},
+{"ACOSH","ECL_NAME(cl_acosh)"},
+{"ADJOIN","cl_adjoin"},
+{"ADJUST-ARRAY","ECL_NAME(cl_adjust_array)"},
+{"ADJUSTABLE-ARRAY-P","cl_adjustable_array_p"},
+{"ALPHA-CHAR-P","cl_alpha_char_p"},
+{"ALPHANUMERICP","cl_alphanumericp"},
+{"AND",NULL},
+{"APPEND","cl_append"},
+{"APPLY","cl_apply"},
+{"APROPOS","ECL_NAME(cl_apropos)"},
+{"APROPOS-LIST","ECL_NAME(cl_apropos_list)"},
+{"AREF","cl_aref"},
+{"ARITHMETIC-ERROR",NULL},
+{"ARITHMETIC-ERROR-OPERANDS",NULL},
+{"ARITHMETIC-ERROR-OPERATION",NULL},
+{"ARRAY",NULL},
+{"ARRAY-DIMENSION","cl_array_dimension"},
+{"ARRAY-DIMENSION-LIMIT",NULL},
+{"ARRAY-DIMENSIONS","ECL_NAME(cl_array_dimensions)"},
+{"ARRAY-DISPLACEMENT","cl_array_displacement"},
+{"ARRAY-ELEMENT-TYPE","cl_array_element_type"},
+{"ARRAY-HAS-FILL-POINTER-P","cl_array_has_fill_pointer_p"},
+{"ARRAY-IN-BOUNDS-P","ECL_NAME(cl_array_in_bounds_p)"},
+{"ARRAY-RANK","cl_array_rank"},
+{"ARRAY-RANK-LIMIT",NULL},
+{"ARRAY-ROW-MAJOR-INDEX","ECL_NAME(cl_array_row_major_index)"},
+{"ARRAY-TOTAL-SIZE","cl_array_total_size"},
+{"ARRAY-TOTAL-SIZE-LIMIT",NULL},
+{"ARRAYP","cl_arrayp"},
+{"ASH","cl_ash"},
+{"ASIN","ECL_NAME(cl_asin)"},
+{"ASINH","ECL_NAME(cl_asinh)"},
+{"ASSERT",NULL},
+{"ASSOC","cl_assoc"},
+{"ASSOC-IF","ECL_NAME(cl_assoc_if)"},
+{"ASSOC-IF-NOT","ECL_NAME(cl_assoc_if_not)"},
+{"ATAN","cl_atan"},
+{"ATANH","ECL_NAME(cl_atanh)"},
+{"ATOM","cl_atom"},
+{"BASE-CHAR",NULL},
+{"BASE-STRING",NULL},
+{"BIGNUM",NULL},
+{"BIT","ECL_NAME(cl_bit)"},
+{"BIT-AND","ECL_NAME(cl_bit_and)"},
+{"BIT-ANDC1","ECL_NAME(cl_bit_andc1)"},
+{"BIT-ANDC2","ECL_NAME(cl_bit_andc2)"},
+{"BIT-EQV","ECL_NAME(cl_bit_eqv)"},
+{"BIT-IOR","ECL_NAME(cl_bit_ior)"},
+{"BIT-NAND","ECL_NAME(cl_bit_nand)"},
+{"BIT-NOR","ECL_NAME(cl_bit_nor)"},
+{"BIT-NOT","ECL_NAME(cl_bit_not)"},
+{"BIT-ORC1","ECL_NAME(cl_bit_orc1)"},
+{"BIT-ORC2","ECL_NAME(cl_bit_orc2)"},
+{"BIT-VECTOR",NULL},
+{"BIT-VECTOR-P","cl_bit_vector_p"},
+{"BIT-XOR","ECL_NAME(cl_bit_xor)"},
+{"BLOCK",NULL},
+{"BOOLE","cl_boole"},
+{"BOOLE-1",NULL},
+{"BOOLE-2",NULL},
+{"BOOLE-AND",NULL},
+{"BOOLE-ANDC1",NULL},
+{"BOOLE-ANDC2",NULL},
+{"BOOLE-C1",NULL},
+{"BOOLE-C2",NULL},
+{"BOOLE-CLR",NULL},
+{"BOOLE-EQV",NULL},
+{"BOOLE-IOR",NULL},
+{"BOOLE-NAND",NULL},
+{"BOOLE-NOR",NULL},
+{"BOOLE-ORC1",NULL},
+{"BOOLE-ORC2",NULL},
+{"BOOLE-SET",NULL},
+{"BOOLE-XOR",NULL},
+{"BOOLEAN",NULL},
+{"BOTH-CASE-P","cl_both_case_p"},
+{"BOUNDP","cl_boundp"},
+{"BREAK",NULL},
+{"BROADCAST-STREAM",NULL},
+{"BROADCAST-STREAM-STREAMS","cl_broadcast_stream_streams"},
+{"BUTLAST","cl_butlast"},
+{"BYTE","ECL_NAME(cl_byte)"},
+{"BYTE-POSITION","ECL_NAME(cl_byte_position)"},
+{"BYTE-SIZE","ECL_NAME(cl_byte_size)"},
+{"CAAAAR","cl_caaaar"},
+{"CAAADR","cl_caaadr"},
+{"CAAAR","cl_caaar"},
+{"CAADAR","cl_caadar"},
+{"CAADDR","cl_caaddr"},
+{"CAADR","cl_caadr"},
+{"CAAR","cl_caar"},
+{"CADAAR","cl_cadaar"},
+{"CADADR","cl_cadadr"},
+{"CADAR","cl_cadar"},
+{"CADDAR","cl_caddar"},
+{"CADDDR","cl_cadddr"},
+{"CADDR","cl_caddr"},
+{"CADR","cl_cadr"},
+{"CALL-ARGUMENTS-LIMIT",NULL},
+{"CAR","cl_car"},
+{"CASE",NULL},
+{"CATCH",NULL},
+{"CCASE",NULL},
+{"CDAAAR","cl_cdaaar"},
+{"CDAADR","cl_cdaadr"},
+{"CDAAR","cl_cdaar"},
+{"CDADAR","cl_cdadar"},
+{"CDADDR","cl_cdaddr"},
+{"CDADR","cl_cdadr"},
+{"CDAR","cl_cdar"},
+{"CDDAAR","cl_cddaar"},
+{"CDDADR","cl_cddadr"},
+{"CDDAR","cl_cddar"},
+{"CDDDAR","cl_cdddar"},
+{"CDDDDR","cl_cddddr"},
+{"CDDDR","cl_cdddr"},
+{"CDDR","cl_cddr"},
+{"CDR","cl_cdr"},
+{"CEILING","cl_ceiling"},
+{"CELL-ERROR",NULL},
+{"CELL-ERROR-NAME",NULL},
+{"CERROR","cl_cerror"},
+{"CHAR","cl_char"},
+{"CHAR-CODE","cl_char_code"},
+{"CHAR-CODE-LIMIT",NULL},
+{"CHAR-DOWNCASE","cl_char_downcase"},
+{"CHAR-EQUAL","cl_char_equal"},
+{"CHAR-GREATERP","cl_char_greaterp"},
+{"CHAR-INT","cl_char_int"},
+{"CHAR-LESSP","cl_char_lessp"},
+{"CHAR-NAME","cl_char_name"},
+{"CHAR-NOT-EQUAL","cl_char_not_equal"},
+{"CHAR-NOT-GREATERP","cl_char_not_greaterp"},
+{"CHAR-NOT-LESSP","cl_char_not_lessp"},
+{"CHAR-UPCASE","cl_char_upcase"},
+{"CHAR/=","cl_charNE"},
+{"CHAR<","cl_charL"},
+{"CHAR<=","cl_charLE"},
+{"CHAR=","cl_charE"},
+{"CHAR>","cl_charG"},
+{"CHAR>=","cl_charGE"},
+{"CHARACTER","cl_character"},
+{"CHARACTERP","cl_characterp"},
+{"CHECK-TYPE",NULL},
+{"CIS","ECL_NAME(cl_cis)"},
+{"CLEAR-INPUT","cl_clear_input"},
+{"CLEAR-OUTPUT","cl_clear_output"},
+{"CLOSE","cl_close"},
+{"CLRHASH","cl_clrhash"},
+{"CODE-CHAR","cl_code_char"},
+{"COERCE","ECL_NAME(cl_coerce)"},
+{"COMPILATION-SPEED",NULL},
+{"COMPILE",NULL},
+{"COMPILE-FILE",NULL},
+{"COMPILE-FILE-PATHNAME",NULL},
+{"COMPILED-FUNCTION",NULL},
+{"COMPILED-FUNCTION-P","cl_compiled_function_p"},
+{"COMPILER-MACRO",NULL},
+{"COMPILER-MACRO-FUNCTION",NULL},
+{"COMPLEMENT",NULL},
+{"COMPLEX","cl_complex"},
+{"COMPLEXP","cl_complexp"},
+{"COMPUTE-RESTARTS",NULL},
+{"CONCATENATE","ECL_NAME(cl_concatenate)"},
+{"CONCATENATED-STREAM",NULL},
+{"CONCATENATED-STREAM-STREAMS","cl_concatenated_stream_streams"},
+{"COND",NULL},
+{"CONDITION",NULL},
+{"CONJUGATE","cl_conjugate"},
+{"CONTINUE",NULL},
+{"CONS","cl_cons"},
+{"CONSP","cl_consp"},
+{"CONSTANTLY","ECL_NAME(cl_constantly)"},
+{"CONSTANTP","cl_constantp"},
+{"CONTROL-ERROR",NULL},
+{"COPY-ALIST","cl_copy_alist"},
+{"COPY-LIST","cl_copy_list"},
+{"COPY-PPRINT-DISPATCH","ECL_NAME_PPRINT(cl_copy_pprint_dispatch)"},
+{"COPY-READTABLE","cl_copy_readtable"},
+{"COPY-SEQ","cl_copy_seq"},
+{"COPY-STRUCTURE","cl_copy_structure"},
+{"COPY-SYMBOL","cl_copy_symbol"},
+{"COPY-TREE","cl_copy_tree"},
+{"COS","cl_cos"},
+{"COSH","cl_cosh"},
+{"COUNT","ECL_NAME(cl_count)"},
+{"COUNT-IF","ECL_NAME(cl_count_if)"},
+{"COUNT-IF-NOT","ECL_NAME(cl_count_if_not)"},
+{"CTYPECASE",NULL},
+{"DEBUG",NULL},
+{"DECF",NULL},
+{"DECLAIM",NULL},
+{"DECLARATION",NULL},
+{"DECLARE",NULL},
+{"DECODE-FLOAT","cl_decode_float"},
+{"DECODE-UNIVERSAL-TIME","ECL_NAME(cl_decode_universal_time)"},
+{"DEFCONSTANT",NULL},
+{"DEFINE-CONDITION",NULL},
+{"DEFINE-COMPILER-MACRO",NULL},
+{"DEFINE-MODIFY-MACRO",NULL},
+{"DEFINE-SETF-EXPANDER",NULL},
+{"DEFINE-SYMBOL-MACRO",NULL},
+{"DEFMACRO",NULL},
+{"DEFPACKAGE",NULL},
+{"DEFPARAMETER",NULL},
+{"DEFSETF",NULL},
+{"DEFSTRUCT",NULL},
+{"DEFTYPE",NULL},
+{"DEFUN",NULL},
+{"DEFVAR",NULL},
+{"DELETE","ECL_NAME(cl_delete)"},
+{"DELETE-DUPLICATES","ECL_NAME(cl_delete_duplicates)"},
+{"DELETE-FILE","cl_delete_file"},
+{"DELETE-IF","ECL_NAME(cl_delete_if)"},
+{"DELETE-IF-NOT","ECL_NAME(cl_delete_if_not)"},
+{"DELETE-PACKAGE","cl_delete_package"},
+{"DENOMINATOR","cl_denominator"},
+{"DEPOSIT-FIELD","ECL_NAME(cl_deposit_field)"},
+{"DESCRIBE",NULL},
+{"DESTRUCTURING-BIND",NULL},
+{"DIGIT-CHAR","cl_digit_char"},
+{"DIGIT-CHAR-P","cl_digit_char_p"},
+{"DIRECTORY","cl_directory"},
+{"DIRECTORY-NAMESTRING","cl_directory_namestring"},
+{"DISASSEMBLE",NULL},
+{"DIVISION-BY-ZERO",NULL},
+{"DO",NULL},
+{"DO*",NULL},
+{"DO-ALL-SYMBOLS",NULL},
+{"DO-EXTERNAL-SYMBOLS",NULL},
+{"DO-SYMBOLS",NULL},
+{"DOCUMENTATION",NULL},
+{"DOLIST",NULL},
+{"DOTIMES",NULL},
+{"DOUBLE-FLOAT",NULL},
+{"DOUBLE-FLOAT-EPSILON",NULL},
+{"DOUBLE-FLOAT-NEGATIVE-EPSILON",NULL},
+{"DPB","ECL_NAME(cl_dpb)"},
+{"DRIBBLE",NULL},
+{"DYNAMIC-EXTENT",NULL},
+{"ECASE",NULL},
+{"ECHO-STREAM",NULL},
+{"ECHO-STREAM-INPUT-STREAM","cl_echo_stream_input_stream"},
+{"ECHO-STREAM-OUTPUT-STREAM","cl_echo_stream_output_stream"},
+{"ED",NULL},
+{"EIGHTH","cl_eighth"},
+{"ELT","cl_elt"},
+{"ENCODE-UNIVERSAL-TIME","ECL_NAME(cl_encode_universal_time)"},
+{"END-OF-FILE",NULL},
+{"ENDP","cl_endp"},
+{"ENOUGH-NAMESTRING","cl_enough_namestring"},
+{"ENSURE-DIRECTORIES-EXIST","ECL_NAME(cl_ensure_directories_exist)"},
+{"EQ","cl_eq"},
+{"EQL","cl_eql"},
+{"EQUAL","cl_equal"},
+{"EQUALP","cl_equalp"},
+{"ERROR","cl_error"},
+{"ETYPECASE",NULL},
+{"EVAL","cl_eval"},
+{"EVAL-WHEN",NULL},
+{"EVENP","cl_evenp"},
+{"EVERY","ECL_NAME(cl_every)"},
+{"EXP","cl_exp"},
+{"EXPORT","cl_export"},
+{"EXPT","cl_expt"},
+{"EXTENDED-CHAR",NULL},
+{"FBOUNDP","cl_fboundp"},
+{"FCEILING","ECL_NAME(cl_fceiling)"},
+{"FDEFINITION","cl_fdefinition"},
+{"FFLOOR","ECL_NAME(cl_ffloor)"},
+{"FIFTH","cl_fifth"},
+{"FILE-AUTHOR","cl_file_author"},
+{"FILE-ERROR",NULL},
+{"FILE-ERROR-PATHNAME",NULL},
+{"FILE-LENGTH","cl_file_length"},
+{"FILE-NAMESTRING","cl_file_namestring"},
+{"FILE-POSITION","cl_file_position"},
+{"FILE-STREAM",NULL},
+{"FILE-STRING-LENGTH","cl_file_string_length"},
+{"FILE-WRITE-DATE","cl_file_write_date"},
+{"FILL","ECL_NAME(cl_fill)"},
+{"FILL-POINTER","cl_fill_pointer"},
+{"FIND","ECL_NAME(cl_find)"},
+{"FIND-ALL-SYMBOLS","ECL_NAME(cl_find_all_symbols)"},
+{"FIND-IF","ECL_NAME(cl_find_if)"},
+{"FIND-IF-NOT","ECL_NAME(cl_find_if_not)"},
+{"FIND-PACKAGE","cl_find_package"},
+{"FIND-RESTART",NULL},
+{"FIND-SYMBOL","cl_find_symbol"},
+{"FINISH-OUTPUT","cl_finish_output"},
+{"FIRST","cl_car"},
+{"FIXNUM",NULL},
+{"FLET",NULL},
+{"FLOAT","cl_float"},
+{"FLOAT-DIGITS","cl_float_digits"},
+{"FLOAT-PRECISION","cl_float_precision"},
+{"FLOAT-RADIX","cl_float_radix"},
+{"FLOAT-SIGN","cl_float_sign"},
+{"FLOATING-POINT-INEXACT",NULL},
+{"FLOATING-POINT-INVALID-OPERATION",NULL},
+{"FLOATING-POINT-OVERFLOW",NULL},
+{"FLOATING-POINT-UNDERFLOW",NULL},
+{"FLOATP","cl_floatp"},
+{"FLOOR","cl_floor"},
+{"FMAKUNBOUND","cl_fmakunbound"},
+{"FORCE-OUTPUT","cl_force_output"},
+{"FORMAT","cl_format"},
+{"FORMATTER",NULL},
+{"FOURTH","cl_cadddr"},
+{"FRESH-LINE","cl_fresh_line"},
+{"FROUND","ECL_NAME(cl_fround)"},
+{"FTRUNCATE","ECL_NAME(cl_ftruncate)"},
+{"FTYPE",NULL},
+{"FUNCALL","cl_funcall"},
+{"FUNCTION-LAMBDA-EXPRESSION","cl_function_lambda_expression"},
+{"FUNCTION",NULL},
+{"FUNCTION-KEYWORDS",NULL},
+{"FUNCTIONP","cl_functionp"},
+{"GCD","cl_gcd"},
+{"GENSYM","cl_gensym"},
+{"GENTEMP","cl_gentemp"},
+{"GET","cl_get"},
+{"GET-DECODED-TIME","ECL_NAME(cl_get_decoded_time)"},
+{"GET-DISPATCH-MACRO-CHARACTER","cl_get_dispatch_macro_character"},
+{"GET-INTERNAL-REAL-TIME","cl_get_internal_real_time"},
+{"GET-INTERNAL-RUN-TIME","cl_get_internal_run_time"},
+{"GET-MACRO-CHARACTER","cl_get_macro_character"},
+{"GET-OUTPUT-STREAM-STRING","cl_get_output_stream_string"},
+{"GET-PROPERTIES","cl_get_properties"},
+{"GET-SETF-EXPANSION",NULL},
+{"GET-UNIVERSAL-TIME","cl_get_universal_time"},
+{"GETF","cl_getf"},
+{"GETHASH","cl_gethash"},
+{"GO",NULL},
+{"GRAPHIC-CHAR-P","cl_graphic_char_p"},
+{"HANDLER-CASE",NULL},
+{"HANDLER-BIND",NULL},
+{"HASH-TABLE",NULL},
+{"HASH-TABLE-COUNT","cl_hash_table_count"},
+{"HASH-TABLE-P","cl_hash_table_p"},
+{"HASH-TABLE-REHASH-SIZE","cl_hash_table_rehash_size"},
+{"HASH-TABLE-REHASH-THRESHOLD","cl_hash_table_rehash_threshold"},
+{"HASH-TABLE-SIZE","cl_hash_table_size"},
+{"HASH-TABLE-TEST","cl_hash_table_test"},
+{"HOST-NAMESTRING","cl_host_namestring"},
+{"IDENTITY","cl_identity"},
+{"IGNORABLE",NULL},
+{"IGNORE",NULL},
+{"IGNORE-ERRORS",NULL},
+{"IMAGPART","cl_imagpart"},
+{"IMPORT","cl_import"},
+{"IN-PACKAGE",NULL},
+{"INCF",NULL},
+{"INLINE",NULL},
+{"INPUT-STREAM-P","cl_input_stream_p"},
+{"INSPECT",NULL},
+{"INTEGER",NULL},
+{"INTEGER-DECODE-FLOAT","cl_integer_decode_float"},
+{"INTEGER-LENGTH","cl_integer_length"},
+{"INTEGERP","cl_integerp"},
+{"INTERACTIVE-STREAM-P","cl_interactive_stream_p"},
+{"INTERN","cl_intern"},
+{"INTERNAL-TIME-UNITS-PER-SECOND",NULL},
+{"INTERSECTION","ECL_NAME(cl_intersection)"},
+{"INVOKE-DEBUGGER",NULL},
+{"INVOKE-RESTART",NULL},
+{"INVOKE-RESTART-INTERACTIVELY",NULL},
+{"ISQRT","ECL_NAME(cl_isqrt)"},
+{"KEYWORD",NULL},
+{"KEYWORDP","cl_keywordp"},
+{"LABELS",NULL},
+{"LAMBDA",NULL},
+{"LAMBDA-LIST-KEYWORDS",NULL},
+{"LAMBDA-PARAMETERS-LIMIT",NULL},
+{"LAST","cl_last"},
+{"LCM","cl_lcm"},
+{"LDB","ECL_NAME(cl_ldb)"},
+{"LDB-TEST","ECL_NAME(cl_ldb_test)"},
+{"LDIFF","cl_ldiff"},
+{"LEAST-NEGATIVE-DOUBLE-FLOAT",NULL},
+{"LEAST-NEGATIVE-LONG-FLOAT",NULL},
+{"LEAST-NEGATIVE-NORMALIZED-DOUBLE-FLOAT",NULL},
+{"LEAST-NEGATIVE-NORMALIZED-LONG-FLOAT",NULL},
+{"LEAST-NEGATIVE-NORMALIZED-SHORT-FLOAT",NULL},
+{"LEAST-NEGATIVE-NORMALIZED-SINGLE-FLOAT",NULL},
+{"LEAST-NEGATIVE-SHORT-FLOAT",NULL},
+{"LEAST-NEGATIVE-SINGLE-FLOAT",NULL},
+{"LEAST-POSITIVE-DOUBLE-FLOAT",NULL},
+{"LEAST-POSITIVE-LONG-FLOAT",NULL},
+{"LEAST-POSITIVE-NORMALIZED-DOUBLE-FLOAT",NULL},
+{"LEAST-POSITIVE-NORMALIZED-LONG-FLOAT",NULL},
+{"LEAST-POSITIVE-NORMALIZED-SHORT-FLOAT",NULL},
+{"LEAST-POSITIVE-NORMALIZED-SINGLE-FLOAT",NULL},
+{"LEAST-POSITIVE-SHORT-FLOAT",NULL},
+{"LEAST-POSITIVE-SINGLE-FLOAT",NULL},
+{"LENGTH","cl_length"},
+{"LET",NULL},
+{"LET*",NULL},
+{"LISP-IMPLEMENTATION-TYPE",NULL},
+{"LISP-IMPLEMENTATION-VERSION",NULL},
+{"LIST","cl_list"},
+{"LIST*","cl_listX"},
+{"LIST-ALL-PACKAGES","cl_list_all_packages"},
+{"LIST-LENGTH","cl_list_length"},
+{"LISTEN","cl_listen"},
+{"LISTP","cl_listp"},
+{"LOAD","cl_load"},
+{"LOAD-LOGICAL-PATHNAME-TRANSLATIONS","ECL_NAME(cl_load_logical_pathname_translations)"},
+{"LOAD-TIME-VALUE",NULL},
+{"LOCALLY",NULL},
+{"LOG","cl_log"},
+{"LOGAND","cl_logand"},
+{"LOGANDC1","cl_logandc1"},
+{"LOGANDC2","cl_logandc2"},
+{"LOGBITP","cl_logbitp"},
+{"LOGCOUNT","cl_logcount"},
+{"LOGEQV","cl_logeqv"},
+{"LOGICAL-PATHNAME","cl_logical_pathname"},
+{"LOGICAL-PATHNAME-TRANSLATIONS","ECL_NAME(cl_logical_pathname_translations)"},
+{"LOGIOR","cl_logior"},
+{"LOGNAND","cl_lognand"},
+{"LOGNOR","cl_lognor"},
+{"LOGNOT","cl_lognot"},
+{"LOGORC1","cl_logorc1"},
+{"LOGORC2","cl_logorc2"},
+{"LOGTEST","ECL_NAME(cl_logtest)"},
+{"LOGXOR","cl_logxor"},
+{"LONG-FLOAT",NULL},
+{"LONG-FLOAT-EPSILON",NULL},
+{"LONG-FLOAT-NEGATIVE-EPSILON",NULL},
+{"LONG-SITE-NAME",NULL},
+{"LOOP",NULL},
+{"LOOP-FINISH",NULL},
+{"LOWER-CASE-P","cl_lower_case_p"},
+{"MACHINE-INSTANCE",NULL},
+{"MACHINE-TYPE",NULL},
+{"MACHINE-VERSION",NULL},
+{"MACRO-FUNCTION","cl_macro_function"},
+{"MACROEXPAND","cl_macroexpand"},
+{"MACROEXPAND-1","cl_macroexpand_1"},
+{"MACROLET",NULL},
+{"MAKE-ARRAY","ECL_NAME(cl_make_array)"},
+{"MAKE-BROADCAST-STREAM","cl_make_broadcast_stream"},
+{"MAKE-CONDITION",NULL},
+{"MAKE-CONCATENATED-STREAM","cl_make_concatenated_stream"},
+{"MAKE-DISPATCH-MACRO-CHARACTER","cl_make_dispatch_macro_character"},
+{"MAKE-ECHO-STREAM","cl_make_echo_stream"},
+{"MAKE-HASH-TABLE","cl_make_hash_table"},
+{"MAKE-LIST","cl_make_list"},
+{"MAKE-PACKAGE","cl_make_package"},
+{"MAKE-PATHNAME","cl_make_pathname"},
+{"MAKE-RANDOM-STATE","cl_make_random_state"},
+{"MAKE-SEQUENCE","ECL_NAME(cl_make_sequence)"},
+{"MAKE-STRING","cl_make_string"},
+{"MAKE-STRING-INPUT-STREAM","cl_make_string_input_stream"},
+{"MAKE-STRING-OUTPUT-STREAM","cl_make_string_output_stream"},
+{"MAKE-SYMBOL","cl_make_symbol"},
+{"MAKE-SYNONYM-STREAM","cl_make_synonym_stream"},
+{"MAKE-TWO-WAY-STREAM","cl_make_two_way_stream"},
+{"MAKUNBOUND","cl_makunbound"},
+{"MAP","ECL_NAME(cl_map)"},
+{"MAP-INTO","ECL_NAME(cl_map_into)"},
+{"MAPC","cl_mapc"},
+{"MAPCAN","cl_mapcan"},
+{"MAPCAR","cl_mapcar"},
+{"MAPCON","cl_mapcon"},
+{"MAPHASH","cl_maphash"},
+{"MAPL","cl_mapl"},
+{"MAPLIST","cl_maplist"},
+{"MASK-FIELD","ECL_NAME(cl_mask_field)"},
+{"MAX","cl_max"},
+{"MEMBER","cl_member"},
+{"MEMBER-IF","ECL_NAME(cl_member_if)"},
+{"MEMBER-IF-NOT","ECL_NAME(cl_member_if_not)"},
+{"MERGE","ECL_NAME(cl_merge)"},
+{"MERGE-PATHNAMES","cl_merge_pathnames"},
+{"MIN","cl_min"},
+{"MINUSP","cl_minusp"},
+{"MISMATCH","ECL_NAME(cl_mismatch)"},
+{"MOD","cl_mod"},
+{"MOST-NEGATIVE-DOUBLE-FLOAT",NULL},
+{"MOST-NEGATIVE-FIXNUM",NULL},
+{"MOST-NEGATIVE-LONG-FLOAT",NULL},
+{"MOST-NEGATIVE-SHORT-FLOAT",NULL},
+{"MOST-NEGATIVE-SINGLE-FLOAT",NULL},
+{"MOST-POSITIVE-DOUBLE-FLOAT",NULL},
+{"MOST-POSITIVE-FIXNUM",NULL},
+{"MOST-POSITIVE-LONG-FLOAT",NULL},
+{"MOST-POSITIVE-SHORT-FLOAT",NULL},
+{"MOST-POSITIVE-SINGLE-FLOAT",NULL},
+{"MUFFLE-WARNING",NULL},
+{"MULTIPLE-VALUE-BIND",NULL},
+{"MULTIPLE-VALUE-CALL",NULL},
+{"MULTIPLE-VALUE-LIST",NULL},
+{"MULTIPLE-VALUE-PROG1",NULL},
+{"MULTIPLE-VALUE-SETQ",NULL},
+{"MULTIPLE-VALUES-LIMIT",NULL},
+{"NAME-CHAR","cl_name_char"},
+{"NAMESTRING","cl_namestring"},
+{"NBUTLAST","cl_nbutlast"},
+{"NCONC","cl_nconc"},
+{"NINTERSECTION","ECL_NAME(cl_nintersection)"},
+{"NINTH","cl_ninth"},
+{"NOT","cl_not"},
+{"NOTANY","ECL_NAME(cl_notany)"},
+{"NOTEVERY","ECL_NAME(cl_notevery)"},
+{"NOTINLINE",NULL},
+{"NRECONC","cl_nreconc"},
+{"NREVERSE","cl_nreverse"},
+{"NSET-DIFFERENCE","ECL_NAME(cl_nset_difference)"},
+{"NSET-EXCLUSIVE-OR","ECL_NAME(cl_nset_exclusive_or)"},
+{"NSTRING-CAPITALIZE","cl_nstring_capitalize"},
+{"NSTRING-DOWNCASE","cl_nstring_downcase"},
+{"NSTRING-UPCASE","cl_nstring_upcase"},
+{"NSUBLIS","cl_nsublis"},
+{"NSUBST","cl_nsubst"},
+{"NSUBST-IF","ECL_NAME(cl_nsubst_if)"},
+{"NSUBST-IF-NOT","ECL_NAME(cl_nsubst_if_not)"},
+{"NSUBSTITUTE","ECL_NAME(cl_nsubstitute)"},
+{"NSUBSTITUTE-IF","ECL_NAME(cl_nsubstitute_if)"},
+{"NSUBSTITUTE-IF-NOT","ECL_NAME(cl_nsubstitute_if_not)"},
+{"NTH","cl_nth"},
+{"NTH-VALUE",NULL},
+{"NTHCDR","cl_nthcdr"},
+{"NULL","cl_null"},
+{"NUMBER",NULL},
+{"NUMBERP","cl_numberp"},
+{"NUMERATOR","cl_numerator"},
+{"NUNION","ECL_NAME(cl_nunion)"},
+{"ODDP","cl_oddp"},
+{"OPEN","cl_open"},
+{"OPEN-STREAM-P","cl_open_stream_p"},
+{"OPTIMIZE",NULL},
+{"OR",NULL},
+{"OTHERWISE",NULL},
+{"OUTPUT-STREAM-P","cl_output_stream_p"},
+{"PACKAGE",NULL},
+{"PACKAGE-ERROR",NULL},
+{"PACKAGE-ERROR-PACKAGE",NULL},
+{"PACKAGE-NAME","cl_package_name"},
+{"PACKAGE-NICKNAMES","cl_package_nicknames"},
+{"PACKAGE-SHADOWING-SYMBOLS","cl_package_shadowing_symbols"},
+{"PACKAGE-USE-LIST","cl_package_use_list"},
+{"PACKAGE-USED-BY-LIST","cl_package_used_by_list"},
+{"PACKAGEP","cl_packagep"},
+{"PAIRLIS","cl_pairlis"},
+{"PARSE-ERROR",NULL},
+{"PARSE-INTEGER","cl_parse_integer"},
+{"PARSE-NAMESTRING","cl_parse_namestring"},
+{"PATHNAME","cl_pathname"},
+{"PATHNAME-DEVICE","cl_pathname_device"},
+{"PATHNAME-DIRECTORY","cl_pathname_directory"},
+{"PATHNAME-HOST","cl_pathname_host"},
+{"PATHNAME-MATCH-P","cl_pathname_match_p"},
+{"PATHNAME-NAME","cl_pathname_name"},
+{"PATHNAME-TYPE","cl_pathname_type"},
+{"PATHNAME-VERSION","cl_pathname_version"},
+{"PATHNAMEP","cl_pathnamep"},
+{"PEEK-CHAR","cl_peek_char"},
+{"PHASE","ECL_NAME(cl_phase)"},
+{"PI",NULL},
+{"PLUSP","cl_plusp"},
+{"POP",NULL},
+{"POSITION","ECL_NAME(cl_position)"},
+{"POSITION-IF","ECL_NAME(cl_position_if)"},
+{"POSITION-IF-NOT","ECL_NAME(cl_position_if_not)"},
+{"PPRINT","cl_pprint"},
+{"PPRINT-DISPATCH","ECL_NAME_PPRINT(cl_pprint_dispatch)"},
+{"PPRINT-EXIT-IF-LIST-EXHAUSTED",NULL},
+{"PPRINT-FILL","ECL_NAME_PPRINT(cl_pprint_fill)"},
+{"PPRINT-INDENT","ECL_NAME_PPRINT(cl_pprint_indent)"},
+{"PPRINT-LINEAR","ECL_NAME_PPRINT(cl_pprint_linear)"},
+{"PPRINT-LOGICAL-BLOCK",NULL},
+{"PPRINT-NEWLINE","ECL_NAME_PPRINT(cl_pprint_newline)"},
+{"PPRINT-POP",NULL},
+{"PPRINT-TAB","ECL_NAME_PPRINT(cl_pprint_tab)"},
+{"PPRINT-TABULAR","ECL_NAME_PPRINT(cl_pprint_tabular)"},
+{"PRIN1","cl_prin1"},
+{"PRIN1-TO-STRING","ECL_NAME(cl_prin1_to_string)"},
+{"PRINC","cl_princ"},
+{"PRINC-TO-STRING","ECL_NAME(cl_princ_to_string)"},
+{"PRINT","cl_print"},
+{"PRINT-NOT-READABLE",NULL},
+{"PRINT-NOT-READABLE-OBJECT",NULL},
+{"PROBE-FILE","cl_probe_file"},
+{"PROCLAIM",NULL},
+{"PROG",NULL},
+{"PROG*",NULL},
+{"PROG1",NULL},
+{"PROG2",NULL},
+{"PROGN",NULL},
+{"PROGRAM-ERROR",NULL},
+{"PROGV",NULL},
+{"PROVIDE","ECL_NAME(cl_provide)"},
+{"PSETF",NULL},
+{"PSETQ",NULL},
+{"PUSH",NULL},
+{"PUSHNEW",NULL},
+{"QUOTE",NULL},
+{"RANDOM","cl_random"},
+{"RANDOM-STATE",NULL},
+{"RANDOM-STATE-P","cl_random_state_p"},
+{"RASSOC","cl_rassoc"},
+{"RASSOC-IF","ECL_NAME(cl_rassoc_if)"},
+{"RASSOC-IF-NOT","ECL_NAME(cl_rassoc_if_not)"},
+{"RATIO",NULL},
+{"RATIONAL","cl_rational"},
+{"RATIONALIZE","cl_rationalize"},
+{"RATIONALP","cl_rationalp"},
+{"READ","cl_read"},
+{"READ-BYTE","cl_read_byte"},
+{"READ-CHAR","cl_read_char"},
+{"READ-CHAR-NO-HANG","cl_read_char_no_hang"},
+{"READ-DELIMITED-LIST","cl_read_delimited_list"},
+{"READ-FROM-STRING","ECL_NAME(cl_read_from_string)"},
+{"READ-LINE","cl_read_line"},
+{"READ-PRESERVING-WHITESPACE","cl_read_preserving_whitespace"},
+{"READ-SEQUENCE","cl_read_sequence"},
+{"READER-ERROR",NULL},
+{"READTABLE",NULL},
+{"READTABLE-CASE","cl_readtable_case"},
+{"READTABLEP","cl_readtablep"},
+{"REAL",NULL},
+{"REALP","cl_realp"},
+{"REALPART","cl_realpart"},
+{"REDUCE","ECL_NAME(cl_reduce)"},
+{"REM","cl_rem"},
+{"REMF",NULL},
+{"REMHASH","cl_remhash"},
+{"REMOVE","ECL_NAME(cl_remove)"},
+{"REMOVE-DUPLICATES","ECL_NAME(cl_remove_duplicates)"},
+{"REMOVE-IF","ECL_NAME(cl_remove_if)"},
+{"REMOVE-IF-NOT","ECL_NAME(cl_remove_if_not)"},
+{"REMPROP","cl_remprop"},
+{"RENAME-FILE","cl_rename_file"},
+{"RENAME-PACKAGE","cl_rename_package"},
+{"REPLACE","ECL_NAME(cl_replace)"},
+{"REQUIRE","ECL_NAME(cl_require)"},
+{"REST","cl_cdr"},
+{"RESTART",NULL},
+{"RESTART-BIND",NULL},
+{"RESTART-CASE",NULL},
+{"RESTART-NAME",NULL},
+{"RETURN",NULL},
+{"RETURN-FROM",NULL},
+{"REVAPPEND","cl_revappend"},
+{"REVERSE","cl_reverse"},
+{"ROOM",NULL},
+{"ROTATEF",NULL},
+{"ROUND","cl_round"},
+{"ROW-MAJOR-AREF","cl_row_major_aref"},
+{"RPLACA","cl_rplaca"},
+{"RPLACD","cl_rplacd"},
+{"SAFETY",NULL},
+{"SATISFIES",NULL},
+{"SBIT","ECL_NAME(cl_sbit)"},
+{"SCALE-FLOAT","cl_scale_float"},
+{"SCHAR","cl_char"},
+{"SEARCH","ECL_NAME(cl_search)"},
+{"SECOND","cl_cadr"},
+{"SEQUENCE",NULL},
+{"SERIOUS-CONDITION",NULL},
+{"SET","cl_set"},
+{"SET-DIFFERENCE","ECL_NAME(cl_set_difference)"},
+{"SET-DISPATCH-MACRO-CHARACTER","cl_set_dispatch_macro_character"},
+{"SET-EXCLUSIVE-OR","ECL_NAME(cl_set_exclusive_or)"},
+{"SET-MACRO-CHARACTER","cl_set_macro_character"},
+{"SET-PPRINT-DISPATCH","ECL_NAME_PPRINT(cl_set_pprint_dispatch)"},
+{"SET-SYNTAX-FROM-CHAR","cl_set_syntax_from_char"},
+{"SETF",NULL},
+{"SETQ",NULL},
+{"SEVENTH","cl_seventh"},
+{"SHADOW","cl_shadow"},
+{"SHADOWING-IMPORT","cl_shadowing_import"},
+{"SHIFTF",NULL},
+{"SHORT-FLOAT",NULL},
+{"SHORT-FLOAT-EPSILON",NULL},
+{"SHORT-FLOAT-NEGATIVE-EPSILON",NULL},
+{"SHORT-SITE-NAME",NULL},
+{"SIGNAL",NULL},
+{"SIGNED-BYTE",NULL},
+{"SIGNUM","ECL_NAME(cl_signum)"},
+{"SIMPLE-ARRAY",NULL},
+{"SIMPLE-BASE-STRING",NULL},
+{"SIMPLE-BIT-VECTOR",NULL},
+{"SIMPLE-BIT-VECTOR-P","cl_simple_bit_vector_p"},
+{"SIMPLE-CONDITION",NULL},
+{"SIMPLE-CONDITION-FORMAT-CONTROL",NULL},
+{"SIMPLE-CONDITION-FORMAT-ARGUMENTS",NULL},
+{"SIMPLE-ERROR",NULL},
+{"SIMPLE-STRING",NULL},
+{"SIMPLE-STRING-P","cl_simple_string_p"},
+{"SIMPLE-TYPE-ERROR",NULL},
+{"SIMPLE-VECTOR",NULL},
+{"SIMPLE-VECTOR-P","cl_simple_vector_p"},
+{"SIMPLE-WARNING",NULL},
+{"SIN","cl_sin"},
+{"SINGLE-FLOAT",NULL},
+{"SINGLE-FLOAT-EPSILON",NULL},
+{"SINGLE-FLOAT-NEGATIVE-EPSILON",NULL},
+{"SINH","cl_sinh"},
+{"SIXTH","cl_sixth"},
+{"SLEEP","cl_sleep"},
+{"SOFTWARE-TYPE",NULL},
+{"SOFTWARE-VERSION",NULL},
+{"SOME","ECL_NAME(cl_some)"},
+{"SORT","ECL_NAME(cl_sort)"},
+{"SPACE",NULL},
+{"SPECIAL",NULL},
+{"SPECIAL-OPERATOR-P","cl_special_operator_p"},
+{"SPEED",NULL},
+{"SQRT","cl_sqrt"},
+{"STABLE-SORT","ECL_NAME(cl_stable_sort)"},
+{"STANDARD-CHAR",NULL},
+{"STANDARD-CHAR-P","cl_standard_char_p"},
+{"STEP",NULL},
+{"STORAGE-CONDITION",NULL},
+{"STORE-VALUE",NULL},
+{"STREAM",NULL},
+{"STREAM-ELEMENT-TYPE","cl_stream_element_type"},
+{"STREAM-ERROR",NULL},
+{"STREAM-ERROR-STREAM",NULL},
+{"STREAM-EXTERNAL-FORMAT","cl_stream_external_format"},
+{"STREAMP","cl_streamp"},
+{"STRING","cl_string"},
+{"STRING-CAPITALIZE","cl_string_capitalize"},
+{"STRING-DOWNCASE","cl_string_downcase"},
+{"STRING-EQUAL","cl_string_equal"},
+{"STRING-GREATERP","cl_string_greaterp"},
+{"STRING-LEFT-TRIM","cl_string_left_trim"},
+{"STRING-LESSP","cl_string_lessp"},
+{"STRING-NOT-EQUAL","cl_string_not_equal"},
+{"STRING-NOT-GREATERP","cl_string_not_greaterp"},
+{"STRING-NOT-LESSP","cl_string_not_lessp"},
+{"STRING-RIGHT-TRIM","cl_string_right_trim"},
+{"STRING-STREAM",NULL},
+{"STRING-TRIM","cl_string_trim"},
+{"STRING-UPCASE","cl_string_upcase"},
+{"STRING/=","cl_stringNE"},
+{"STRING<","cl_stringL"},
+{"STRING<=","cl_stringLE"},
+{"STRING=","cl_stringE"},
+{"STRING>","cl_stringG"},
+{"STRING>=","cl_stringGE"},
+{"STRINGP","cl_stringp"},
+{"STRUCTURE",NULL},
+{"STYLE-WARNING",NULL},
+{"SUBLIS","cl_sublis"},
+{"SUBSEQ","cl_subseq"},
+{"SUBSETP","ECL_NAME(cl_subsetp)"},
+{"SUBST","cl_subst"},
+{"SUBST-IF","ECL_NAME(cl_subst_if)"},
+{"SUBST-IF-NOT","ECL_NAME(cl_subst_if_not)"},
+{"SUBSTITUTE","ECL_NAME(cl_substitute)"},
+{"SUBSTITUTE-IF","ECL_NAME(cl_substitute_if)"},
+{"SUBSTITUTE-IF-NOT","ECL_NAME(cl_substitute_if_not)"},
+{"SUBTYPEP","ECL_NAME(cl_subtypep)"},
+{"SVREF","cl_svref"},
+{"SXHASH","cl_sxhash"},
+{"SYMBOL",NULL},
+{"SYMBOL-FUNCTION","cl_symbol_function"},
+{"SYMBOL-MACROLET",NULL},
+{"SYMBOL-NAME","cl_symbol_name"},
+{"SYMBOL-PACKAGE","cl_symbol_package"},
+{"SYMBOL-PLIST","cl_symbol_plist"},
+{"SYMBOL-VALUE","cl_symbol_value"},
+{"SYMBOLP","cl_symbolp"},
+{"SYNONYM-STREAM",NULL},
+{"SYNONYM-STREAM-SYMBOL","cl_synonym_stream_symbol"},
+{"TAGBODY",NULL},
+{"TAILP","cl_tailp"},
+{"TAN","cl_tan"},
+{"TANH","cl_tanh"},
+{"TENTH","cl_tenth"},
+{"TERPRI","cl_terpri"},
+{"THE",NULL},
+{"THIRD","cl_caddr"},
+{"THROW",NULL},
+{"TIME",NULL},
+{"TRACE",NULL},
+{"TRANSLATE-LOGICAL-PATHNAME","cl_translate_logical_pathname"},
+{"TRANSLATE-PATHNAME","cl_translate_pathname"},
+{"TREE-EQUAL","cl_tree_equal"},
+{"TRUENAME","cl_truename"},
+{"TRUNCATE","cl_truncate"},
+{"TWO-WAY-STREAM",NULL},
+{"TWO-WAY-STREAM-INPUT-STREAM","cl_two_way_stream_input_stream"},
+{"TWO-WAY-STREAM-OUTPUT-STREAM","cl_two_way_stream_output_stream"},
+{"TYPE",NULL},
+{"TYPE-ERROR",NULL},
+{"TYPE-ERROR-DATUM",NULL},
+{"TYPE-ERROR-EXPECTED-TYPE",NULL},
+{"TYPE-OF","cl_type_of"},
+{"TYPECASE",NULL},
+{"TYPEP","ECL_NAME(cl_typep)"},
+{"UNBOUND-SLOT",NULL},
+{"UNBOUND-SLOT-INSTANCE",NULL},
+{"UNBOUND-VARIABLE",NULL},
+{"UNDEFINED-FUNCTION",NULL},
+{"UNEXPORT","cl_unexport"},
+{"UNINTERN","cl_unintern"},
+{"UNION","ECL_NAME(cl_union)"},
+{"UNLESS",NULL},
+{"UNREAD-CHAR","cl_unread_char"},
+{"UNSIGNED-BYTE",NULL},
+{"UNTRACE",NULL},
+{"UNUSE-PACKAGE","cl_unuse_package"},
+{"UNWIND-PROTECT",NULL},
+{"UPGRADED-ARRAY-ELEMENT-TYPE","ECL_NAME(cl_upgraded_array_element_type)"},
+{"UPGRADED-COMPLEX-PART-TYPE","ECL_NAME(cl_upgraded_complex_part_type)"},
+{"UPPER-CASE-P","cl_upper_case_p"},
+{"USE-PACKAGE","cl_use_package"},
+{"USE-VALUE",NULL},
+{"USER-HOMEDIR-PATHNAME","cl_user_homedir_pathname"},
+{"VALUES","cl_values"},
+{"VALUES-LIST","cl_values_list"},
+{"VARIABLE",NULL},
+{"VECTOR","ECL_NAME(cl_vector)"},
+{"VECTOR-POP","ECL_NAME(cl_vector_pop)"},
+{"VECTOR-PUSH","ECL_NAME(cl_vector_push)"},
+{"VECTOR-PUSH-EXTEND","ECL_NAME(cl_vector_push_extend)"},
+{"VECTORP","cl_vectorp"},
+{"WARN",NULL},
+{"WARNING",NULL},
+{"WHEN",NULL},
+{"WILD-PATHNAME-P","cl_wild_pathname_p"},
+{"WITH-COMPILATION-UNIT",NULL},
+{"WITH-CONDITION-RESTARTS",NULL},
+{"WITH-HASH-TABLE-ITERATOR",NULL},
+{"WITH-INPUT-FROM-STRING",NULL},
+{"WITH-OPEN-FILE",NULL},
+{"WITH-OPEN-STREAM",NULL},
+{"WITH-OUTPUT-TO-STRING",NULL},
+{"WITH-PACKAGE-ITERATOR",NULL},
+{"WITH-SIMPLE-RESTART",NULL},
+{"WITH-STANDARD-IO-SYNTAX",NULL},
+{"WRITE","cl_write"},
+{"WRITE-BYTE","cl_write_byte"},
+{"WRITE-CHAR","cl_write_char"},
+{"WRITE-LINE","cl_write_line"},
+{"WRITE-SEQUENCE","cl_write_sequence"},
+{"WRITE-STRING","cl_write_string"},
+{"WRITE-TO-STRING","ECL_NAME(cl_write_to_string)"},
+{"Y-OR-N-P","ECL_NAME(cl_y_or_n_p)"},
+{"YES-OR-NO-P","ECL_NAME(cl_yes_or_no_p)"},
+{"ZEROP","cl_zerop"},
+
+#ifdef CLOS
+{"ALLOCATE-INSTANCE",NULL},
+{"ADD-METHOD",NULL},
+{"BUILT-IN-CLASS",NULL},
+{"CALL-METHOD",NULL},
+{"CALL-NEXT-METHOD",NULL},
+{"CHANGE-CLASS",NULL},
+{"CLASS",NULL},
+{"CLASS-NAME",NULL},
+{"CLASS-OF","cl_class_of"},
+{"COMPUTE-APPLICABLE-METHODS",NULL},
+{"DEFCLASS",NULL},
+{"DEFGENERIC",NULL},
+{"DEFINE-METHOD-COMBINATION",NULL},
+{"DEFMETHOD",NULL},
+{"DESCRIBE-OBJECT",NULL},
+{"ENSURE-GENERIC-FUNCTION",NULL},
+{"FIND-CLASS","cl_find_class"},
+{"FIND-METHOD",NULL},
+{"GENERIC-FUNCTION",NULL},
+{"IF",NULL},
+{"INITIALIZE-INSTANCE",NULL},
+{"INVALID-METHOD-ERROR","ECL_NAME(cl_invalid_method_error)"},
+{"MAKE-INSTANCE",NULL},
+{"MAKE-INSTANCES-OBSOLETE",NULL},
+{"MAKE-LOAD-FORM",NULL},
+{"MAKE-LOAD-FORM-SAVING-SLOTS",NULL},
+{"MAKE-METHOD",NULL},
+{"METHOD",NULL},
+{"METHOD-COMBINATION-ERROR","ECL_NAME(cl_method_combination_error)"},
+{"METHOD-COMBINATION",NULL},
+{"METHOD-QUALIFIERS",NULL},
+{"NEXT-METHOD-P",NULL},
+{"NO-APPLICABLE-METHOD",NULL},
+{"NO-NEXT-METHOD",NULL},
+{"PRINT-OBJECT",NULL},
+{"PRINT-UNREADABLE-OBJECT",NULL},
+{"REINITIALIZE-INSTANCE",NULL},
+{"REMOVE-METHOD",NULL},
+{"SHARED-INITIALIZE",NULL},
+{"SLOT-BOUNDP",NULL},
+{"SLOT-EXISTS-P",NULL},
+{"SLOT-MAKUNBOUND",NULL},
+{"SLOT-MISSING",NULL},
+{"SLOT-UNBOUND",NULL},
+{"SLOT-VALUE",NULL},
+{"STANDARD",NULL},
+{"STANDARD-CLASS",NULL},
+{"STANDARD-GENERIC-FUNCTION",NULL},
+{"STANDARD-METHOD",NULL},
+{"STANDARD-OBJECT",NULL},
+{"STRUCTURE-CLASS",NULL},
+{"STRUCTURE-OBJECT",NULL},
+{"UPDATE-INSTANCE-FOR-DIFFERENT-CLASS",NULL},
+{"UPDATE-INSTANCE-FOR-REDEFINED-CLASS",NULL},
+{"WITH-ACCESSORS",NULL},
+{"WITH-SLOTS",NULL},
+{KEY_ "ARGUMENT-PRECEDENCE-ORDER",NULL},
+{KEY_ "DECLARE",NULL},
+{KEY_ "DEFAULT-INITARGS",NULL},
+{KEY_ "DIRECT-DEFAULT-INITARGS",NULL},
+{KEY_ "DIRECT-SLOTS",NULL},
+{KEY_ "DIRECT-SUPERCLASSES",NULL},
+{KEY_ "DOCUMENTATION",NULL},
+{KEY_ "GENERIC-FUNCTION-CLASS",NULL},
+{KEY_ "LAMBDA-LIST",NULL},
+{KEY_ "METHOD-CLASS",NULL},
+{KEY_ "METHOD-COMBINATION",NULL},
+#endif
+
+/* SYSTEM PACKAGE */
+{SYS_ "#!",NULL},
+{SYS_ "*BACKQ-LEVEL*",NULL},
+{SYS_ "*CBLOCK*",NULL},
+{SYS_ "*CIRCLE-COUNTER*",NULL},
+{SYS_ "*CIRCLE-STACK*",NULL},
+{SYS_ "*CLASS-NAME-HASH-TABLE*",NULL},
+{SYS_ "*COMPILER-CONSTANTS*",NULL},
+{SYS_ "*GC-MESSAGE*",NULL},
+{SYS_ "*GC-VERBOSE*",NULL},
+{SYS_ "*IGNORE-ERRORS*",NULL},
+{SYS_ "*IGNORE-EOF-ON-TERMINAL-IO*",NULL},
+{SYS_ "*INDENT-FORMATTED-OUTPUT*",NULL},
+{SYS_ "*INIT-FUNCTION-PREFIX*",NULL},
+{SYS_ "*INTERRUPT-ENABLE*",NULL},
+{SYS_ "*KEEP-DEFINITIONS*",NULL},
+{SYS_ "*LOAD-HOOKS*",NULL},
+{SYS_ "*LOAD-SEARCH-LIST*",NULL},
+{SYS_ "*MAKE-CONSTANT","si_Xmake_constant"},
+{SYS_ "*MAKE-SPECIAL","si_Xmake_special"},
+{SYS_ "*PRINT-PACKAGE*",NULL},
+{SYS_ "*PRINT-STRUCTURE*",NULL},
+{SYS_ "*SHARP-EQ-CONTEXT*",NULL},
+{SYS_ "*STEP-LEVEL*","OBJNULL"},
+{SYS_ "*STEP-ACTION*","OBJNULL"},
+{SYS_ ".",NULL},
+{SYS_ "UNQUOTE",NULL},
+{SYS_ "UNQUOTE-NSPLICE",NULL},
+{SYS_ "UNQUOTE-SPLICE",NULL},
+{SYS_ "ALLOCATE-RAW-INSTANCE","si_allocate_raw_instance"},
+{SYS_ "ARGC","si_argc"},
+{SYS_ "ARGV","si_argv"},
+{SYS_ "ASET","si_aset"},
+{SYS_ "BC-DISASSEMBLE","si_bc_disassemble"},
+{SYS_ "BC-SPLIT","si_bc_split"},
+{SYS_ "BDS-TOP","si_bds_top"},
+{SYS_ "BDS-VAL","si_bds_val"},
+{SYS_ "BDS-VAR","si_bds_var"},
+{SYS_ "BIT-ARRAY-OP","si_bit_array_op"},
+{SYS_ "C-ARGUMENTS-LIMIT",NULL},
+{SYS_ "CHAR-SET","si_char_set"},
+{SYS_ "CHDIR","si_chdir"},
+{SYS_ "CLEAR-COMPILER-PROPERTIES","cl_identity"},
+{SYS_ "CLOSE-PIPE","si_close_pipe"},
+{SYS_ "COERCE-TO-FILENAME","si_coerce_to_filename"},
+{SYS_ "COERCE-TO-FUNCTION","si_coerce_to_function"},
+{SYS_ "COERCE-TO-PACKAGE","si_coerce_to_package"},
+{SYS_ "COMPILED-FUNCTION-BLOCK","si_compiled_function_block"},
+{SYS_ "COMPILED-FUNCTION-NAME","si_compiled_function_name"},
+{SYS_ "COPY-STREAM","si_copy_stream"},
+{SYS_ "DAYLIGHT-SAVING-TIME-P","si_daylight_saving_time_p"},
+{SYS_ "DO-READ-SEQUENCE","si_do_read_sequence"},
+{SYS_ "DO-WRITE-SEQUENCE","si_do_write_sequence"},
+{SYS_ "ELT-SET","si_elt_set"},
+{SYS_ "EVAL-WITH-ENV","si_eval_with_env"},
+{SYS_ "EXPAND-DEFMACRO",NULL},
+{SYS_ "FILE-COLUMN","si_file_column"},
+{SYS_ "FILE-KIND","si_file_kind"},
+{SYS_ "FILL-POINTER-SET","si_fill_pointer_set"},
+{SYS_ "FIXNUMP","si_fixnump"},
+{SYS_ "FORMAT-ERROR",NULL},
+#ifdef ECL_CMU_FORMAT
+{SYS_ "FORMATTER-AUX",NULL},
+#else
+{SYS_ "FORMATTER-AUX","si_formatter_aux"},
+#endif
+{SYS_ "FRS-BDS","si_frs_bds"},
+{SYS_ "FRS-CLASS","si_frs_class"},
+{SYS_ "FRS-IHS","si_frs_ihs"},
+{SYS_ "FRS-TAG","si_frs_tag"},
+{SYS_ "FRS-TOP","si_frs_top"},
+{SYS_ "FSET","si_fset"},
+{SYS_ "FUNCTION-BLOCK-NAME","si_function_block_name"},
+#if defined(_MSC_VER) || defined(mingw32)
+{SYS_ "GET-LIBRARY-PATHNAME","si_get_library_pathname"},
+#endif
+{SYS_ "GET-LOCAL-TIME-ZONE","si_get_local_time_zone"},
+{SYS_ "GET-SYSPROP","si_get_sysprop"},
+{SYS_ "GET-STRING-INPUT-STREAM-INDEX","si_get_string_input_stream_index"},
+{SYS_ "GETENV","si_getenv"},
+{SYS_ "GETCWD","si_getcwd"},
+{SYS_ "GETPID","si_getpid"},
+{SYS_ "HASH-SET","si_hash_set"},
+{SYS_ "HASH-TABLE-ITERATOR","si_hash_table_iterator"},
+{SYS_ "IHS-ENV","si_ihs_env"},
+{SYS_ "IHS-FUN","si_ihs_fun"},
+{SYS_ "IHS-NEXT","si_ihs_next"},
+{SYS_ "IHS-PREV","si_ihs_prev"},
+{SYS_ "IHS-TOP","si_ihs_top"},
+{SYS_ "INTERPRETER-STACK","si_interpreter_stack"},
+{SYS_ "LINK-FROM",NULL},
+{SYS_ "LINK-TO",NULL},
+{SYS_ "LIST-NTH","si_list_nth"},
+{SYS_ "LOAD-SOURCE","si_load_source"},
+{SYS_ "LOGICAL-PATHNAME-P","si_logical_pathname_p"},
+{SYS_ "MACRO",NULL},
+{SYS_ "MAKE-LAMBDA","si_make_lambda"},
+{SYS_ "MAKE-PURE-ARRAY","si_make_pure_array"},
+{SYS_ "MAKE-STRING-OUTPUT-STREAM-FROM-STRING","si_make_string_output_stream_from_string"},
+{SYS_ "MAKE-STRUCTURE","si_make_structure"},
+{SYS_ "MAKE-VECTOR","si_make_vector"},
+{SYS_ "MANGLE-NAME","si_mangle_name"},
+{SYS_ "MEMBER1","si_member1"},
+{SYS_ "MEMQ","si_memq"},
+{SYS_ "MKDIR","si_mkdir"},
+{SYS_ "MKSTEMP","si_mkstemp"},
+{SYS_ "RMDIR","si_rmdir"},
+{SYS_ "OPEN-PIPE","si_open_pipe"},
+{SYS_ "OUTPUT-STREAM-STRING","si_output_stream_string"},
+{SYS_ "PACKAGE-LOCK","si_package_lock"},
+{SYS_ "PACKAGE-HASH-TABLES","si_package_hash_tables"},
+{SYS_ "PATHNAME-TRANSLATIONS","si_pathname_translations"},
+{SYS_ "POINTER","si_pointer"},
+{SYS_ "PRETTY-PRINT-FORMAT",NULL},
+{SYS_ "PROCESS-DECLARATIONS","si_process_declarations"},
+{SYS_ "PROCESS-LAMBDA","si_process_lambda"},
+{SYS_ "PROCESS-LAMBDA-LIST","si_process_lambda_list"},
+{SYS_ "PUT-F","si_put_f"},
+{SYS_ "PUT-PROPERTIES","si_put_properties"},
+{SYS_ "PUT-SYSPROP","si_put_sysprop"},
+{SYS_ "PUTPROP","si_putprop"},
+{SYS_ "READTABLE-CASE-SET","si_readtable_case_set"},
+{SYS_ "REM-F","si_rem_f"},
+{SYS_ "REM-SYSPROP","si_rem_sysprop"},
+{SYS_ "REPLACE-ARRAY","si_replace_array"},
+{SYS_ "RESET-STACK-LIMITS","si_reset_stack_limits"},
+{SYS_ "ROW-MAJOR-ASET","si_row_major_aset"},
+{SYS_ "RPLACA-NTHCDR","si_rplaca_nthcdr"},
+{EXT_ "RUN-PROGRAM","si_run_program"},
+{SYS_ "SAFE-EVAL","si_safe_eval"},
+{SYS_ "SCH-FRS-BASE","si_sch_frs_base"},
+{SYS_ "SCHAR-SET","si_char_set"},
+{SYS_ "SHARP-A-READER",NULL},
+{SYS_ "SHARP-S-READER",NULL},
+{SYS_ "SELECT-PACKAGE","si_select_package"},
+{SYS_ "SET-SYMBOL-PLIST","si_set_symbol_plist"},
+#if defined(HAVE_PUTENV) || defined(HAVE_SETENV)
+{SYS_ "SETENV","si_setenv"},
+#endif
+{SYS_ "SETF-LAMBDA",NULL},
+{SYS_ "SETF-METHOD",NULL},
+{SYS_ "SETF-NAMEP",NULL},
+{SYS_ "SETF-SYMBOL",NULL},
+{SYS_ "SETF-UPDATE",NULL},
+{SYS_ "SIMPLE-CONTROL-ERROR",NULL},
+{SYS_ "SIMPLE-PACKAGE-ERROR",NULL},
+{SYS_ "SIMPLE-PROGRAM-ERROR","ECL_NAME(si_simple_program_error)"},
+{SYS_ "SIMPLE-READER-ERROR",NULL},
+{SYS_ "SPECIALP","si_specialp"},
+{SYS_ "STANDARD-READTABLE","si_standard_readtable"},
+{SYS_ "STEPPER","OBJNULL"},
+{SYS_ "STRING-CONCATENATE","si_string_concatenate"},
+{SYS_ "STRING-TO-OBJECT","si_string_to_object"},
+{SYS_ "STRUCTURE-NAME","si_structure_name"},
+{SYS_ "STRUCTURE-PRINT-FUNCTION",NULL},
+{SYS_ "STRUCTURE-REF","si_structure_ref"},
+{SYS_ "STRUCTURE-SET","si_structure_set"},
+{SYS_ "STRUCTURE-SLOT-DESCRIPTIONS",NULL},
+{SYS_ "STRUCTURE-SUBTYPE-P","si_structure_subtype_p"},
+{SYS_ "STRUCTUREP","si_structurep"},
+{SYS_ "SVSET","si_svset"},
+{SYS_ "SYMBOL-MACRO",NULL},
+{SYS_ "SYSTEM","si_system"},
+{SYS_ "TERMINAL-INTERRUPT",NULL},
+{SYS_ "TOP-LEVEL",NULL},
+{SYS_ "UNIVERSAL-ERROR-HANDLER",NULL},
+{SYS_ "UNLINK-SYMBOL","si_unlink_symbol"},
+{SYS_ "VALID-FUNCTION-NAME-P","si_valid_function_name_p"},
+{SYS_ "WRITE-OBJECT","si_write_object"},
+{SYS_ "WRITE-UGLY-OBJECT","si_write_ugly_object"},
+
+#ifndef CLOS
+{SYS_ "STRUCTURE-INCLUDE",NULL},
+#else
+{SYS_ "CHANGE-INSTANCE",NULL},
+{SYS_ "COMPUTE-EFFECTIVE-METHOD",NULL},
+{SYS_ "COPY-INSTANCE","si_copy_instance"},
+{SYS_ "GENERIC-FUNCTION-P","si_generic_function_p"},
+{SYS_ "INSTANCE-REF-SAFE","si_instance_ref_safe"},
+{SYS_ "INSTANCE-REF","si_instance_ref"},
+{SYS_ "INSTANCE-SET","si_instance_set"},
+{SYS_ "INSTANCE-SIG","si_instance_sig"},
+{SYS_ "INSTANCE-SIG-SET","si_instance_sig_set"},
+{SYS_ "INSTANCE-CLASS","si_instance_class"},
+{SYS_ "INSTANCE-CLASS-SET","si_instance_class_set"},
+{SYS_ "INSTANCEP","si_instancep"},
+{SYS_ "SET-COMPILED-FUNCTION-NAME","si_set_compiled_function_name"},
+{SYS_ "SET-FUNCALLABLE","si_set_funcallable"},
+{SYS_ "SL-BOUNDP","si_sl_boundp"},
+{SYS_ "SL-MAKUNBOUND","si_sl_makunbound"},
+{SYS_ "SUBCLASSP",NULL},
+/*{SYS_ "UNBOUND","si_unbound"}, */
+#endif
+
+#ifdef PROFILE
+{SYS_ "*PROFILE-ARRAY*",NULL},
+#endif
+
+#ifdef ECL_CLOS_STREAMS
+#ifdef ECL_GRAY_STREAMS
+{EXT_ "ANSI-STREAM-CLOSE","si_ansi_stream_close"},
+{EXT_ "ANSI-STREAM-ELEMENT-TYPE","si_ansi_stream_element_type"},
+{EXT_ "ANSI-STREAM-INPUT-STREAM-P","si_ansi_stream_input_stream_p"},
+{EXT_ "ANSI-STREAM-OUTPUT-STREAM-P","si_ansi_stream_output_stream_p"},
+{EXT_ "ANSI-STREAM-OPEN-STREAM-P","si_ansi_stream_open_stream_p"},
+#else
+{EXT_ "STREAM-CLOSE",NULL},
+{EXT_ "STREAM-ELT-TYPE",NULL},
+{EXT_ "STREAM-INPUT-P",NULL},
+{EXT_ "STREAM-OUTPUT-P",NULL},
+{EXT_ "STREAM-OPEN-P",NULL},
+#endif
+{EXT_ "STREAM-CLEAR-INPUT",NULL},
+{EXT_ "STREAM-CLEAR-OUTPUT",NULL},
+{EXT_ "STREAM-FINISH-OUTPUT",NULL},
+{EXT_ "STREAM-FORCE-OUTPUT",NULL},
+{EXT_ "STREAM-FRESH-LINE",NULL},
+{EXT_ "STREAM-INTERACTIVE-P",NULL},
+{EXT_ "STREAM-LINE-COLUMN",NULL},
+{EXT_ "STREAM-LISTEN",NULL},
+{EXT_ "STREAM-PEEK-CHAR",NULL},
+{EXT_ "STREAM-READ-BYTE",NULL},
+{EXT_ "STREAM-READ-CHAR",NULL},
+{EXT_ "STREAM-READ-CHAR-NO-HANG",NULL},
+{EXT_ "STREAM-READ-LINE",NULL},
+{EXT_ "STREAM-READ-SEQUENCE",NULL},
+{EXT_ "STREAM-START-LINE-P",NULL},
+{EXT_ "STREAM-TERPRI",NULL},
+{EXT_ "STREAM-UNREAD-CHAR",NULL},
+{EXT_ "STREAM-WRITE-BYTE",NULL},
+{EXT_ "STREAM-WRITE-CHAR",NULL},
+{EXT_ "STREAM-WRITE-SEQUENCE",NULL},
+{EXT_ "STREAM-WRITE-STRING",NULL},
+#endif
+
+#ifdef PDE
+{SYS_ "*RECORD-SOURCE-PATHNAME-P*",NULL},
+{SYS_ "*SOURCE-PATHNAME*",NULL},
+{SYS_ "RECORD-SOURCE-PATHNAME",NULL},
+#endif
+
+#ifdef PROFILE
+{SYS_ "PROFILE","si_profile"},
+{SYS_ "CLEAR-PROFILE","si_clear_profile"},
+{SYS_ "DISPLAY-PROFILE","si_display_profile"},
+#endif /* PROFILE */
+
+#ifdef TCP
+{SYS_ "OPEN-CLIENT-STREAM","si_open_client_stream"},
+{SYS_ "OPEN-SERVER-STREAM","si_open_server_stream"},
+{SYS_ "OPEN-UNIX-SOCKET-STREAM","si_open_unix_socket_stream"},
+{SYS_ "LOOKUP-HOST-ENTRY","si_lookup_host_entry"},
+#endif
+
+{SYS_ "CATCH-BAD-SIGNALS","si_catch_bad_signals"},
+{SYS_ "UNCATCH-BAD-SIGNALS","si_uncatch_bad_signals"},
+
+/* KEYWORD PACKAGE */
+{KEY_ "ABORT",NULL},
+{KEY_ "ABSOLUTE",NULL},
+{KEY_ "ALLOW-OTHER-KEYS",NULL},
+{KEY_ "APPEND",NULL},
+{KEY_ "ARRAY",NULL},
+{KEY_ "BACK",NULL},
+{KEY_ "BASE",NULL},
+{KEY_ "BLOCK",NULL},
+{KEY_ "CAPITALIZE",NULL},
+{KEY_ "CASE",NULL},
+{KEY_ "CATCH",NULL},
+{KEY_ "CATCHALL",NULL},
+{KEY_ "CIRCLE",NULL},
+{KEY_ "COMPILE-TOPLEVEL",NULL},
+{KEY_ "COMMON",NULL},
+{KEY_ "CONTROL-STRING",NULL},
+{KEY_ "CREATE",NULL},
+{KEY_ "DATUM",NULL},
+{KEY_ "DEFAULT",NULL},
+{KEY_ "DEFAULTS",NULL},
+{KEY_ "DEVICE",NULL},
+{KEY_ "DIRECTION",NULL},
+{KEY_ "DIRECTORY",NULL},
+{KEY_ "DOWNCASE",NULL},
+{KEY_ "ELEMENT-TYPE",NULL},
+{KEY_ "END",NULL},
+{KEY_ "END1",NULL},
+{KEY_ "END2",NULL},
+{KEY_ "EOF",NULL},
+{KEY_ "ERROR",NULL},
+{KEY_ "ESCAPE",NULL},
+{KEY_ "EXECUTE",NULL},
+{KEY_ "EXPECTED-TYPE",NULL},
+{KEY_ "EXTERNAL",NULL},
+{KEY_ "EXTERNAL-FORMAT",NULL},
+{KEY_ "FILE",NULL},
+{KEY_ "FORMAT-ARGUMENTS",NULL},
+{KEY_ "FORMAT-CONTROL",NULL},
+{KEY_ "FUNCTION",NULL},
+{KEY_ "GENSYM",NULL},
+{KEY_ "HOST",NULL},
+{KEY_ "IF-DOES-NOT-EXIST",NULL},
+{KEY_ "IF-EXISTS",NULL},
+{KEY_ "INHERITED",NULL},
+{KEY_ "INITIAL-ELEMENT",NULL},
+{KEY_ "INITIAL-CONTENTS",NULL},
+{KEY_ "INPUT",NULL},
+{KEY_ "INSTANCE",NULL},
+{KEY_ "INTERNAL",NULL},
+{KEY_ "INVERT",NULL},
+{KEY_ "IO",NULL},
+{KEY_ "JUNK-ALLOWED",NULL},
+{KEY_ "KEY",NULL},
+{KEY_ "LENGTH",NULL},
+{KEY_ "LEVEL",NULL},
+{KEY_ "LINES",NULL},
+{KEY_ "LINK",NULL},
+{KEY_ "LIST-ALL",NULL},
+{KEY_ "LOCAL",NULL},
+{KEY_ "LOCKABLE",NULL},
+{KEY_ "LOAD-TOPLEVEL",NULL},
+{KEY_ "MISER-WIDTH",NULL},
+{KEY_ "NAME",NULL},
+{KEY_ "NEW-VERSION",NULL},
+{KEY_ "NEWEST",NULL},
+{KEY_ "NICKNAMES",NULL},
+{KEY_ "OBJECT",NULL},
+{KEY_ "OFFSET",NULL},
+{KEY_ "OPERATION",NULL},
+{KEY_ "OPERANDS",NULL},
+{KEY_ "OUTPUT",NULL},
+{KEY_ "OVERWRITE",NULL},
+{KEY_ "PACKAGE",NULL},
+{KEY_ "PATHNAME",NULL},
+{KEY_ "PPRINT-DISPATCH",NULL},
+{KEY_ "PRESERVE",NULL},
+{KEY_ "PRETTY",NULL},
+{KEY_ "PRINT",NULL},
+{KEY_ "PROBE",NULL},
+{KEY_ "PROTECT",NULL},
+{KEY_ "RADIX",NULL},
+{KEY_ "READABLY",NULL},
+{KEY_ "REHASH-SIZE",NULL},
+{KEY_ "REHASH-THRESHOLD",NULL},
+{KEY_ "RELATIVE",NULL},
+{KEY_ "RENAME",NULL},
+{KEY_ "RENAME-AND-DELETE",NULL},
+{KEY_ "RIGHT-MARGIN",NULL},
+{KEY_ "SET-DEFAULT-PATHNAME",NULL},
+{KEY_ "SEARCH-LIST",NULL},
+{KEY_ "SIZE",NULL},
+{KEY_ "SPECIAL",NULL},
+{KEY_ "START",NULL},
+{KEY_ "START1",NULL},
+{KEY_ "START2",NULL},
+{KEY_ "STREAM",NULL},
+{KEY_ "SUPERSEDE",NULL},
+{KEY_ "TAG",NULL},
+{KEY_ "TEST",NULL},
+{KEY_ "TEST-NOT",NULL},
+{KEY_ "TYPE",NULL},
+{KEY_ "UNSPECIFIC",NULL},
+{KEY_ "UP",NULL},
+{KEY_ "UPCASE",NULL},
+{KEY_ "USE",NULL},
+{KEY_ "USE-HEADER-P",NULL},
+{KEY_ "VERBOSE",NULL},
+{KEY_ "VERSION",NULL},
+{KEY_ "WILD",NULL},
+{KEY_ "WILD-INFERIORS",NULL},
+
+{EXT_ "BYTE8",NULL},
+{EXT_ "COMPILER-LET",NULL},
+{EXT_ "INTEGER8",NULL},
+{EXT_ "LAMBDA-BLOCK",NULL},
+{EXT_ "QUIT","si_quit"},
+#ifdef CLOS
+{EXT_ "GET-METHOD",NULL},
+{EXT_ "INSTANCE",NULL},
+#endif
+
+{SYS_ "ALLOCATE-FOREIGN-DATA","si_allocate_foreign_data"},
+{SYS_ "FOREIGN-DATA",NULL},
+{SYS_ "FOREIGN-DATA-ADDRESS","si_foreign_data_address"},
+{SYS_ "FOREIGN-DATA-POINTER","si_foreign_data_pointer"},
+{SYS_ "FOREIGN-DATA-RECAST","si_foreign_data_recast"},
+{SYS_ "FOREIGN-DATA-REF","si_foreign_data_ref"},
+{SYS_ "FOREIGN-DATA-REF-ELT","si_foreign_data_ref_elt"},
+{SYS_ "FOREIGN-DATA-SET","si_foreign_data_set"},
+{SYS_ "FOREIGN-DATA-SET-ELT","si_foreign_data_set_elt"},
+{SYS_ "FOREIGN-DATA-TAG","si_foreign_data_tag"},
+{SYS_ "FREE-FOREIGN-DATA","si_free_foreign_data"},
+{SYS_ "NULL-POINTER-P","si_null_pointer_p"},
+{SYS_ "SIZE-OF-FOREIGN-ELT-TYPE","si_size_of_foreign_elt_type"},
+{KEY_ "BYTE",NULL},
+{KEY_ "CHAR",NULL},
+{KEY_ "CSTRING",NULL},
+{KEY_ "DOUBLE",NULL},
+{KEY_ "FIXNUM",NULL},
+{KEY_ "FLOAT",NULL},
+{KEY_ "INT",NULL},
+{KEY_ "LONG",NULL},
+{KEY_ "POINTER-SELF",NULL},
+{KEY_ "POINTER-VOID",NULL},
+{KEY_ "SHORT",NULL},
+{KEY_ "STRUCT",NULL},
+{KEY_ "UNION",NULL},
+{KEY_ "VOID",NULL},
+{KEY_ "UNSIGNED-BYTE",NULL},
+{KEY_ "UNSIGNED-CHAR",NULL},
+{KEY_ "UNSIGNED-INT",NULL},
+{KEY_ "UNSIGNED-LONG",NULL},
+{KEY_ "UNSIGNED-SHORT",NULL},
+{SYS_ "C-CHAR-BIT",NULL},
+{SYS_ "C-CHAR-MAX",NULL},
+{SYS_ "C-CHAR-MIN",NULL},
+{SYS_ "C-INT-MAX",NULL}, /* See main.d */
+{SYS_ "C-INT-MIN",NULL}, /* See main.d */
+{SYS_ "C-SHORT-MAX",NULL},
+{SYS_ "C-SHORT-MIN",NULL},
+{SYS_ "C-LONG-MAX",NULL}, /* See main.d */
+{SYS_ "C-LONG-MIN",NULL}, /* See main.d */
+{SYS_ "C-UCHAR-MAX",NULL},
+{SYS_ "C-UINT-MAX",NULL}, /* See main.d */
+{SYS_ "C-USHORT-MAX",NULL},
+{SYS_ "C-ULONG-MAX",NULL}, /* See main.d */
+
+#ifdef GBC_BOEHM
+{SYS_ "GC","si_gc"},
+{SYS_ "GC-DUMP","si_gc_dump"},
+#endif
+
+#if !defined(GBC_BOEHM)
+{SYS_ "GC","si_gc"},
+{SYS_ "ALLOCATE","si_allocate"},
+{SYS_ "ALLOCATED-PAGES","si_allocated_pages"},
+{SYS_ "MAXIMUM-ALLOCATABLE-PAGES","si_maximum_allocatable_pages"},
+{SYS_ "ALLOCATE-CONTIGUOUS-PAGES","si_allocate_contiguous_pages"},
+{SYS_ "ALLOCATED-CONTIGUOUS-PAGES","si_allocated_contiguous_pages"},
+{SYS_ "MAXIMUM-CONTIGUOUS-PAGES","si_maximum_contiguous_pages"},
+{SYS_ "GC-TIME","si_gc_time"},
+{SYS_ "GET-HOLE-SIZE","si_get_hole_size"},
+{SYS_ "SET-HOLE-SIZE","si_set_hole_size"},
+{SYS_ "IGNORE-MAXIMUM-PAGES","si_ignore_maximum_pages"},
+{SYS_ "ROOM-REPORT","si_room_report"},
+{SYS_ "RESET-GC-COUNT","si_reset_gc_count"},
+#endif /* !GBC_BOEHM */
+
+#ifdef ENABLE_DLOPEN
+{SYS_ "LOAD-BINARY","si_load_binary"},
+#endif
+
+#ifdef ECL_THREADS
+{MP_ "PROCESS",NULL},
+{MP_ "LOCK",NULL},
+{MP_ "*CURRENT-PROCESS*",NULL},
+{MP_ "ALL-PROCESSES","mp_all_processes"},
+{MP_ "EXIT-PROCESS","mp_exit_process"},
+{MP_ "MAKE-PROCESS","mp_make_process"},
+{MP_ "PROCESS-ACTIVE-P","mp_process_active_p"},
+{MP_ "PROCESS-ENABLE","mp_process_enable"},
+{MP_ "PROCESS-KILL","mp_process_kill"},
+{MP_ "PROCESS-NAME","mp_process_name"},
+{MP_ "PROCESS-PRESET","mp_process_preset"},
+{MP_ "PROCESS-RUN-FUNCTION","mp_process_run_function"},
+{MP_ "PROCESS-WHOSTATE","mp_process_whostate"},
+{MP_ "MAKE-LOCK","mp_make_lock"},
+{MP_ "GET-LOCK","mp_get_lock"},
+{MP_ "GIVEUP-LOCK","mp_giveup_lock"},
+{KEY_ "INITIAL-BINDINGS",NULL},
+{MP_ "INTERRUPT-PROCESS","mp_interrupt_process"},
+{MP_ "+LOAD-COMPILE-LOCK+",NULL},
+{MP_ "WITH-LOCK",NULL},
+{MP_ "WITHOUT-INTERRUPTS",NULL},
+#endif
+
+{SYS_ "WHILE",NULL},
+{SYS_ "QUASIQUOTE",NULL},
+{SYS_ "*EXIT-HOOKS*",NULL},
+
+#ifdef CLOS
+{CLOS_ "SLOT-DEFINITION",NULL},
+{CLOS_ "SLOT-DEFINITION-ALLOCATION",NULL},
+{CLOS_ "SLOT-DEFINITION-INITARGS",NULL},
+{CLOS_ "SLOT-DEFINITION-INITFORM",NULL},
+{CLOS_ "SLOT-DEFINITION-INITFUNCTION",NULL},
+{CLOS_ "SLOT-DEFINITION-NAME",NULL},
+{CLOS_ "SLOT-DEFINITION-TYPE",NULL},
+{CLOS_ "SLOT-DEFINITION-READERS",NULL},
+{CLOS_ "SLOT-DEFINITION-WRITERS",NULL},
+{CLOS_ "SLOT-DEFINITION-DOCUMENTATION",NULL},
+#endif
+
+/* Tag for end of list */
+{NULL,NULL}};
+
diff --git a/src/cmp/cmpcfg.lsp.in b/src/cmp/cmpcfg.lsp.in
index 44fd78761..4b852d618 100644
--- a/src/cmp/cmpcfg.lsp.in
+++ b/src/cmp/cmpcfg.lsp.in
@@ -11,7 +11,7 @@
(setq *ld-format* #-msvc "~A -o ~S -L~S ~{~S ~} ~@?"
#+msvc "~A -Zi -Fe~S~* ~{~S ~} ~@?")
(setq *cc-format* #-msvc "~A ~A ~:[~*~;~A~] \"-I~A/h\" -w -c \"~A\" -o \"~A\""
- #+msvc "~A ~A ~:[~*~;~A~] -I\"~A/h\" -Zi -W3 -c \"~A\" -Fo\"~A\"")
+ #+msvc "~A ~A ~:[~*~;~A~] -I\"~A/h\" -Zi -w -nologo -c \"~A\" -Fo\"~A\"")
#-dlopen
(setq *ld-flags* "@LDRPATH@ @LDFLAGS@ -lecl @CORE_LIBS@ @LIBS@ @FASL_LIBS@")
#+dlopen
diff --git a/src/cmp/cmpmain.lsp b/src/cmp/cmpmain.lsp
index 1c3fca80a..d3e704a6a 100644
--- a/src/cmp/cmpmain.lsp
+++ b/src/cmp/cmpmain.lsp
@@ -301,7 +301,7 @@ static cl_object VV[VM];
(with-open-file (f "static_lib.tmp" :direction :output :if-does-not-exist :create :if-exists :supersede)
(format f "/DEBUGTYPE:CV /OUT:~A ~A ~{\"~&~A\"~}"
output-name o-name ld-flags))
- (safe-system "lib @static_lib.tmp"))
+ (safe-system "link -lib @static_lib.tmp"))
(when (probe-file "static_lib.tmp")
(cmp-delete-file "static_lib.tmp")))
)
diff --git a/src/compile.lsp.in b/src/compile.lsp.in
index 686f8d169..3fb280d56 100644
--- a/src/compile.lsp.in
+++ b/src/compile.lsp.in
@@ -41,7 +41,7 @@
#+msvc "@CFLAGS@ @ECL_CFLAGS@ -I\"@true_srcdir@\"/h -I\"@true_builddir@\"/h"
c::*cc-format*
#-msvc "~A ~A ~:[~*~;~A~] -I\"@true_builddir@\"/h~* -w -c ~S -o ~S"
- #+msvc "~A ~A ~:[~*~;~A~] -I\"@true_builddir@\"/h~* -Zi -W3 -c ~S -Fo~S"
+ #+msvc "~A ~A ~:[~*~;~A~] -I\"@true_builddir@\"/h~* -Zi -w -nologo -c ~S -Fo~S"
c::*ld-format*
#-msvc "~A -o ~S -L\"@true_builddir@\"~* ~{~S ~} ~@?"
#+msvc "~A -Zi -Fe~S~* ~{~S ~} ~@?")
diff --git a/src/doc/Makefile.in b/src/doc/Makefile.in
index 82df6864d..26e0dd3e4 100644
--- a/src/doc/Makefile.in
+++ b/src/doc/Makefile.in
@@ -113,10 +113,8 @@ index.html: $(srcdir)/index.in.html head
cat head $(srcdir)/index.in.html $(srcdir)/end | $(FILTER) > $@
install.html: $(srcdir)/install.in.html head
cat head $(srcdir)/install.in.html $(srcdir)/end | $(FILTER) > $@
-news.html: $(srcdir)/news.in.html head
- (cat head; sed -e '/^----.*$$/,$$d' $(srcdir)/news.in.html; \
- sed -e '1,/^ECL [0-9\.]*$$/d;/^===*$$/d' $(srcdir)/../../ANNOUNCEMENT| sed -e '1d'; \
- sed -e '1,/^----*$$/d' $(srcdir)/news.in.html; \
+news.html: head
+ (cat head; echo ''; cat $(srcdir)/../../ANNOUNCEMENT| sed -e '1d'; echo '
' \
cat $(srcdir)/end) | $(FILTER) > $@
benchmark.html: $(srcdir)/benchmark.in.html ../gabriel/BENCHMARK head
(cat head; cat $(srcdir)/benchmark.in.html; \
diff --git a/src/doc/README.html b/src/doc/README.html
deleted file mode 100644
index 1480a16ff..000000000
--- a/src/doc/README.html
+++ /dev/null
@@ -1,327 +0,0 @@
-
-
-
-ECL-Spain 0.1a
-
-
-
-ECL-Spain 0.1a
-
-Table of contents
-
-
-Introduction
-
-ECLS stands for Embeddable
-Common-Lisp "Spain", and I usually read it as "e-klos". It is a an
-implementation of the Common-Lisp language
-which aims to comply to the ANSI X3J13
-definition of the language.
-
-ECLS combines a bytecodes
-compiler/interpreter and a translator to C. The first one is specially suited
-for prototyping and debugging. The second one produces fast code that can be
-dynamically loaded into the interpreter or statically linked to build
-standalone executables.
-
-
ECLS is distributed under the GNU Library General Public License (GNU LGPL).
-
-
ECLS is not a brand new
-product. It has evolved from the EcoLisp implementation by Giuseppe Attardi
-which in turn was based on the Kyoto Common-Lisp implementation done by Taiichi
-Yuasa and Masami Hagiya, with contributions from several people. Nevertheless
-the program has been seriously modified and the current code base bears little
-resemblance to the previous implementations and the author of those
-implementations should not be blamed for the faults of thi ECLS.
-
-Project goals
-
-
-- To produce a free implementation of Common-Lisp.
-
-
ECLS is released under the LGPL or
-GNU Library General Public Licence (See Copyright). This means that ECLS can be used in commercial projects
-while keeping the implementation free.
-
-
- Compliance to the latest ANSI spec.
-
-
ECLS is already rather standards
-compliant. ECLS was born as a fork
-from the ECL (Eco-Common-Lisp by Giussepe Attardi) which conformed to Cltl2
-("Common-Lisp the Language 2"), but which was shipped with some ANSI
-compatibility extensions. Currently the worst parts with respect to ANSI are
-the LOOP package and parts of CLOS.
-
-
- Small code size.
-
-
ECLS is made of a runtime library
-and an interpreter. The interpreter itself is small, at most three files of C
-code. Once the lisp environment is booted, it takes about 1Mb of code (although
-currently it is a bit more due to debuggin issues in the interpreter). If the
-whole of ECLS is compiled from lisp
-to C, the resulting program is 1.5Mb. Nevertheless, there is room for
-improvement in this area.
-
-
- Embedability.
-
-
In a near future ECLS will be
-shipped as a library that can be linked against arbitrary C
-programs. Currently, arbitrary C code can be linked against ECLS, either statically or at runtime.
-
-
- Portability to arbitrary environments.
-
-
ECLS currently compiles and runs
-on Linux, FreeBSD 4.x and NetBSD 1.5. Most of the code is portable. The parts
-which change from operating system to operating system are about the
-filesystem, sockets, signals and the allocation of big chunks of memory, but in
-all it is well below 1000 lines. The worst part is related to word-size and
-endianness. Work is in progress to port ECLS to 64-bit environments.
-
-
- Compilation via an ANSI C compiler.
-
-
ECLS can translate lisp code to C
-code that can be dynamically loaded or linked to the runtime to produce a
-standalone executable. Currently this process relies on GCC as a targed
-platform, but work is in progress to remove GCC dependencies.
-
-
- Better garbage collection.
-
-
As of this release the memory that ECLS can allocate is restricted to
-16Mb. I have tried replacing the garbage collector with a conservative one
-(Boehm's GC v 4.11) and that did fix the problems, but increases the memory
-requirements of ECLS. Since this is
-really undesirable, I have been also thinking about revamping the current
-garbage collector with an interface to mmap(). Time wil tell...
-
-
- Improve the compiler: more agressive inlining, better operations among
-numbers and unboxed arrays of complex numbers.
-
-
ECLS currently can inline all
-operations that involve fixnums, characters and floating point
-numbers. However, the type inferencer is not very powerful and therefore some
-operations are not inlined because the compiler cannot actually tell the types
-of the arguments and of the output.
-
-
-News in this release (ECLS-0.1a)
-
-
-- Due to human errors, the bytecompiler shipped with 0.1a was an
- unfinished version. In 0.1b we shipped a more polished files. Some
- of the errors which are fixed are
-
- - Produce the right code for TAGBODY inside closures
- - Activate compiler for SYMBOL-MACROLET
- - Allow non-keyword symbols as lambda-list-keywords
- - Allow more than one :ALLOW-OTHER-KEYS to be supplied, but discard other than the first one
-
- Process declarations in FLET/LABELS forms
-
-
- - Fixed the C compiler routines for TAGBODY: it would produce wrong
- code when jumping out of a closure.
-
-
- Rewrite the error system using KMP's condition system, CLOS and a
- rudimentary interface to the toplevel.
-
-
- Enclosing the bytecompiler in an UNWIND-PROTECT ensures that the
- status of the compiler and of the interpreter is always consistent.
-
-
- Port and incorporate Peter Van Eynde's test suite for ANSI
- compliance.
-
-
- Replace features ECL/ECL-MIN with ECLS and ECLS-MIN. All references
- to ECL (Eco-Common-Lisp) should have been dropped by now.
-
-
- Add simple-program-error and simple-control-error to the hierarchy
- of conditions, and try to ensure that all routines in libecls.a
- signal the right type of condition.
-
-
- Define COMPLEMENT and CONTINOUSLY.
-
-
- Fix #'= between bignums.
-
-
- NIL is no longer valid as the first of a pair of bounding index
- designators, i.e. (nstring-upcase "aa" :start nil :end nil) causes
- an error.
-
-
-Known bugs
-
-As I mentioned above, the problem I am finding here is the lack of test suites
-which I can use to detect failures in the behavior of any function. Currently I
-can assure that ECLS passes most of
-the tests from the the CLOCC suite.
-The most important exceptions are
-
-- CLOS
-
- #'format
-
- #'unread-char is too lax
-
- The CL package is too polluted
-
- LOOP lacks some of the standard keywords, including destructuring
-
- Support for logical pathnames is incomplete
-
-
-If you find something that should be fixed or that the behavior of a
-function is particularly misleading with respect to the standards, feel free
-to tell me so.
-
-Some other bugs which need to be fixed are:
-
-- Threads and sockets haven't been tested yet.
-
- #'format doesn't pass the Cltl-1 tests and fails when the number of
-arguments is large.
-
- Needs better support for wildcards in pathnames.
-
- Bugs in logical operations among bignums.
-
- Support for CLOS needs yet more optimization.
-
-
-Distribution
-
-This project is hosted at Source
-forge. You can get current copies of the sources and of the documentation
-in there.
-
-Installation
-
-
-- Unpack the tar file
-
- gunzip -c ecls.tgz | tar xf -
-
-
- - Run the configuration file.
-
- cd ecls-0.1a
- ./configure
-
-The previous step creates a directory with the name build, and
-stores a bunch of makefiles in it.
-
- - Use GNU make to invoke the compilation
-
- make
-
-
- - If you want to test the fresh new executable before installing. You you
-should invoke ECLS from withing the build directory using the "-dir ./"
-argument to advice him about the right place to find header files, libraries,
-etc. For instance, under linux the build directory is "linux" and we would do
-
- $ ./configure --prefix=$HOME
- [...]
- $ cd build
- $ make
- [...]
- $ ./ecls -dir ./
-
-
- - Install it in the desired location
-
- make install
-
-
-
-As a side note, a --disable-clos is still in ./configure, but its use is
-discouraged and unsupported.
-
-
-The author
-
-For the people who built the several pieces from ECoLisp, see the README.orig
-file. To contact the author of ECLS,
-use the following address
-
- Juan Jose Garcia Ripoll
-
- Univ. de Castilla-La Mancha
- E.T.S.I. Industriales
- Departamento de Matematicas
- c/Camilo Jose Cela, 3
- Ciudad Real, E-13071
- Spain
-
- jjgarcia@ind-cr.uclm.es
-
-
-
-Benchmark
-
-Benchmarks should be taken with a grain of salt. ECLS does not aim to compete with any
-commercial or open source implementation. The purpose of these benchmarks are,
-thus, to show the progress of ECLS
-itself from version to version.
-
-It also serves to show how well other implementations perform: CLISPc, which
-is based on bytecodes, is astonishingly fast, compared to other bytecodes
-implementations (ECLSi, CMUCLi) and to native code implementations (ECLSc,
-CMUCLc).
-
-
All benchmarks are executed one after another. The benchmark currently shows
-just mean execution times in seconds, using English decimal point (0.03 = 3/100
-seconds). This means that performance of garbage collectors has a deep impact
-in these numbers.
-
-
It would be nice to collect some other information, such as memory use and
-garbage collector timings, but that is beyond my reach for now. Help is always
-welcome.
-
-
Finally, I have decided to distribute Gabriel's benchmarks together with ECLS. The reason is that this code seems
-to belong to public domain and I had to perform several changes in order to let
-it run with different implementations. To recreate the benchmark just get in
-build/gabriel/ and type make.
-
-
-
- CLISPi ECLSi CMUCLi CLISPc ECLSc CMUCLc
-boyer 2.490 28.283 13.520 0.397 0.767 0.110
-browse 3.116 7.167 13.260 0.459 ***** 0.280
-ctak 0.406 0.883 1.530 0.032 0.017 0.000
-dderiv 0.455 1.317 1.850 0.110 0.167 0.080
-deriv 0.405 1.133 1.670 0.111 0.167 0.070
-destru-mod 1.418 0.871 2.398 0.053 0.025 0.025
-destru 1.384 0.871 2.412 0.053 0.025 0.020
-div2 0.889 1.867 3.850 0.132 0.150 0.070
-fprint 0.026 0.046 0.015 0.026 0.042 0.015
-fread 0.009 0.017 0.007 0.009 0.017 0.005
-frpoly 3.026 22.750 15.240 0.625 6.267 0.220
-puzzle 6.452 4.633 14.630 0.481 0.033 0.020
-puzzle-mod 6.890 4.667 14.680 0.480 0.017 0.030
-puzzle-mod2 6.467 4.633 14.690 0.480 0.033 0.030
-stak 0.374 0.842 1.768 0.047 0.021 0.007
-tak 3.394 9.183 11.500 0.208 0.033 0.020
-tak-mod 3.385 9.450 11.520 0.208 0.033 0.020
-takl 1.407 6.433 9.130 0.107 0.000 0.010
-takr 0.346 0.971 2.035 0.026 0.004 0.002
-tprint 0.022 0.046 0.023 0.022 0.046 0.020
-traverse 41.230 71.767 108.390 1.880 1.450 0.370
-triang-mod 74.765 169.750 255.840 7.362 1.567 3.110
-triang 71.018 149.417 243.330 5.797 0.667 *****
-
-IMPLi = Implementation IMPL interpreted
-IMPLc = Implementation IMPL compiled
-
-CLISP = CLISP 2000-03-06 (March 2000)
-CMUCL = CMUCL 18c
-ECLS = ECLS 0.1a
-
-
diff --git a/src/doc/goals.in.html b/src/doc/goals.in.html
index faad6a70f..6c2b32c54 100644
--- a/src/doc/goals.in.html
+++ b/src/doc/goals.in.html
@@ -67,27 +67,28 @@ improvement in this area.
Embedability.
-In a near future ECL will be
-shipped as a library that can be linked against arbitrary C
-programs. Currently, arbitrary C code can be linked against ECL, either statically or at runtime.
+
ECL is shipped as a
+library that can be linked against arbitrary C programs. Arbitrary
+C/C++ code can be linked against ECL, either statically or at
+runtime.
Portability to arbitrary environments.
ECL is currently supported in
-- Debian and Redhat Linux on Intel
-- Debian Linux on PowerPC
-- FreeBSD 4.x
-- Cygwin on Intel Windows (statically linked)
-- MacOSX (statically linked)
+- Linux on Intel, PowerPC, Alpha and Opteron
+- FreeBSD on Intel
+- NetBSD on Intel and Alpha
+- Microsoft Windows
+- MacOSX (currently broken)
-Most of the code is portable. The parts
-which change from operating system to operating system are about the
-filesystem, sockets, signals and the allocation of big chunks of memory, but in
-all it is well below 1000 lines. The worst part is related to word-size and
-endianness. Work is in progress to port ECL to 64-bit environments.
+Most of the code is portable and clean from issues like endianness and
+word size (ECL works on 64
+bit architectures). The parts which change from operating system to
+operating system are about the filesystem, sockets, signals and the
+allocation of big chunks of memory, but in all it is well below 1000
+lines.
Compilation via an ANSI C compiler.
diff --git a/src/doc/head b/src/doc/head
index a27388f08..c45d09234 100644
--- a/src/doc/head
+++ b/src/doc/head
@@ -26,7 +26,6 @@
| CLX manual |
| Benchmarks |
| Distribution |
- Experimental Patches |
| Mailing list |
| Browse CVS |
diff --git a/src/doc/index.in.html b/src/doc/index.in.html
index ae5ac0a14..8cb240eb5 100644
--- a/src/doc/index.in.html
+++ b/src/doc/index.in.html
@@ -12,9 +12,9 @@ definition of the language.
- A bytecodes compiler and interpreter.
- A translator to C.
-- An interface to foreign functions.
+- A UFFI-compatible interface to C code.
- A dynamic loader.
-- The possibility to build standalone executables.
+- The possibility to build standalone executables and DLLs.
- The Common-Lisp Object System (CLOS).
- Conditions and restarts for handling errors.
- Sockets as ordinary streams.
@@ -24,8 +24,10 @@ definition of the language.
ECL supports the operating systems Linux, FreeBSD, NetBSD, Solaris,
-Windows/Cygwin and OSX, running on top of the Intel, Sparc, Alpha and PowerPC
-processors. Porting to other architectures should be rather easy.
+Windows, running on top of the Intel, Sparc, Alpha and PowerPC
+processors. The port to OSX is broken due to some problems with the
+garbage collector and latest versions of OSX. Porting to other
+architectures should be rather easy.
The author
@@ -33,8 +35,8 @@ The original version was written by Giuseppe Attardi.
The current maintainer of ECLS is
Juan Jose Garcia Ripoll, who can be reached at the ECLS mailing list.
-We seek volunteers willing to test or improve the implementation. We accept
-both code and constructive critics, so feel free to share your toughts at the
-mailing list.
+
We seek volunteers willing to test or improve the
+implementation. We accept both code and constructive critics, so feel
+free to share your toughts at the mailing list.
Latest news
diff --git a/src/doc/install.in.html b/src/doc/install.in.html
index edd7cb91c..625a8b8d6 100644
--- a/src/doc/install.in.html
+++ b/src/doc/install.in.html
@@ -15,20 +15,6 @@ href="#msvc">the appropiate section.
chapter on how to pre-configure, write down a configuration file
and finish the compilation.
-
-
-- Change to the msvc directory.
-
-
- Run nmake to build ECL.
-
-
- Run nmake flatinstall prefix=d:\Software\ECL where the
-prefix is the directory where you want to install ECL.
-
-
- Optionally, if you want to build a self-installing executable, you can install NSIS
-and run nmake windows-nsi.
-
-
-
@@ -39,21 +25,21 @@ and run nmake windows-nsi.
- Run the configuration file.
- cd ecl-@VERSION@
+ cd ecl-@PACKAGE_VERSION@
./configure
The previous step creates a directory with the name build, and
stores a bunch of makefiles in it.
- - Use GNU make to invoke the compilation
+
- Use GNU make to begin building ECL
make
- - If you want to test the fresh new executable before installing. You you
-should invoke ECL from withing the build directory using the "-dir ./"
-argument to advice him about the right place to find header files, libraries,
-etc. For instance, under linux the build directory is "linux" and we would do
+
- If you want to test the fresh new executable before installing,
+you can do it. You should invoke ECL from withing the build directory
+using the "-dir ./" argument to advice it about the right place to
+find header files, libraries, etc
$ ./configure --prefix=$HOME
[...]
@@ -63,12 +49,43 @@ etc. For instance, under linux the build directory is "linux" and we would do
$ ./ecl -dir ./
- - Install it in the desired location
+
- Install it in the preconfigured location
make install
+
+
+If you have a commercial version of Microsoft Visual Studio, the
+steps are simple:
+
+- Change to the msvc directory.
+
+
- Run nmake to build ECL.
+
+
- Run nmake flatinstall prefix=d:\Software\ECL where the
+prefix is the directory where you want to install ECL.
+
+
- Optionally, if you want to build a self-installing executable, you can install NSIS
+and run nmake windows-nsi.
+
+
+If you want to build ECL using the free Microsoft Visual C++
+Toolkit 2003, you should follow these before building ECL:
+
+- Download and install Microsoft Visual C++ Toolkit.
+
- Download and install the Microsoft Platform SDK
+
- Download NMAKE and install. There is an old version in Microsoft's download page.
+
- Download and install the .NET Framework SDK. Copy the files msvcrt.lib an msvcrtd.lib from this toolkit to the directory where the Visual C++ Toolkit keeps it libraries. Afterwards you can uninstall the .NET SDK.
+
- Make sure that
+
+- %PATH% includes the directories bin of both the C++ Toolkit, NMAKE and the SDK.
+
- %INCLUDE% includes the directories include of both the C++ Toolkit and the SDK.
+
- %LIB%includes the directories lib of both the C++ Toolkit and the SDK.
+
+
+
diff --git a/src/doc/news.in.html b/src/doc/news.in.html
deleted file mode 100644
index 759b41056..000000000
--- a/src/doc/news.in.html
+++ /dev/null
@@ -1,31 +0,0 @@
-News in this release (ECL-@VERSION@)
-
--------
-
-
-Known bugs
-
-As I mentioned above, the problem I am finding here is the lack of test suites
-which I can use to detect failures in the behavior of any function. Currently I
-can assure that ECL passes most of
-the tests from the the CLOCC suite.
-The most important exceptions are
-
-- CLOS
-
- #'format
-
- #'unread-char is too lax
-
- Support for logical pathnames is incomplete
-
- No support for (SETF (VALUES ...) ...)
-
-
-If you find something that should be fixed or that the behavior of a
-function is particularly misleading with respect to the standards, feel free
-to tell me so.
-
-Some other bugs which need to be fixed are:
-
-- Threads were broken with latest improvements.
-
- #'format doesn't pass the Cltl-1 tests.
-
- Support for CLOS needs yet more optimization.
-
- ECL has its own pretty-printer, which does not conform ANSI.
-
diff --git a/src/util/cut.c b/src/util/cut.c
index ba451b980..e6bacc792 100644
--- a/src/util/cut.c
+++ b/src/util/cut.c
@@ -18,6 +18,8 @@ sed_emulator(int narg, char **patterns)
for (i = 0; i < narg; i+=2) {
char *b3, *b4;
while ((b3 = strstr(b1, patterns[i]))) {
+ if (strcmp(patterns[i+1], "/DELETE/") == 0)
+ goto GO_ON;
b3[0] = 0;
strcpy(b2, b1);
strcat(b2, patterns[i+1]);
@@ -26,6 +28,7 @@ sed_emulator(int narg, char **patterns)
}
}
puts(b1);
+ GO_ON:;
}
}
diff --git a/src/util/ecl.nsi1 b/src/util/ecl.nsi1
new file mode 100644
index 000000000..a41770710
--- /dev/null
+++ b/src/util/ecl.nsi1
@@ -0,0 +1,54 @@
+; Script generated by the HM NIS Edit Script Wizard.
+
+; HM NIS Edit Wizard helper defines
+!define PRODUCT_NAME "ECL"
+!define PRODUCT_VERSION "0.9d"
+!define PRODUCT_PUBLISHER "Juan Jose Garcia Ripoll"
+!define PRODUCT_WEB_SITE "http://ecls.sourceforge.net"
+!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\ecl.exe"
+!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
+!define PRODUCT_UNINST_ROOT_KEY "HKLM"
+!define ECLDIR "@ECLDIR@"
+
+; MUI 1.67 compatible ------
+!include "MUI.nsh"
+
+; MUI Settings
+!define MUI_ABORTWARNING
+!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
+!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
+
+; Welcome page
+!insertmacro MUI_PAGE_WELCOME
+; License page
+!insertmacro MUI_PAGE_LICENSE "${ECLDIR}\doc\Copyright"
+; Directory page
+!insertmacro MUI_PAGE_DIRECTORY
+; Instfiles page
+!insertmacro MUI_PAGE_INSTFILES
+; Finish page
+!define MUI_FINISHPAGE_RUN "$INSTDIR\ecl.exe"
+!insertmacro MUI_PAGE_FINISH
+
+; Uninstaller pages
+!insertmacro MUI_UNPAGE_INSTFILES
+
+; Language files
+!insertmacro MUI_LANGUAGE "English"
+
+; MUI end ------
+
+Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
+OutFile "Setup.exe"
+InstallDir "$PROGRAMFILES\ECL"
+InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
+ShowInstDetails show
+ShowUnInstDetails show
+
+Section "Hauptgruppe" SEC01
+ SetOutPath "$INSTDIR"
+ SetOverwrite ifnewer
+ File "${ECLDIR}\ecl.exe"
+ CreateDirectory "$SMPROGRAMS\ECL"
+ CreateShortCut "$SMPROGRAMS\ECL\ECL.lnk" "$INSTDIR\ecl.exe"
+ CreateShortCut "$DESKTOP\ECL.lnk" "$INSTDIR\ecl.exe"
diff --git a/src/util/ecl.nsi2 b/src/util/ecl.nsi2
new file mode 100644
index 000000000..c32ba309e
--- /dev/null
+++ b/src/util/ecl.nsi2
@@ -0,0 +1,33 @@
+SectionEnd
+
+Section -AdditionalIcons
+ WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
+ CreateShortCut "$SMPROGRAMS\ECL\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
+ CreateShortCut "$SMPROGRAMS\ECL\Uninstall.lnk" "$INSTDIR\uninst.exe"
+SectionEnd
+
+Section -Post
+ WriteUninstaller "$INSTDIR\uninst.exe"
+ WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\ecl.exe"
+ WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
+ WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
+ WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\ecl.exe"
+ WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
+ WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
+ WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
+SectionEnd
+
+
+Function un.onUninstSuccess
+ HideWindow
+ MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) has been succesfully deinstalled."
+FunctionEnd
+
+Function un.onInit
+ MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Do you really want to deinstall $(^Name)?" IDYES +2
+ Abort
+FunctionEnd
+
+Section Uninstall
+ Delete "$INSTDIR\${PRODUCT_NAME}.url"
+ Delete "$INSTDIR\uninst.exe"
diff --git a/src/util/ecl.nsi3 b/src/util/ecl.nsi3
new file mode 100644
index 000000000..761cadeee
--- /dev/null
+++ b/src/util/ecl.nsi3
@@ -0,0 +1,14 @@
+ Delete "$INSTDIR\ecl.exe"
+
+ Delete "$SMPROGRAMS\ECL\Uninstall.lnk"
+ Delete "$SMPROGRAMS\ECL\Website.lnk"
+ Delete "$DESKTOP\ECL.lnk"
+ Delete "$SMPROGRAMS\ECL\ECL.lnk"
+
+ RMDir "$SMPROGRAMS\ECL"
+ RMDir "$INSTDIR"
+
+ DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
+ DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
+ SetAutoClose true
+SectionEnd
diff --git a/src/util/make_msvcrtlib b/src/util/make_msvcrtlib
new file mode 100755
index 000000000..85c80b165
--- /dev/null
+++ b/src/util/make_msvcrtlib
@@ -0,0 +1,16 @@
+#!/bin/sh
+set -x
+export MSVC="d:/unix/msvc/bin"
+
+cat > exports.sed < msvcrt.def
+${MSVC}/link -dump -exports ${SYSTEMROOT}/System32/msvcrt.dll | tee msvcrt.out | sed -nf exports.sed >> msvcrt.def
+${MSVC}/link -lib -machine:X86 -def:msvcrt.def -out:msvcrt.lib