Disable Common Lisp / CLISP target language

Clean up to disable target languages that have been neglected/not functional.
Target language be fully deleted in SWIG 4.1 unless a new maintainer brings
it up to an acceptable status (experimental or supported).

Issue #1447
This commit is contained in:
William S Fulton 2019-02-04 20:26:54 +00:00
commit cb4bd26422
11 changed files with 10 additions and 284 deletions

View file

@ -11,8 +11,8 @@ SWIG is a software development tool that reads C/C++ header files and
generates the wrapper code needed to make C and C++ code accessible
from other programming languages including Perl, Python, Tcl, Ruby,
PHP, C#, Go, Java, Javascript, Lua, Scheme (Guile, MzScheme, CHICKEN),
D, Ocaml, Octave, R, Scilab, Common Lisp (CLISP,
Allegro CL, CFFI). SWIG can also export its parse tree in
D, Ocaml, Octave, R, Scilab, Common Lisp (Allegro CL, CFFI).
SWIG can also export its parse tree in
the form of XML. Major applications of SWIG
include generation of scripting language extension modules, rapid
prototyping, testing, and user interface development for large

View file

@ -7,6 +7,10 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/
Version 4.0.0 (in progress)
===========================
2019-02-04: wsfulton
[CLISP] #1447 GNU Common Lisp has been disabled as a target language in SWIG as part of a
clean up to remove target languages that have been neglected/not functional.
2019-02-04: wsfulton
[S-EXP] #1447 Common Lisp S-Exp has been disabled as a target language in SWIG as part of a
clean up to remove target languages that have been neglected/not functional.

View file

