===========================
RANDOM NOTES FOR DEVELOPERS
===========================
build system
------------
configure checks for each lisp interpretor on existence, and
exports `<NAME>_interp', `<NAME>_dump', and the list of requested
in `lisp'.
configure generates the following files:
Makefile <- Makefile.in
make-cafeobj.lisp <- make-cafeobj.lisp.in
xbin/cafeobj.in <- xbin/cafeobj.in.in
doc/Makefile.in <- doc/Makefile
After that, xbin/cafeobj is created from the Makefile by a sed command.
other lisp interpreters
-----------------------
Although by default only acl, sbcl, clisp is checked and build for,
the following lisp implementations can also be used, but are
currently not supported. Builds will fail.
configure argument program name
cmu lisp -- CMU-CL
gcl gcl -- GNU Common Lisp
ccl ccl -- openmcl
ccl64 ccl64 -- openmcl 64 bit
adding a lisp interpreter
-------------------------
Adding a new interpreter requires (at least) changes to the following
files (more or less symmetric to all the others):
- configure.ac
- Makefile.in
- xbin/cafeobj.in.in
- make-cafeobj.lisp.in
building for windows
--------------------
If Wine is installed, and within wine sbcl is installed, one can create
a dump for Windows with
./configure --enable-windows
make
One can set the used wine prefix with WINEPREFIX. This creates already
release ready .zip
building using ACL on Windows
-----------------------------
Building distribution tarballs on Windows using ACL requires a few more steps:
- configure CafeOBJ sources with
./configure
no special argument is necessary.
- transfer the files to Windows
- start ACL (alisp.exe) in the CafeOBJ source directory and type
:ld make-deliv
This will create the necessary files in
dist/cafeobj-N.M
but all the support files are missing.
- add the support files
best way is to use an SBCL build, remove the SBCL dump and add the files
from dist/cafeobj-N.M as above
- replace the binary
by default, the ACL created CafeOBJ.exe opens a dedicated Window for the
execution. If this is not acceptable (ie, this is what the CafeOBJ team
does during preparation of release packages):
Replace CafeOBJ.exe in dist/cafeobj-N.M
with buildi.exe from the respective ACL directory
This ensures that the interpreter is just opened in the current terminal
window.
building for distribution
-------------------------
For the binary distributions there is a switch
./configure --enable-distribution
which builds all requested cafeobj/lisp combinations (see above) and
installs them into the prefix=./dist, followed by the necessary calls
to make-release-tarballs.
See above for getting release zips for Windows/sbcl
making a release
----------------
(tentative)
- clean up the git repository (git status --ignored)
- update version number in
. configure.ac
. macport/ports/lang/cafeobj/Portfile
. doc/refman/reference-manual.md
- run autoreconf
- update the ports
. cd macport/ports && portindex
- update the NEWS file
- commit the changes
- build the source code tarball
. make-source-tarball
- build the binary packages:
. unpack the source tarball
. run (on 64bit and 32bit systems)
./configure --with-lisp=acl-standalone --enable-distribution
make
make distclean
./configure --with-lisp=sbcl --enable-distribution
make
make distclean
. for Windows/SBCL
./configure --enable-windows
make
- upload all files to cafeobj.org/files/A.B.C/
- update the "Download" page on cafeobj.org
- prepare a release post
-- EOF