===========================
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