@ -19,10 +19,8 @@
<li><a href="#Lisp_nn6">Generating CFFI bindings for C++ code</a>
<li><a href="#Lisp_nn7">Inserting user code into generated files</a>
</ul>
<li><a href="#Lisp_nn8">CLISP</a>
<ul>
<li><a href="#Lisp_nn9">Additional Commandline Options </a>
<li><a href="#Lisp_nn10">Details on CLISP bindings</a>
</ul>
</ul>
</div>
@ -38,8 +36,7 @@
There are more than 9 different implementations of common lisp which
are available, all have different foreign function
interfaces. SWIG currently supports only the Allegro Common
Lisp, Common Foreign Function Interface(CFFI), CLisp
foreign function interfaces.
Lisp, Common Foreign Function Interface(CFFI).
</p>
<H2><a name="Lisp_nn2">29.1 Allegro Common Lisp</a></H2>
@ -80,15 +77,6 @@ swig -cffi -module <i>module-name</i> <i>file-name</i>
<H3><a name="Lisp_nn4">29.2.1 Additional Commandline Options </a></H3>
<p>
The following table list the additional commandline options available for the CLISP module. They can also be seen by using:
</p>
<div class="code"><pre>
swig -cffi -help
</pre></div>
<br/>
<table summary="CFFI specific options">
<tr>
<th> CFFI specific options</th>
@ -621,192 +609,5 @@ Note that the block <tt>%{ ... %}</tt> is effectively a shortcut for
</p>
<H2><a name="Lisp_nn8">29.3 CLISP</a></H2>
<p>
<a href="http://clisp.cons.org">CLISP</a> is a feature-loaded
implementation of common lisp which is portable across most of the
operating system environments and hardware. CLISP includes an
interpreter, a compiler, a debugger, CLOS, MOP, a foreign
language interface, i18n, regular expressions, a socket
interface, and more. An X11 interface is available through CLX,
Garnet and CLUE/CLIO. Command line editing is provided by
readline. CLISP runs Maxima, ACL2 and many other Common Lisp
packages.
</p>
<p>
To run the clisp module of SWIG requires very little effort, you
just need to execute:
</p>
<div class="code"><pre>
swig -clisp -module <i>module-name</i> <i>file-name</i>
</pre></div>
<p>
Because of the high level nature of the CLISP FFI, the bindings
generated by SWIG may not be absolutely correct, and you may need
to modify them. The good thing is that you don't need to complex
interface file for the CLISP module. The CLISP module tries to
produce code which is both human readable and easily modifiable.
</p>
<H3><a name="Lisp_nn9">29.3.1 Additional Commandline Options </a></H3>
<p>
The following table list the additional commandline options available for the CLISP module. They can also be seen by using:
</p>
<div class="code"><pre>
swig -clisp -help
</pre></div>
<br/>
<table summary="CLISP specific options">
<tr>
<th>CLISP specific options</th>
</tr>
<tr>
<td>-extern-all</td>
<td>If this option is given then clisp definitions for all the functions<br/>
and global variables will be created otherwise only definitions for<br/>
externed functions and variables are created.
</td>
</tr>
<tr>
<td>-generate-typedef</td>
<td>If this option is given then def-c-type will be used to generate<br/>
shortcuts according to the typedefs in the input.
</td>
</tr>
</table>
<H3><a name="Lisp_nn10">29.3.2 Details on CLISP bindings</a></H3>
<p>
As mentioned earlier the CLISP bindings generated by SWIG may need
some modifications. The clisp module creates a lisp file with
the same name as the module name. This
lisp file contains a 'defpackage' declaration, with the
package name same as the module name. This package uses the
'common-lisp' and 'ffi' packages. Also, package exports all
the functions, structures and variables for which an ffi
binding was generated.<br/>
After generating the defpackage statement, the clisp module also
sets the default language.
<div class="targetlang"><pre>
(defpackage :test
(:use :common-lisp :ffi)
(:export
:make-bar
:bar-x
:bar-y
:bar-a
:bar-b
:bar-z
:bar-n
:pointer_func
:func123
:make-cfunr
:lispsort_double
:test123))
(in-package :test)
(default-foreign-language :stdc)
</pre></div>
<p>
The ffi wrappers for functions and variables are generated as shown
below. When functions have arguments of type "double * array",
SWIG doesn't knows whether it is an 'out' argument or it is
an array which will be passed, so SWIG plays it safe by
declaring it as an '(array (ffi:c-ptr DOUBLE-FLOAT))'. For
arguments of type "int **z[100]" where SWIG has more
information, i.e., it knows that 'z' is an array of pointers to
pointers of integers, SWIG defines it to be '(z (ffi:c-ptr
(ffi:c-array (ffi:c-ptr (ffi:c-ptr ffi:int)) 100)))'
</p>
<div class="code"><pre>
extern "C" {
int pointer_func(void (*ClosureFun)( void* _fun, void* _data, void* _evt ), int y);
int func123(div_t * x, int **z[100], int y[][1000][10]);
void lispsort_double (int n, double * array);
void test123(float x , double y);
}
</pre></div>
<div class="targetlang"><pre>
(ffi:def-call-out pointer_func
(:name "pointer_func")
(:arguments (ClosureFun (ffi:c-function (:arguments (arg0 (ffi:c-pointer NIL))
(arg1 (ffi:c-pointer NIL))
(arg2 (ffi:c-pointer NIL)))
(:return-type NIL)))
(y ffi:int))
(:return-type ffi:int)
(:library +library-name+))
(ffi:def-call-out func123
(:name "func123")
(:arguments (x (ffi:c-pointer div_t))
(z (ffi:c-ptr (ffi:c-array (ffi:c-ptr (ffi:c-ptr ffi:int)) 100)))
(y (ffi:c-ptr (ffi:c-ptr (ffi:c-array ffi:int (1000 10))))))
(:return-type ffi:int)
(:library +library-name+))
(ffi:def-call-out lispsort_double
(:name "lispsort_double")
(:arguments (n ffi:int)
(array (ffi:c-ptr DOUBLE-FLOAT)))
(:return-type NIL)
(:library +library-name+))
(ffi:def-call-out test123
(:name "test")
(:arguments (x SINGLE-FLOAT)
(y DOUBLE-FLOAT))
(:return-type NIL)
(:library +library-name+))
</pre></div>
<p>
The module also handles strutcures and #define constants as shown
below. SWIG automatically adds the constructors and accessors
created for the struct to the list of symbols exported by the
package.
</p>
<div class="code"><pre>
struct bar {
short x, y;
char a, b;
int *z[1000];
struct bar * n;
};
#define max 1000
</pre></div>
<div class="targetlang"><pre>
(ffi:def-c-struct bar
(x :type ffi:short)
(y :type ffi:short)
(a :type character)
(b :type character)
(z :type (ffi:c-array (ffi:c-ptr ffi:int) 1000))
(n :type (ffi:c-pointer bar)))
(defconstant max 1000)
</pre></div>
</body>
</html>

View file

@ -112,7 +112,6 @@ SWIG_VERSION Hexadecimal (binary-coded decimal) number contai
SWIGALLEGROCL Defined when using Allegro CL
SWIGCFFI Defined when using CFFI
SWIGCHICKEN Defined when using CHICKEN
SWIGCLISP Defined when using CLISP
SWIGCSHARP Defined when using C#
SWIGGUILE Defined when using Guile
SWIGJAVA Defined when using Java

View file

