c90f71dd8c
special cases and other things in wxPython, and since I plan on making several more, I've decided to put the SWIG sources in wxPython's CVS instead of relying on maintaining patches. This effectivly becomes a fork of an obsolete version of SWIG, :-( but since SWIG 1.3 still doesn't have some things I rely on in 1.1, not to mention that my custom patches would all have to be redone, I felt that this is the easier road to take. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15307 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
382 lines
14 KiB
Plaintext
382 lines
14 KiB
Plaintext
SWIG (Simplified Wrapper and Interface Generator)
|
|
Version 1.1 (Maintenance)
|
|
|
|
Copyright (C) 1995-1999
|
|
University of Utah and the Regents of the University of California
|
|
|
|
August 8, 1999
|
|
|
|
1. Introduction
|
|
---------------
|
|
SWIG is a compiler that attempts to make it easy to integrate C, C++,
|
|
or Objective-C code with scripting languages including Perl, Tcl, and
|
|
Python. In a nutshell, you give it a bunch of ANSI C/C++ declarations
|
|
and it generates an interface between C and your favorite scripting
|
|
language. However, this is only scratching the surface of what SWIG
|
|
can do--some of its more advanced features include automatic
|
|
documentation generation, module and library management, extensive
|
|
customization options, and more.
|
|
|
|
SWIG is entirely the product of users who have used the system and
|
|
suggested new ideas. There are far too many people to thank
|
|
individually, but without this support, SWIG would be not be nearly as
|
|
powerful or fun to use as it is now. Many thanks!
|
|
|
|
2. Currently Supported Languages
|
|
----------------------------------
|
|
|
|
To use SWIG, you will need at least one of the following scripting
|
|
languages :
|
|
|
|
Tcl7.3, Tk3.6 (and all newer versions)
|
|
Tcl8.0, Tk8.0 (somewhat experimental)
|
|
Python1.3 (or newer)
|
|
Perl5.003 (or newer)
|
|
Perl4
|
|
FSF Guile 1.0 (experimental)
|
|
|
|
If you don't have any of these, SWIG will still compile, but it won't
|
|
be particularly useful. Note : it is not necessary to have *all* of
|
|
these languages installed to use SWIG--only the scripting languages you
|
|
want to use.
|
|
|
|
3. Installation (Unix)
|
|
------------------------
|
|
|
|
To compile and use SWIG, you will need the following on your machine:
|
|
|
|
A C++ compiler (ie. g++)
|
|
An ANSI C compiler (ie. gcc)
|
|
yacc or bison (only needed if you are going to rebuild the SWIG parser)
|
|
|
|
To compile and install SWIG, type the following :
|
|
|
|
./configure
|
|
make
|
|
make runtime (optional. see below)
|
|
make install
|
|
|
|
The configuration script will attempt to locate various packages on
|
|
your machine, including Tcl, Perl5, and Python. Don't panic if
|
|
you get 'not found' messages--SWIG does not need these packages
|
|
to compile or run. The configure script is actually looking for
|
|
these packages so that you can try out the SWIG examples contained
|
|
in the 'Examples' directory without having to hack Makefiles.
|
|
See the Examples section below for more details.
|
|
|
|
The 'make runtime' option is an optional step that can be used to
|
|
build the SWIG runtime libraries. These libraries are only used with
|
|
larger packages and are not necessary for learning SWIG or trying
|
|
the examples (please refer to the "Advanced topics" section of the
|
|
SWIG Users manual for more details about this).
|
|
|
|
Typing 'make test' will run a rather extensive series of tests
|
|
and can be run before running 'make install' (if you are paranoid).
|
|
|
|
There are a number of configuration options that you can give to
|
|
'configure' :
|
|
|
|
--prefix=/usr/local
|
|
|
|
Set the installation prefix. SWIG installs into
|
|
/usr/local by default.
|
|
|
|
--exec_prefix=/usr/local
|
|
|
|
Set the prefix used to install platform specific
|
|
files (binaries and libraries). Use this if the
|
|
location is different than that given with --prefix.
|
|
|
|
--with-lang={TCL,TCL8,PYTHON,PERL5,PERL4,GUILE}
|
|
|
|
This lets you choose the default SWIG target language.
|
|
By default, SWIG chooses TCL, but you can select
|
|
another as shown :
|
|
|
|
./configure --with-lang=PYTHON
|
|
|
|
--with-doc={ASCII,LATEX,HTML,NODOC}
|
|
|
|
This lets you choose the default SWIG documentation
|
|
method. By default, SWIG chooses ASCII.
|
|
|
|
|
|
4. Site specific installation
|
|
-------------------------------
|
|
|
|
While not required for compiling SWIG, the configuration script looks
|
|
for various packages in order to create a makefile for compiling the
|
|
examples. This makefile is also installed with the SWIG package.
|
|
The following configuration options can be used to set the location
|
|
of various packages.
|
|
|
|
--with-tcl=pathname - Set root directory of Tcl installation.
|
|
SWIG will use $pathname/include and
|
|
$pathname/lib.
|
|
|
|
--with-tclincl=pathname - Set exact location of Tcl include files
|
|
|
|
--with-tcllib=pathname - Set exact location of Tcl library files
|
|
|
|
--with-itcl=pathname - Same as above but for [incr Tcl]
|
|
|
|
--with-itclincl=pathname - Location of [incr Tcl] include files
|
|
|
|
--with-itcllib=pathname - Location of [incr Tcl] libraries
|
|
|
|
--with-py=pathname - Set package location of Python. This is usually
|
|
something like /usr/local. configure will attempt
|
|
to locate the appropriate include and library files.
|
|
|
|
--with-pyincl=pathname - Set location of Python include files
|
|
(for example, /usr/local/include)
|
|
|
|
--with-pylib=pathname - Set location of Python library files
|
|
(for example, /usr/local/lib)
|
|
|
|
--with-perl5=executable - Specify your perl5 executable. SWIG will figure
|
|
out where files are by running this version of
|
|
Perl and grabbing its configuration data.
|
|
|
|
|
|
Other options :
|
|
|
|
--without-yacc - Try to compile SWIG using a pregenerated YACC
|
|
file generated by Berkeley YACC (byacc). Only recommended
|
|
if you get compiler errors when trying to compile parser.y
|
|
or parser.cxx.
|
|
|
|
Changing the C++ compiler:
|
|
|
|
By default, SWIG will look for g++. You can change the C++ compile as follows :
|
|
|
|
env CXX=CC configure --prefix=/usr/local ... etc...
|
|
|
|
or
|
|
|
|
setenv CXX=CC
|
|
./configure ... etc ...
|
|
|
|
SWIG has been successfully compiled and tested under g++, the SGI C++
|
|
compiler, and the SunPro C++ compiler.
|
|
|
|
5. Testing
|
|
-----------
|
|
The SWIG parser and language modules can be tested by typing 'make test'.
|
|
Be forewarned, this runs a large collection of tests on all of SWIG's
|
|
language modules and documentation methods. The tests may take 5-10
|
|
minutes to run, but a report of errors will be written to 'test.log'.
|
|
If this exists, it will contain error messages for failed tests. If
|
|
the file is missing, it means all tests were considered successful.
|
|
|
|
The testing process requires approximately 30-40 Mbytes of disk space.
|
|
After testing, you may wish to type 'make testclean' which will
|
|
return the testing directory to its original state.
|
|
|
|
Note : The testing procedure requires both 'sh' and 'perl'. If you
|
|
don't have these installed, some of the tests won't work.
|
|
|
|
6. Installation for Windows 95 and NT
|
|
-------------------------------------
|
|
|
|
The Win directory contains makefiles for Microsoft Visual C++ 4.x/5.x and
|
|
Borland C++. See the README.txt file in the Win directory for specific
|
|
build instructions. Many thanks to Kevin Butler (butler@cs.byu.edu)
|
|
and Pier Giorgio Esposito for supplying these Makefiles.
|
|
|
|
7. Installation for Macintosh
|
|
-----------------------------
|
|
|
|
A Macintosh version of SWIG is available separately as a PowerPC
|
|
executable. A source version is also available, but is somewhat
|
|
complicated to build due to dependencies on other packages
|
|
including Tcl 8.0. Please refer to the SWIG homepage for more
|
|
information.
|
|
|
|
8. Examples
|
|
------------
|
|
|
|
The 'Examples' directory contains examples for all of the supported
|
|
scripting languages. All of the examples rely on the file
|
|
'Makefile.template' located in the top-level directory. This makefile
|
|
is created by 'configure', but the configuration process is not
|
|
foolproof. To check this Makefile type
|
|
|
|
make testbuild
|
|
|
|
This will attempt to build various kinds of extensions and report its
|
|
success or failure. If this fails, you may need to edit the file
|
|
'Makefile.template' by hand. This usually isn't difficult--just
|
|
follow the instructions contained within the file. Once the 'make
|
|
testbuild' works for the language you are interested in using, you
|
|
should be able to build the examples.
|
|
|
|
The examples will not compile properly if you have not installed SWIG.
|
|
If you would like to try the examples before installation, set the
|
|
SWIG_LIB environment variable as follows :
|
|
|
|
setenv SWIG_LIB ${pathname}/SWIG1.1/swig_lib
|
|
|
|
Where ${pathname} the location of the SWIG source.
|
|
|
|
*** NOTE *** If you are replacing an older version of SWIG with a new
|
|
one, the examples may not compile correctly unless you set the
|
|
above environment variable or do a 'make install' first.
|
|
|
|
9. Resources
|
|
--------------
|
|
|
|
Up-to-date SWIG related information can be found at
|
|
|
|
http://www.swig.org
|
|
|
|
SWIG source code and software updates are also available via anonymous
|
|
ftp at
|
|
|
|
ftp://ftp.swig.org
|
|
|
|
|
|
You can join the SWIG mailing list by going to the following location:
|
|
|
|
http://www.cs.uchicago.edu/mailman/listinfo/swig
|
|
|
|
The SWIG mailing list is a forum for discussing various applications
|
|
of SWIG, installation problems, ideas for system improvements and
|
|
future work.
|
|
|
|
*** NEWSFLASH *** SWIG development has moved to the Univerity of
|
|
Chicago. Developer information can be found at
|
|
|
|
http://swig.cs.uchicago.edu
|
|
|
|
10. Installation Problems
|
|
-------------------------
|
|
|
|
As far as I know the installation works on the following platforms :
|
|
|
|
- SunOS 4.1.3
|
|
- Solaris
|
|
- Irix 5.3
|
|
- Irix 6.2
|
|
- HPUX
|
|
- AIX 4.1
|
|
- Linux
|
|
- MkLinux
|
|
- MachTen
|
|
- UNICOS
|
|
- Windows 95
|
|
- Windows NT 4.0
|
|
- MacOS System 7.5.3
|
|
|
|
SWIG development takes place primarily on Linux and Solaris 2.6. I've
|
|
tested most of the examples on these platforms. I have also tested
|
|
SWIG under Win95 and MacOS, but that is still somewhat experimental.
|
|
|
|
If you've tried everything and can't get SWIG to compile, please send
|
|
me e-mail at beazley@cs.uchicago.edu, and we'll try to figure it out.
|
|
I try to answer all e-mail that I receive. However, occasionally I
|
|
receive messages with bad return addresses and can't respond. If you
|
|
don't hear back within a few days, try sending a message to
|
|
'swig@cs.uchicago.edu'.
|
|
|
|
11. Documentation
|
|
-----------------
|
|
|
|
Over 300 pages of documentation describing almost every aspect of SWIG
|
|
is available in the Doc directory. Don't let the amount of
|
|
documentation scare you--SWIG is easy enough to use that you can
|
|
probably start using it by only looking at a few simple examples.
|
|
However, at some point you will probably want to know more so I hope
|
|
that the manual will come in useful. Besides, I hate black boxes...
|
|
|
|
The documentation is distributed in Adobe PDF format and can be viewed
|
|
using the Adobe Acrobat Reader. Acrobat is available for virtually
|
|
all machines and can be freely obtained from Adobe at www.adobe.com.
|
|
Postscript and HTML versions of the manual are also available from the
|
|
SWIG FTP site.
|
|
|
|
12. Incompatibilities
|
|
---------------------
|
|
|
|
This release should be mostly compatible with SWIG 1.0
|
|
(Final). However, the SWIG documentation system has been completely
|
|
rewritten and the C API has been changed greatly. It is unlikely that
|
|
any custom SWIG language modules written in C++ for 1.0 will work with
|
|
1.1. While porting to 1.1 is not that difficult, there are a number
|
|
of important changes. See the file 'Doc/Porting' for a list of
|
|
changes to the C++ API and how to convert an older SWIG module to work
|
|
with 1.1.
|
|
|
|
13. Bug Reports
|
|
----------------
|
|
|
|
Bug reports should be submitted to the online bug-tracking system
|
|
which is available at :
|
|
|
|
http://swig.cs.uchicago.edu/cgi-bin/swig
|
|
|
|
Before submitting a bug, please check this site to see if it has
|
|
already been reported. If not, provide as much information as
|
|
possible including the SWIG version number, operating system, and
|
|
compiler being used. Note : I tend to fix bugs in batches and may
|
|
only respond to a bug report when it has actually been fixed---posting
|
|
to the mailing list is often a better way to get an immediate response
|
|
to a problem.
|
|
|
|
14. Legal Stuff
|
|
---------------
|
|
SWIG is completely free and non-proprietary. You can do whatever you
|
|
want with it (including distribution), provided that you follow these
|
|
rules, 1) Keep all of the copyright notices intact, 2) don't claim
|
|
that you wrote it, and 3) Don't sue anyone if it breaks. Otherwise,
|
|
have fun.
|
|
|
|
15. Disclaimer
|
|
----------------
|
|
|
|
While I believe that SWIG is reasonably stable, I'm always tinkering
|
|
with it and trying to make it better. There may be a few bugs hiding
|
|
around so if you experience any problems let me know. If you think
|
|
that SWIG is missing some capability that would be useful to have
|
|
have, post a message on the SWIG mailing list. Most of the previous
|
|
suggestions have already been incorporated into this release.
|
|
|
|
16. Acknowledgments
|
|
---------------------
|
|
|
|
SWIG would not be possible without the contributions of people who
|
|
tried out the beta versions and offered feedback and bug reports.
|
|
While there are far too many people to list at point, I'd like to
|
|
especially acknowledge the following individuals and organizations
|
|
for supporting SWIG and making major contributions :
|
|
|
|
David Ascher, Erik Bierwagen, Kurtis Bleeker, John Buckman, Kevin
|
|
Butler, Pier Giorgio Esposito, David Fletcher, Mark Hammond, Mark
|
|
Harrison, Brad Holian, Gary Holt, Chris Johnson, Peter Lomdahl, Mark
|
|
Lutz, Chris Myers, Paul Saxe, John Schmidt, Tom Schwaller, Peter-Pike
|
|
Sloan, Patrick Tullmann, Larry Virden, Tser-Yuan Yang, Shujia Zhou.
|
|
|
|
and
|
|
|
|
Los Alamos National Laboratory
|
|
Lawrence Livermore National Laboratory
|
|
Cornell Theory Center
|
|
University of Utah
|
|
The Scientific Computing and Imaging Group (University of Utah)
|
|
|
|
(My apologies to anyone I missed...)
|
|
|
|
If you find SWIG to be useful, I'd like to know about it.
|
|
|
|
Enjoy!
|
|
|
|
Dave Beazley
|
|
Department of Computer Science
|
|
University of Chicago
|
|
Chicago, IL 60637
|
|
beazley@cs.uchicago.edu
|
|
|
|
|
|
|
|
|