Disable Common Lisp / UFFI 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:
parent
8aa4086136
commit
f63d0db21b
12 changed files with 12 additions and 119 deletions
2
ANNOUNCE
2
ANNOUNCE
|
|
@ -12,7 +12,7 @@ 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, UFFI). SWIG can also export its parse tree in
|
||||
Allegro CL, CFFI). SWIG can also export its parse tree in
|
||||
the form of XML and Lisp s-expressions. Major applications of SWIG
|
||||
include generation of scripting language extension modules, rapid
|
||||
prototyping, testing, and user interface development for large
|
||||
|
|
|
|||
|
|
@ -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
|
||||
[UFFI] #1447 Common Lisp UFFI 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
|
||||
[Pike] #1447 Pike 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.
|
||||
|
|
|
|||
|
|
@ -129,7 +129,7 @@ It is significant to note that, while this is a vendor-specific
|
|||
module, we would like to acknowledge the current and ongoing
|
||||
work by developers in the open source lisp community that are
|
||||
working on similar interfaces to implementation-independent
|
||||
foreign function interfaces (UFFI or CFFI, for example). Such
|
||||
foreign function interfaces (CFFI, for example). Such
|
||||
work can only benefit the lisp community, and we would not
|
||||
be unhappy to see some enterprising folk use this work to add
|
||||
to it.
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@
|
|||
<li><a href="#Lisp_nn9">Additional Commandline Options </a>
|
||||
<li><a href="#Lisp_nn10">Details on CLISP bindings</a>
|
||||
</ul>
|
||||
<li><a href="#Lisp_nn11">UFFI </a>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- INDEX -->
|
||||
|
|
@ -39,7 +38,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 and UFFI
|
||||
Lisp, Common Foreign Function Interface(CFFI), CLisp
|
||||
foreign function interfaces.
|
||||
</p>
|
||||
<H2><a name="Lisp_nn2">29.1 Allegro Common Lisp</a></H2>
|
||||
|
|
@ -56,8 +55,8 @@
|
|||
|
||||
<p>
|
||||
CFFI, the Common Foreign Function Interface, is a portable foreign
|
||||
function interface for ANSI Common Lisp systems, similar in
|
||||
spirit to UFFI. Unlike UFFI, CFFI requires only a small set of
|
||||
function interface for ANSI Common Lisp systems.
|
||||
CFFI requires only a small set of
|
||||
low-level functionality from the Lisp implementation, such as
|
||||
calling a foreign function by name, allocating foreign memory,
|
||||
and dereferencing pointers.
|
||||
|
|
@ -809,8 +808,5 @@ struct bar {
|
|||
|
||||
</pre></div>
|
||||
|
||||
<H2><a name="Lisp_nn11">29.4 UFFI </a></H2>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -140,7 +140,6 @@ Supported Target Language Options
|
|||
-scilab - Generate Scilab wrappers
|
||||
-sexp - Generate Lisp S-Expressions wrappers
|
||||
-tcl - Generate Tcl wrappers
|
||||
-uffi - Generate Common Lisp / UFFI wrappers
|
||||
-xml - Generate XML wrappers
|
||||
|
||||
Experimental Target Language Options
|
||||
|
|
|
|||
|
|
@ -1467,46 +1467,6 @@ cffi_clean:
|
|||
rm -f core @EXTRA_CLEAN@
|
||||
rm -f *.@OBJEXT@ *@SO@
|
||||
|
||||
##################################################################
|
||||
##### UFFI ######
|
||||
##################################################################
|
||||
|
||||
UFFI = @UFFIBIN@
|
||||
UFFI_SCRIPT=$(RUNME).lisp
|
||||
|
||||
uffi: $(SRCDIR_SRCS)
|
||||
$(SWIG) -uffi $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH)
|
||||
# $(CC) -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(ISRCS) $(INCLUDES) $(SRCDIR_SRCS)
|
||||
# $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
|
||||
|
||||
uffi_cpp: $(SRCDIR_SRCS)
|
||||
$(SWIG) -c++ -uffi $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH)
|
||||
# $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(INCLUDES)
|
||||
# $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# Run UFFI example
|
||||
# -----------------------------------------------------------------
|
||||
|
||||
uffi_run:
|
||||
$(RUNTOOL) $(UFFI) -batch -s $(UFFI_SCRIPT) $(RUNPIPE)
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# Version display
|
||||
# -----------------------------------------------------------------
|
||||
|
||||
uffi_version:
|
||||
$(UFFI) --version
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# Cleaning the UFFI examples
|
||||
# -----------------------------------------------------------------
|
||||
|
||||
uffi_clean:
|
||||
rm -f *_wrap* *~ .~*
|
||||
rm -f core @EXTRA_CLEAN@
|
||||
rm -f *.@OBJEXT@ *@SO@
|
||||
|
||||
##################################################################
|
||||
##### R ######
|
||||
##################################################################
|
||||
|
|
|
|||
10
Makefile.in
10
Makefile.in
|
|
@ -75,7 +75,6 @@ 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-uffi = test -n "@SKIP_UFFI@"
|
||||
skip-r = test -n "@SKIP_R@"
|
||||
skip-scilab = test -n "@SKIP_SCILAB@"
|
||||
skip-go = test -n "@SKIP_GO@"
|
||||
|
|
@ -119,7 +118,6 @@ check-aliveness:
|
|||
@$(skip-csharp) || ./$(TARGET) -csharp -help
|
||||
@$(skip-allegrocl)|| ./$(TARGET) -allegrocl -help
|
||||
@$(skip-clisp) || ./$(TARGET) -clisp -help
|
||||
@$(skip-uffi) || ./$(TARGET) -uffi -help
|
||||
@$(skip-cffi) || ./$(TARGET) -cffi -help
|
||||
@$(skip-lua) || ./$(TARGET) -lua -help
|
||||
@$(skip-r) || ./$(TARGET) -r -help
|
||||
|
|
@ -150,7 +148,6 @@ check-versions: \
|
|||
check-lua-version \
|
||||
check-allegrocl-version \
|
||||
check-clisp-version \
|
||||
check-uffi-version \
|
||||
check-cffi-version \
|
||||
check-r-version \
|
||||
check-scilab-version \
|
||||
|
|
@ -188,7 +185,6 @@ check-examples: \
|
|||
check-lua-examples \
|
||||
check-allegrocl-examples \
|
||||
check-clisp-examples \
|
||||
check-uffi-examples \
|
||||
check-cffi-examples \
|
||||
check-r-examples \
|
||||
check-scilab-examples \
|
||||
|
|
@ -212,7 +208,6 @@ csharp_examples :=$(shell sed '/^\#/d' $(srcdir)/Examples/csharp/check.list)
|
|||
lua_examples :=$(shell sed '/^\#/d' $(srcdir)/Examples/lua/check.list)
|
||||
allegrocl_examples :=
|
||||
clisp_examples :=
|
||||
uffi_examples :=
|
||||
cffi_examples :=
|
||||
r_examples :=$(shell sed '/^\#/d' $(srcdir)/Examples/r/check.list)
|
||||
scilab_examples :=$(shell sed '/^\#/d' $(srcdir)/Examples/scilab/check.list)
|
||||
|
|
@ -257,7 +252,6 @@ check-test-suite: \
|
|||
check-lua-test-suite \
|
||||
check-allegrocl-test-suite \
|
||||
check-clisp-test-suite \
|
||||
check-uffi-test-suite \
|
||||
check-cffi-test-suite \
|
||||
check-chicken-test-suite \
|
||||
check-r-test-suite \
|
||||
|
|
@ -309,7 +303,6 @@ all-test-suite: \
|
|||
all-lua-test-suite \
|
||||
all-allegrocl-test-suite \
|
||||
all-clisp-test-suite \
|
||||
all-uffi-test-suite \
|
||||
all-cffi-test-suite \
|
||||
all-chicken-test-suite \
|
||||
all-r-test-suite \
|
||||
|
|
@ -337,7 +330,6 @@ broken-test-suite: \
|
|||
broken-lua-test-suite \
|
||||
broken-allegrocl-test-suite \
|
||||
broken-clisp-test-suite \
|
||||
broken-uffi-test-suite \
|
||||
broken-cffi-test-suite \
|
||||
broken-chicken-test-suite \
|
||||
broken-r-test-suite \
|
||||
|
|
@ -476,7 +468,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 uffi r go d javascript javascript/jsc \
|
||||
chicken csharp allegrocl clisp lua cffi r go d javascript javascript/jsc \
|
||||
javascript/v8 scilab xml
|
||||
|
||||
lib-modules = std
|
||||
|
|
|
|||
2
README
2
README
|
|
@ -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, UFFI).
|
||||
Ocaml, Common Lisp (CLISP, Allegro CL, CFFI).
|
||||
SWIG can also export its parse tree into XML and
|
||||
Lisp s-expressions.
|
||||
|
||||
|
|
|
|||
|
|
@ -79,7 +79,6 @@ eswig_SOURCES = CParse/cscanner.c \
|
|||
Modules/swigmain.cxx \
|
||||
Modules/tcl8.cxx \
|
||||
Modules/typepass.cxx \
|
||||
Modules/uffi.cxx \
|
||||
Modules/utils.cxx \
|
||||
Modules/xml.cxx \
|
||||
Preprocessor/cpp.c \
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ extern "C" {
|
|||
Language *swig_scilab(void);
|
||||
Language *swig_sexp(void);
|
||||
Language *swig_tcl(void);
|
||||
Language *swig_uffi(void);
|
||||
Language *swig_xml(void);
|
||||
}
|
||||
|
||||
|
|
@ -88,7 +87,7 @@ static TargetLanguageModule modules[] = {
|
|||
{"-sexp", swig_sexp, "Lisp S-Expressions", Supported},
|
||||
{"-tcl", swig_tcl, "Tcl", Supported},
|
||||
{"-tcl8", swig_tcl, NULL, Supported},
|
||||
{"-uffi", swig_uffi, "Common Lisp / UFFI", Supported},
|
||||
{"-uffi", NULL, "Common Lisp / UFFI", Disabled},
|
||||
{"-xml", swig_xml, "XML", Supported},
|
||||
{NULL, NULL, NULL, Disabled}
|
||||
};
|
||||
|
|
|
|||
48
TODO
48
TODO
|
|
@ -275,54 +275,6 @@ Mzscheme
|
|||
|
||||
** Add shadow class support for the Swindle system.
|
||||
|
||||
Common Lisp
|
||||
-----------
|
||||
|
||||
* Random thoughts by mkoeppe on supporting Common Lisp implementations:
|
||||
|
||||
There are many different Foreign Function Interfaces (FFI) for
|
||||
the various CL implementations. Probably SWIG should interface
|
||||
to UFFI, a least-common-denominator FFI that supports many
|
||||
implementations.
|
||||
|
||||
Via the s-expression SWIG module we can export SWIG's parse
|
||||
tree and import it into CL. It remains to check if all
|
||||
relevant information is dumped (for instance, the type
|
||||
information). Experimental code is available to generate
|
||||
low-level UFFI declarations from this parse tree.
|
||||
|
||||
However, for wrapping C++, we also need to create C wrappers
|
||||
because most FFIs cannot directly import C++. A CL SWIG module
|
||||
could be exporting both these wrappers and UFFI declarations.
|
||||
I have experimental code (not checked in yet) that does this.
|
||||
|
||||
This is fine for generating low-level wrappers. But how do we
|
||||
support user typemaps (like converting lists and vectors to C
|
||||
arrays on input)? We have to generate Lisp code that does the
|
||||
conversion and then calls the low-level wrapper. If we
|
||||
generate Lisp code, it should be beautiful and readable.
|
||||
Therefore, we need at least a Lisp pretty printer. A Lisp
|
||||
pretty printer works best when the Lisp program is represented
|
||||
not as text but as Lisp data. Moreover, typemap writers will
|
||||
feel very much constrained by SWIG's capabilities for
|
||||
generating wrapper code, when compared to writing Lisp macros.
|
||||
Thus we would need half a re-implementation of Lisp in SWIG to
|
||||
make users happy.
|
||||
|
||||
The solution could be the following:
|
||||
|
||||
** Build a SWIG library (again) and load it into a Common Lisp
|
||||
implementation.
|
||||
|
||||
The FFI declarations could be written manually, or this could
|
||||
be bootstrapped via the s-expression module or the primitive
|
||||
UFFI wrappers. This should be easy because SWIG's API is quite
|
||||
simple.
|
||||
|
||||
The embedded SWIG would be driven by a CL program. High-level
|
||||
typemaps would be written as Lisp programs that generate Lisp
|
||||
code.
|
||||
|
||||
ALLEGROCL
|
||||
-----
|
||||
These first three will remove most of the warnings from most of the
|
||||
|
|
|
|||
|
|
@ -2846,12 +2846,6 @@ SKIP_CFFI=
|
|||
#fi
|
||||
AC_SUBST(SKIP_CFFI)
|
||||
|
||||
SKIP_UFFI=
|
||||
#if test -z "$UFFIBIN" ; then
|
||||
SKIP_UFFI="1"
|
||||
#fi
|
||||
AC_SUBST(SKIP_UFFI)
|
||||
|
||||
SKIP_SCILAB=
|
||||
if test -z "$SCILAB"; then
|
||||
SKIP_SCILAB="1"
|
||||
|
|
@ -2978,7 +2972,6 @@ AC_CONFIG_FILES([
|
|||
Examples/test-suite/allegrocl/Makefile
|
||||
Examples/test-suite/clisp/Makefile
|
||||
Examples/test-suite/cffi/Makefile
|
||||
Examples/test-suite/uffi/Makefile
|
||||
Examples/test-suite/r/Makefile
|
||||
Examples/test-suite/go/Makefile
|
||||
Source/Makefile
|
||||
|
|
@ -3047,7 +3040,6 @@ test -n "$SKIP_R" || langs="${langs}r "
|
|||
test -n "$SKIP_RUBY" || langs="${langs}ruby "
|
||||
test -n "$SKIP_SCILAB" || langs="${langs}scilab "
|
||||
test -n "$SKIP_TCL" || langs="${langs}tcl "
|
||||
test -n "$SKIP_UFFI" || langs="${langs}uffi "
|
||||
|
||||
echo "
|
||||
The SWIG test-suite and examples are configured for the following languages:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue