The current version (3.9.2) was released on June 30, 2024, and is available in Quicklisp.
Documentation
Are there any documents for mk-defsystem out there? How does one add a path to its search path?
- Chapter 4 of Portable Utilities for Common Lisp—User Guide & Implementation Notes
- Archive from the CMU AI Repository has the above in PS and text format: mkantdoc.tgz
- Henrik Motakef's Fight the System explains how to use and load libraries with mk-defsystem.
The CLOCC version of mk-defsystem has some TeX/DVI/PS documentation. As to the specific question, the magical variable you're looking to push things onto is mk:*central-registry*.
Just to clarify: the CLOCC documentation is limited and needs to be updated. As per the specific question, both MK3 and MK4 now have a new function
which does the PUSH in a more meaningful way.
Portability notes
The y-or-n-p-wait function (which is also provided by text-query) uses a technique of busy-waiting on listen (or read-char-no-hang) that doesn't work everywhere. For example, it works in the LispWorks IDE for Windows, but doesn't work in the Windows Terminal. To disable the use of timeouts, you can change the value of *use-timeouts* away from the default:
ACL warns because some export forms are non-top-level. This is one of those things that changed when CLtL2 came around. Things like export (and proclaim, shadow, etc.) are supposed to be wrapped in an eval-when, or find another way to suppress the warnings. The variable *cltl1-compile-file-toplevel-compatibility-p* controls this behavior:
Foreign files
Did you know? You can also load foreign files with defsystem. For example, to define that C components are compiled by calling out to "make" and loaded using the foreign loader, try something like this example (originally from db-sockets):
then you define the relevant component like this:
Older versions
- defsystem-3.x (3.6 Interim) is available in the CLOCC archive.
- defsystem-4 was an experimental CLOS-based MK:DEFSYSTEM.
build