SWI-Prolog Distribution Directory ** Last update: Mar 19, 2009, 2009 (Version 5.7.8) AUTHOR ====== Jan Wielemaker HCS (Formery SWI) Web and Media University of Amsterdam VU University Amsterdam Kruislaan 419 De Boelelaan 1081a 1098 VA Amsterdam 1081 HV Amsterdam The Netherlands E-mail: jan@swi-prolog.org A list of contributors can be found at http://www.swi-prolog.org/Contributors.html WEB-HOME ======== Please find the up-to-date information on SWI-Prolog at the link below. You will find the latest sources (also accessible through GIT), a FAQ, mailinglist archive, various additional packages, etc. http://www.swi-prolog.org DOCUMENTATION ============= Documentation is available on-line using the help/1 and apropos/1 commands. HTML and PDF versions of the manual are available from the SWI-Prolog download page. The add-on packages are documented in the doc/packages directory of the installed system. DIRECTORIES =========== The SWI-Prolog source tree consists of the following directories. The packages are labeled as follows: I - Installed e - experimental/incomplete f - foreign (not for SWI-Prolog) N - Not installed, but ok. o - Obsolete ---------------------------------------------------------------- ./src C sources ./boot Prolog system predicates defined in Prolog ./library Prolog user's library ./include Include files. Mostly for handling foreign-code ./man Manual (LaTeX) ./packages Additional packages: chr I Constraint handling rules clib I Process management and TCP/IP sockets clpqr I Constraints over floats and rational numbers cpp I C++ wrapper for foreign-language interface cppproxy e C++ based socket object exchange C-sicstus f Package for SICStus to emulate SWI foreign interface db N Interface to BerkeleyDB 3.0 or higher http I HTTP server and client library inclpr N nonlinear (polynomial) constraints over the real numbers jasmine N Jasmine database interface jpl I Java interface ltx2htm N LaTeX to HTML converter in Prolog for the documentation mp o Arbitrary precision arithmetic nlp I Natural language support: Porter stem and Metaphone odbc I Database connectivity pldoc I Documentation system plunit I Unit testing framework R e Interface to R statistical package semweb I RDF infrastructure smgl I XML/SGML interface as well as RDF parser ssl I Secure sockets table I Simple table-access routines (for static DB) tipc I Transparent InterProcess Communication uri e URI/URL handling xpce I The Prolog (portable) GUI toolkit and GUI tracer zlib I Compression utilities BUILDING SWI-Prolog =================== Unix using build.templ ---------------------- The script build.templ automates the 'Unix step-by-step' instructions below. Once you get this right, the same script will generally suffice to compile future versions without hassle. * Get and install the required libraries (see Unix step-by-step) and/or README.Debian. * Copy build.templ to build and edit according to the comments, instructions in 'Unix step-by-step' and INSTALL.notes. * Run ./build to build and install the system Unix step-by-step ----------------- SWI-Prolog configuration under Unix is driven by the GNU-autoconf package. Please check INSTALL for the generic installation options and INSTALL.notes for some SWI-Prolog specific things. For 99% of the cases, you just need: ./configure [--prefix=/path/to/some/dir] make sodu make install SWI-Prolog depends on these libraries: * libgmp (http://www.swox.com/gmp/) Provides large (unbounded) integers and rational numbers. Some of this is used by the constraint libraries. SWI-Prolog can be built without, but it is strongly recommended to get libgmp. * libreadline (http://www.gnu.org/software/bash/bash.html) Provides line-editing, including Prolog-specific completion. Optional, but you'll like it for interactive usage. SWI-Prolog should compile using any Unix-type system with 32 or larger (64) word-length and an ANSI-compliant C-compiler. Prolog is in part written in Prolog. Getting the Prolog part of the system compiled is generally a good test that the system functions properly. A more exhaustive test-suite can be activated using make check After installing the basic system (SWI-Prolog/lite) you can install the add-ons. To do this, go to the packages directory. Edit in Makefile the PKG macro to define the packages you wish to install. Make sure you have all required software around. See README.debian for details. Now run this in the packages directory: ./configure make sudo make install In anything fails, each package support the configure/make/make install cycle, so you can fix problems package-by-package. MS-Windows ---------- Unless there is a special reason, please use the binary distribution on MS-Windows. Otherwise, get yourself the following tools and resources * Windows-NT/2000/XP/Vista * MSVC 5.0 or later * MIME, JPEG and XPM libraries. You find precompiled versions in ftp://gollem.science.uva.nl/xpce/Windows/lib Now proceed as follows * Unpack the sources (anywhere) * Edit ...\pl\src\rules.mk following the instructions there * Open a command window and switch to ...\pl\src * Make sure PATH LIB and INCLUDE are set up properly for the compiler you want to use * Compile the system nmake /f Makefile.mak * Install the system nmake /f Makefile.mak install Thats all. You can now start plwin.exe or plcon.exe from the $(prefix)\pl\bin\ directory. If you want you can associate .PL with plwin.exe and/or add plwin.exe to your start menu. GNU-EMACS INTERFACE =================== The Prolog-mode of GNU-Emacs is rather poor. Personally, I use XPCE (see Prolog WWW home). For those whishing a proper Prolog mode for GNU-Emacs, I got the following pointers from Sam Steel: ``Fortunately there seems to be such an interface: though I suspect you know it and know of some problem I have missed. Though I have only used it for a short while, it seems to work for me. The only problem is that the interaction between it and the pager for the online help is imperfect. It is the prolog.el mode for Emacs-20 at http://www.freesoft.cz/~pdm/software/emacs/prolog-mode/ There is also apparently a version for Emacs-19 at http://w1.858.telia.com/~u85810764/Prolog-mode/index.html but I have not used this. Both appear to be freely redistributable. SWI Prolog is one of the flavours of Prolog explicitly handled.'' MODIFYING SWI-Prolog ==================== You are free to modify the SWI-Prolog kernel under the LGPL and the Prolog sources under the GPL. CONTRIBUTING ============ There are a number of ways in which you can contribute to the success of SWI-Prolog. If you have problems using SWI-Prolog or think you have found a bug check http://www.swi-prolog.org/support.html for more information as well as instructions for submitting bug-reports. If you write applications, please acknowledge the use of SWI-Prolog in your application. If your application has a web-page, please link to the SWI-Prolog home page (see the top of this file). If you write reusable libraries, consider providing them to the SWI-Prolog user community as a package (see the SWI-Prolog home page). COMMERCIAL USAGE ================ SWI-Prolog licensing aims at a large audience, combining ideas from the Free Software Foundation and the less principal Open Source Initiative. The license aims at: * Make SWI-Prolog itself and its libraries are `As free as possible'. * Allow for easy integration of contributions. * Free software can build on SWI-Prolog without limitations. * Non-free (open or proprietary) software can be produced using SWI-Prolog, although contributed pure GPL components cannot be used. Please check www.swi-prolog.org for details on commercial usage of the system as well as for SUPPORT and SPONSORING options.