## Name

clisp-link — link a new external module to CLISP.

## Synopsis

`clisp-link` [`create`] [``module``] [``file``...]

`clisp-link` [`add`] [``source``] [``destination``] [``module``...]

`clisp-link` [`run`] [``source``] [``module``...]

`clisp-link` [`install`] [``module``...]

## Description

This shell script operates on CLISP module sets and linking sets:

- `create`s new module sets out of source files
- `add`s module sets to a linking set to produce a new linking set
- `run`s CLISP with module sets added

- Platform Dependent: Only in CLISP built without configure flag `--without-dynamic-modules`.

  `install`s new module sets for general use

## Options

`create`

  The command

      $ clisp-link create module file ...

  creates a module set in `module` directory which refers (via symbolic links) to files `file`... The files are expected to be modules of their own.

`add`

  The command

      $ clisp-link add source destination module ...

  combines the linking set in directory `source` and the modules in directories `module`... to a new linking set, in the directory `destination` which is newly created.

`run`

  The command

      $ clisp-link run source module ...

  runs the linking set in directory `source`, with the modules in directories `module`... Unless CLISP has been built with the configuration option `--without-dynamic-modules`, the loading will be performed using `SYS::DYNLOAD-MODULES`. Otherwise - this is much slower - a temporary linking set will be created and deleted afterwards.

`install`

  Platform Dependent: Only in CLISP built without configure flag `--without-dynamic-modules`.

  The command

      $ clisp-link install module ...

  installs the modules in directories `module`... into `CUSTOM:*LIB-DIRECTORY*` or, if it is not writable to the user (e.g., if a system-wide CLISP installation is used and the user does not have administrative privileges), into `CUSTOM:*USER-LIB-DIRECTORY*`.

  Variable `CUSTOM:*USER-LIB-DIRECTORY*` is initially set to `(`MERGE-PATHNAMES` ".clisp/" (`USER-HOMEDIR-PATHNAME`))` if that directory exists, and can be reset in the RC file.

  ### Note

  Do not add `CUSTOM:*USER-LIB-DIRECTORY*` to `CUSTOM:*LOAD-PATHS*` or under any element thereof. Use `REQUIRE` instead of `LOAD` to load dynamic modules.

  For this command to work, each `module` directory must contain a `Makefile` with a clisp-module-distrib target which uses `LN` to distribute the files necessary to run the module into `destdir`. This is in addition to the general requirement that link.sh is present.

## Examples

See Section 32.2.6, “Example”.

## Files

clisp-link needs a “link kit” directory containing:

- `"modules.c"`
- `"clisp.h"`

clisp-link expects to find these files in a subdirectory `linkkit/` of the installation directory (i.e., `CUSTOM:*LIB-DIRECTORY*`) which it acquires by running

    $ `dirname $0`/clisp -b

This can be overridden by the environment variable `CLISP_LINKKIT`.

## See also

CLISP impnotes
clisp(1)

| clisp-link version 2.49.50+ | Platform: @PLATFORM@ | Last modified: 2017-05-30

Enter your search termsSubmit search form
Webclisp.org