Go to the first
section, table of contents
This node describes the basic organization of the slisp file hierarchy. This same organization will be found in the slisp archive and in all downloaded copies.
Slisp is organized as a file directory called slisp consisting mostly of a set of modules, each contained within a subdirectory. One of the modules is xcore, the basic xlisp interpreter written by Dave Betz. Each of the other modules (each starting with x, i.e. xetc) is a set of c and or lsp functions for implementing a new module.
An slisp application is defined by a subdirectory within slisp (say sl, for the basic sl application), whose name is the name of the application, and which contains configuration information, documentation, and generated files specific to the application. This organization allows more than one application to be built within the same directory hierarchy by simply creating a new application directory.
The files within each application directory are described in section Creating a New Application.
The files within each module are described in section Creating a New Module.
The following additional files and directories are present in all slisp distributions:
Sconfigure - configure a new machine.
Smake - configure a new application.
Scopy - Download or upload an slisp application to a local directory for compiling.
make_tags - make tags for emacs
c - functions and main programs independent of any module
seval.c - routines for embedding slisp in C as a local client
netseval.c - analogous routines for running slisp over a network
sl_client. - main program for creating example network and local clients
client_check.c - check routines for local and network clients
Changelog.txt - Changes in overall slisp. This should be added to by programmers to document the changes to slisp that they upload to the shared archive.
doc - miscelaneous documentation not in info format
include - global h files needed by more than one module
Global documentation in texi format that is formatted by the program makeinfo from the Free Software Foundation. All info nodes below the slisp node, including the node you are reading now, are created from source files in this directory.
Global lsp files of use to more than one application. In particular slispinit.lsp contains useful functions, test*.lsp are used by make check to test individual modules, and classes.lsp contains macros for easier manipulation of the xlisp object system.
Makefile.x - a section of make targets that is included by the Makefiles in each module.
README - general organization of slisp
The basic slisp application sl. This directory can be used as a template for creating other applications. Each application is defined by a subdirectory of slisp whose name is the name of the application.
Files defining the characteristics of machines on which slisp is designed to run. One of these files is read by Sconfigure to configure a machine for slisp. In theory the systems information should be independent of the applications information. This is not yet actually the case. An example is that our NeXT file contains in the variable OTHERLIBES the sybase library, which is needed by the module xsybase.
util - General purpose utility routines
In addition to the directories within the slisp hierarchy, the configuration scripts Sconfigure and Smake will create files within $HOME/bin and $HOME/lib. The idea is that no derived files (such as o files or libraries) should be created in the source slisp directory, so that multiple machines can access a single nfs mounted source directory, yet create machine and application-specific binary files. The files created are:
appname - a shell script that sets XLPATH, then calls appname.bin, where appname is the name of an application (e.g. sl).
appname.bin - the executable for appname
Makefile.def - Machine specific definitions created by Sconfigure
Makefile.lastapp - The last application compiled. Needed by make check in order to know which application to run when checking test code for a module.
slisp-host - a link to slisp/systems/host, created by Sconfigure
libslisp.a - library of all o files for all modules except xcore. This library is shared by all applications.
libapp.a (e.g. libsl.a for the basic slisp application) - xcore routines that were compiled for a specific application. The basic approach to adding new c primitives into xlisp is to re-compile xcore and include the new c code, so xcore will be different for each application.
Go to the first
section, table of contents