13.4 splfr — SICStus Prolog Foreign Resource Linker
Synopsis
% splfr [ Option | InputFile ] ...
Description
The foreign resource linker, splfr, is used for creating
foreign resources (see Foreign Resources). splfr
reads terms from a Prolog file, applying op declarations and
extracting any foreign_resource/2
fact with first
argument matching the resource name and all foreign/[2,3]
facts. Based on this information, it generates the necessary
glue code, and combines it with any additional C or object files
provided by the user into a linked foreign resource. The output
file name will be the resource name with a suitable extension.
Options
The input to splfr can be divided into Options and
InputFiles and they can be arbitrarily mixed on the command
line. Anything not interpreted as an option will be interpreted as an
input file. Exactly one of the input files should be a Prolog file.
The following options are available:
- --help
- Prints out a summary of all options.
- -v
- --verbose
- Print detailed information about each step in the compilation/linking
sequence.
- -vv
- Be very verbose. Prints everything printed by --verbose, and
switches on verbose flags (if possible) to the compiler and linker.
- --version
- Prints out the version number of spld and exits successfully.
- --config=ConfigFile
- Specify another configuration file. This option is not intended for
normal use. The file name may not contain spaces.
- --cflag=CFlag
- CFlag is a comma-separated list of options to send to the
C-compiler. Any commas in the list will be replaced by spaces. This
option can occur multiple times.
- -LD
- Do not process the rest of the command-line, but send it directly to the
compiler/linker. Syntactic sugar for --cflag.
- --sicstus=Executable
- spld relies on using SICStus during some stages of its
execution. The default is the SICStus-executable installed with the
distribution. Executable can be used to override this, in case
the user wants to use another SICStus executable.
- --with_jdk=DIR
- --with_tcltk=DIR
- --with_tcl=DIR
- --with_tk=DIR
- --with_bdb=DIR
-
Specify the installation path for third-party software. This
is mostly useful under Windows. Under UNIX, the installation script manages
this automatically.
- --keep
- Keep temporary files and interface code and rename them to
human-readable names. Not intended for the casual user, but useful if
you want to know exactly what code is generated.
- --resource=ResourceName
-
Specify the resource's name. This defaults to the basename of the
Prolog source file found on the command line.
- -o, --output=OutputFileName
- Specify output file name. This defaults to the name of the resource,
suffixed with the platform's standard shared object suffix (i.e.
`.so' on most UNIX dialects, `.dll' under Windows). The use of
this option is discouraged, except to change the output directory.
- -S
- --static
- Create a statically linked foreign resource instead of a
dynamically linked one, which is the default. A statically linked
foreign resource is a single object file, which can be
pre-linked into a Prolog system. See also the spld tool,
The Application Builder.
- --no-rpath
- Under UNIX, the default is to embed into the shared object all linker
library directories for use by the dynamic linker. For most UNIX linkers
this corresponds to adding a -Rpath for each
-Lpath. The --no-rpath option inihibits this.
- --nocompile
- Do not compile, just generate code. This may be useful in Makefiles, for
example to generate the header file in a separate step. Implies
--keep.
- --namebase=namebase
- namebase will be used as part of the name of generated files. The
default name base is the resource name (e.g. as specified with
--resource). If --static is specified, the default
namebase is the resource name followed by `_s'.
- --header=headername
- Specify the name of the generated header file. The default if
is namebase
_glue.h
.
All C files that define foreign functions or that call SICStus API
functions should include this file. Among other things the generated
header file includes prototypes corresponding to the foreign/[2,3]
declarations in the prolog code.
- --multi-sp-aware
- --exclusive-access
- --context-hook=name
- --no-context-hook
- Specifies various degrees of support for more than one SICStus in the
same process. See Foreign Resources and Multiple SICStus Run-Times, for details.
- --moveable
- Do not embed paths into the foreign resource.
On platforms that support it, i.e. some versions of UNIX, the default
behavior of splfr is to add each directory dir specified
with -Ldir to the search path used by the run-time loader
(using the SysV ld -R
option or similar). The option
--moveable turns off this behavior. For additional details, see
the corresponding option to spld (see The Application Builder).
- --structs
- The Prolog source file uses
library(structs)
.
This option makes splfr understand
foreign type specifications and translate them into C declarations in
the generated header file.
See See lib-structs.
Files
Arguments to spld not recognized as options are assumed
to be input-files and are handled as follows:
- `*.pro'
- `*.pl'
- The Prolog file containing the relevant declarations.
Exactly one such argument should be given.
- `*.so'
- `*.sl'
- `*.s.o'
- `*.o'
- `*.obj'
- `*.dll'
- `*.lib'
- `*.dylib'
- These files are assumed to be input-files to the linker and will be
passed on unmodified.
- `*.c'
- `*.cc'
- `*.C'
- `*.cpp'
- `*.c++'
- These files are assumed to be C/C++ source code and will be
compiled by the C/C++-compiler before being passed to the linker.
See Also
The Foreign Resource Linker.
Send feedback on this subject.