@ -120,7 +120,6 @@ for example, <tt>swig -ruby -help</tt> for Ruby.
Supported Target Language Options
-allegrocl - Generate ALLEGROCL wrappers
-chicken - Generate CHICKEN wrappers
-clisp - Generate CLISP wrappers
-cffi - Generate CFFI wrappers
-csharp - Generate C# wrappers
-d - Generate D wrappers

View file

@ -1391,42 +1391,6 @@ allegrocl_clean:
rm -f core @EXTRA_CLEAN@
rm -f *.@OBJEXT@ *@SO@
##################################################################
##### CLISP ######
##################################################################
CLISP = @CLISPBIN@
CLISP_SCRIPT=$(RUNME).lisp
clisp: $(SRCDIR_SRCS)
$(SWIG) -clisp $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH)
clisp_cpp: $(SRCDIR_SRCS)
$(SWIG) -c++ -clisp $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH)
# -----------------------------------------------------------------
# Run CLISP example
# -----------------------------------------------------------------
clisp_run:
$(RUNTOOL) $(CLISP) -batch -s $(CLISP_SCRIPT) $(RUNPIPE)
# -----------------------------------------------------------------
# Version display
# -----------------------------------------------------------------
clisp_version:
$(CLISP) --version | head -n 1
# -----------------------------------------------------------------
# Cleaning the CLISP examples
# -----------------------------------------------------------------
clisp_clean:
rm -f *_wrap* *~ .~*
rm -f core @EXTRA_CLEAN@
rm -f *.@OBJEXT@ *@SO@
##################################################################
##### CFFI ######
##################################################################

View file

@ -73,7 +73,6 @@ skip-chicken = test -n "@SKIP_CHICKEN@"
skip-csharp = test -n "@SKIP_CSHARP@"
skip-lua = test -n "@SKIP_LUA@"
skip-allegrocl = test -n "@SKIP_ALLEGROCL@"
skip-clisp = test -n "@SKIP_CLISP@"
skip-cffi = test -n "@SKIP_CFFI@"
skip-r = test -n "@SKIP_R@"
skip-scilab = test -n "@SKIP_SCILAB@"
@ -117,7 +116,6 @@ check-aliveness:
@$(skip-chicken) || ./$(TARGET) -chicken -help
@$(skip-csharp) || ./$(TARGET) -csharp -help
@$(skip-allegrocl)|| ./$(TARGET) -allegrocl -help
@$(skip-clisp) || ./$(TARGET) -clisp -help
@$(skip-cffi) || ./$(TARGET) -cffi -help
@$(skip-lua) || ./$(TARGET) -lua -help
@$(skip-r) || ./$(TARGET) -r -help
@ -147,7 +145,6 @@ check-versions: \
check-csharp-version \
check-lua-version \
check-allegrocl-version \
check-clisp-version \
check-cffi-version \
check-r-version \
check-scilab-version \
@ -184,7 +181,6 @@ check-examples: \
check-csharp-examples \
check-lua-examples \
check-allegrocl-examples \
check-clisp-examples \
check-cffi-examples \
check-r-examples \
check-scilab-examples \
@ -207,7 +203,6 @@ chicken_examples :=$(shell sed '/^\#/d' $(srcdir)/Examples/chicken/check.list)
csharp_examples :=$(shell sed '/^\#/d' $(srcdir)/Examples/csharp/check.list)
lua_examples :=$(shell sed '/^\#/d' $(srcdir)/Examples/lua/check.list)
allegrocl_examples :=
clisp_examples :=
cffi_examples :=
r_examples :=$(shell sed '/^\#/d' $(srcdir)/Examples/r/check.list)
scilab_examples :=$(shell sed '/^\#/d' $(srcdir)/Examples/scilab/check.list)
@ -251,7 +246,6 @@ check-test-suite: \
check-csharp-test-suite \
check-lua-test-suite \
check-allegrocl-test-suite \
check-clisp-test-suite \
check-cffi-test-suite \
check-chicken-test-suite \
check-r-test-suite \
@ -302,7 +296,6 @@ all-test-suite: \
all-csharp-test-suite \
all-lua-test-suite \
all-allegrocl-test-suite \
all-clisp-test-suite \
all-cffi-test-suite \
all-chicken-test-suite \
all-r-test-suite \
@ -329,7 +322,6 @@ broken-test-suite: \
broken-csharp-test-suite \
broken-lua-test-suite \
broken-allegrocl-test-suite \
broken-clisp-test-suite \
broken-cffi-test-suite \
broken-chicken-test-suite \
broken-r-test-suite \
@ -468,7 +460,7 @@ install-main:
@$(INSTALL_PROGRAM) $(TARGET) $(DESTDIR)$(BIN_DIR)/`echo $(TARGET_NOEXE) | sed '$(transform)'`@EXEEXT@
lib-languages = typemaps tcl perl5 python guile java mzscheme ruby php ocaml octave \
chicken csharp allegrocl clisp lua cffi r go d javascript javascript/jsc \
chicken csharp allegrocl lua cffi r go d javascript javascript/jsc \
javascript/v8 scilab xml
lib-modules = std

