This documentation is maintained in hand-crafted HTML in order to allow well-behaved revision control and simultaneous edits by different people. Please don't use WYSIWIG editors. Sorry if that makes it hard.
Platform | Makefile | Config file | Contacts | Notes |
---|---|---|---|---|
Windows (All Win32) | Makefile.w32 | conf-w32.h | Tim Long | ICI on Microsoft Windows |
Linux | Makefile.linux | conf-linux.h | Andy Newman | |
BeOS (x86) | Makefile.beos | conf-beos.h | XXX | |
BSD | Makefile.bsd | conf-bsd.h | Andy Newman |
To install the interpreter use make -f Makefile.$MACHINE install. This
installs the interpreter, library, manual pages, documentation, header
and startup files. See the Makefiles for details.
ICI on Microsoft Windows
On Windows platforms (any Win32 varient), ICI is compiled into
a DLL (Dynamic Link Library) called ici.dll. A definition file
(ici.def) is used to specify which identifiers should be
externally visible to other programs. Just about everything is,
and if something is missing, just add it.
Applications may use the ICI DLL as a run-time component by including the library file ici.lib in their build (ici.lib is produced as a side-effect of the build of ici.dll) and, of course, including relevent include files.
Two other programs, cici.exe and wici.exe are also built by Makefile.w32dll. They are just simple stubs to invoke the DLL. The first (cici.exe) is a console application, the second (wici.exe) is a window application. They both take command line arguments, but wici.exe does not support wild-card expansion.
If wici.exe is copied to another file name, say xxx.exe, and
the file xxx.ici exists in the same directory,
xxx.ici will be inserted as the first argument
as if it had been provided on the command line. This is a
kludge to alleviate the lack of #! support under Windows.
Configuration
The distributed makefiles build the interpreter with the default
configuration for that system. The configuration is controlled by the
system's conf-$MACHINE.h file. A configuration defines which language
extensions (collections of builtin functions) are included in the
build and overcomes some portability concerns. The file conf-sample.h
contains a prototype configuration.
Changing the configuration
To change the configuration you edit the system's `conf' header file
and define or undefine macros to include/exclude features. The default
macros are listed below. Defining the macro REMOVES the feature from
the build (which is why the names all start with "NO"). The macros
are:
"conf-w32.h"
is the file used by Windows, and this would be defined on
the command line or in the project settings with:
/DCONFIG_FILE=\"conf-w32.h\"
ICI as an extension
We are concerned here with the case where ICI does not
supply the main entry point, but is invoked from other
code.
There are a number build issues involved with this.
Firstly, every one of your source files that references some ICI items must include fwd.h from the ICI source directory, and possibly other includes. It is almost essential that the include search path, for those source files at least, has the ICI source directory on it.
Secondly, those same source files must be primed with the definition of the current platform's ICI configuration include file (CONFIG_FILE). See the note on CONFIG_FILE defines.
See ICI on Microsoft Windows for further details of linking ICI into Window's programs.