Beginning with release 0.6 for LinuxPPC, OpenMCL uses a set of GDBM database files which contain foreign type, record, constant, and function definitions derived from the Linux header files. An archive containing these database files (and a shell script that was used in their creation) is available:

This archive (like OpenMCL binary and source distributions) should be extracted in the parent directory of the CCL directory.

OpenMCL defines reader macros that consult these databases:

In both cases, the symbol FOO is interned in the LINUX package. The #$ reader macro has the side-effect of defining FOO as a constant (as if via DEFCONSTANT); the #_ reader macro has the side effect of defining FOO as a macro which will expand into an (EXTERNAL-CALL form.)

In addition, references to foreign type, structure/union, and field names (when used in the RREF and RLET macros) will cause these database files to be consulted.

Since the OpenMCL sources now contain instances of these reader macros (and references to foreign record types and fields), it's now necessary to install the interface database before compiling OpenMCL.

GDBM is licensed under the GPL. This could have implications for applications developed with OpenMCL. However, it's worth noting that:

  1. OpenMCL's use of GDBM typically happens at read-time and at compile-time; this isn't likely to be an issue for most applications.

  2. The variable CCL::*USE-GDBM* can be set to NIL in a saved application. OpenMCL will (not surprisingly) not use GDBM unless this variable is true.

  3. GDBM provides appropriate functionality and works well, but it may be possible to use or develop an alternative.

Other issues:

For information about building the database files, see here.