2
README
View file

@ -5,7 +5,7 @@ Version: 4.0.0 (in progress)
Tagline: SWIG is a compiler that integrates C and C++ with languages
including Perl, Python, Tcl, Ruby, PHP, Java, C#, D, Go, Lua,
Octave, R, Scheme (Guile, MzScheme/Racket, CHICKEN), Scilab,
Ocaml, Common Lisp (CLISP, Allegro CL, CFFI).
Ocaml, Common Lisp (Allegro CL, CFFI).
SWIG can also export its parse tree into XML.
SWIG reads annotated C/C++ header files and creates wrapper code (glue

View file

@ -50,7 +50,6 @@ eswig_SOURCES = CParse/cscanner.c \
Modules/browser.cxx \
Modules/cffi.cxx \
Modules/chicken.cxx \
Modules/clisp.cxx \
Modules/contract.cxx \
Modules/csharp.cxx \
Modules/d.cxx \

View file

@ -29,7 +29,6 @@ extern "C" {
Language *swig_allegrocl(void);
Language *swig_cffi(void);
Language *swig_chicken(void);
Language *swig_clisp(void);
Language *swig_csharp(void);
Language *swig_d(void);
Language *swig_go(void);
@ -59,7 +58,7 @@ extern "C" {
static TargetLanguageModule modules[] = {
{"-allegrocl", swig_allegrocl, "ALLEGROCL", Supported},
{"-chicken", swig_chicken, "CHICKEN", Supported},
{"-clisp", swig_clisp, "CLISP", Supported},
{"-clisp", NULL, "CLISP", Disabled},
{"-cffi", swig_cffi, "CFFI", Supported},
{"-csharp", swig_csharp, "C#", Supported},
{"-d", swig_d, "D", Supported},

View file

@ -2457,29 +2457,6 @@ fi
AC_SUBST(ALLEGROCLBIN)
#----------------------------------------------------------------
# Look for GNU CLISP
#----------------------------------------------------------------
CLISPBIN=
AC_ARG_WITH(clisp, AS_HELP_STRING([--without-clisp], [Disable CLISP])
AS_HELP_STRING([--with-clisp=path], [Set location of CLISP executable (clisp)]),[ CLISPBIN="$withval"], [CLISPBIN="$alllang_default"])
# First, check for "--without-clisp" or "--with-clisp=no".
if test x"${CLISPBIN}" = xno; then
AC_MSG_NOTICE([Disabling CLISP])
CLISPBIN=
else
# can we find clisp?
if test "x$CLISPBIN" = xyes; then
AC_PATH_PROG(CLISPBIN, clisp)
fi
fi
AC_SUBST(CLISPBIN)
#----------------------------------------------------------------
# Look for GNU R
#----------------------------------------------------------------
@ -2828,12 +2805,6 @@ if test -z "$ALLEGROCLBIN" ; then
fi
AC_SUBST(SKIP_ALLEGROCL)
SKIP_CLISP=
if test -z "$CLISPBIN" ; then
SKIP_CLISP="1"
fi
AC_SUBST(SKIP_CLISP)
SKIP_R=
if test -z "$RBIN" ; then
SKIP_R="1"
@ -2970,7 +2941,6 @@ AC_CONFIG_FILES([
Examples/test-suite/tcl/Makefile
Examples/test-suite/lua/Makefile
Examples/test-suite/allegrocl/Makefile
Examples/test-suite/clisp/Makefile
Examples/test-suite/cffi/Makefile
Examples/test-suite/r/Makefile
Examples/test-suite/go/Makefile
@ -3022,7 +2992,6 @@ langs=""
test -n "$SKIP_ALLEGROCL" || langs="${langs}allegrocl "
test -n "$SKIP_CFFI" || langs="${langs}cffi "
test -n "$SKIP_CHICKEN" || langs="${langs}chicken "
test -n "$SKIP_CLISP" || langs="${langs}clisp "
test -n "$SKIP_CSHARP" || langs="${langs}csharp "
test -n "$SKIP_D" || langs="${langs}d "
test -n "$SKIP_GO" || langs="${langs}go "