[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [plt-scheme] where to put extensions?
At Sat, 01 Jun 2002 20:56:33 +0200, Sebastian H Seidel wrote:
> If distributing a collection consisting of an extension and
> module^A.ss that depends on module^B that is provided by the
> extension:
>
> module^A.ss <==requires== module^B <==provided-by== extension.dll
>
> a) Where should I put the extension? plt-home? collection-directory?
> b) How can I make module^A load the extension and require module^B?
Good questions. The best apporach I've found is the one used by the
"readline collection:
* The extension source, "mzrl.c", is compiled to
plt/collects/readline/compiled/native/<platform>/mzrl.so
so that `(require (lib "mzrl.so" "readline"))' loads the extension
--- when it's there.
* The "readline" collection also contains an "mzrl.ss" module that
acts as a placeholder. It exports the same functions as "mzrl.so",
but reports a "not compiled" error when a function is called.
As a result, if "mzrl.so" is not yet compiled, then a `(require
(lib "mzrl.so" "readline"))' loads "mzrl.ss". That's good enough
for compiling other .zo files before mzrl.c is itself compiled.
The "readline" collection's "info.ss" indicates that Setup PLT
should not compile "mzrl.ss" to "mzrl.zo". Otherwise, "mzrl.so" and
"mzrl.zo" would compete to satisfy `(require (lib "mzrl.so"
"readline"))' depending on which was compiled most recently.
Matthew