OpenMCL interface database


Table of Contents
Overview
Other issues:

Overview

OpenMCL uses a set of database files which contain foreign type, record, constant, and function definitions derived from the Linux (or Darwin) header files. An archive containing these database files (and the shell scripts that were used in their creation) is available; see the Distributions page of the OpenMCL web site for information about obtaining current interface database files.

Not surprisingly, Linux and Darwin use different database files.

OpenMCL defines reader macros that consult these databases:

In both cases, the symbol FOO is interned in the "OS" package, for which "LINUX" or "DARWIN" is a nickname. 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.)

It's important to remember that the side-effect happens when the form containing the reader macro is read. Macroexpansion functions that expand into forms which contain instances of those reader macros don't do what one might think that they do, unless the macros are expanded in the same lisp session as the reader macro was read in.

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

Since the OpenMCL sources 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.


Other issues:

For information about building the database files, see here.