HUGSDIR
The hugs(1) library directory
Converting a source package for use with hugs 98
hugs-package pkg-dir
[target-dir]
Though Hugs does not uses packages directly, source packages that work with the compilers may be converted for use with Hugs using the hugs-package script. The pkg-dir directory should contain a collection of Haskell modules and related files (see below). The converted files are placed in a hierarchy under the directory target-dir. You then need to ensure that this directory is in the path used by hugs(1). If target-dir, the converted package is placed in the libraries directory used by hugs(1), if possible.
A package directory is assumed to contain a directory hierarchy reflecting the module hierarchy, e.g. with module A.B.C in the source file pkg-dir/A/B/C.hs and so on. The following filename suffixes are recognized:
.hs or .lhsHaskell source, to be sent through the C preprocessor with __HUGS__ defined. The file may also #include HsFFi.h, config.h, MachDeps.h and any header files in pkg-dir/include.
.y or .lyHappy source, to be processed with happy(1) with the result sent through the C preprocessor as above.
.hscinput for hsc2hs(1) and then the C preprocessor. If name_hsc_make.c (the platform-independent output of hsc2hs --no-compile) is present, it will be used instead.
.gcinput for greencard(1).
In addition to Haskell source modules, the package directory may optionally contain the following:
cbits/a directory containing C source files to be linked with Haskell files by ffihugs.
include/a directory of C header files used by foreign declarations and files in cbits.
hugs/excludea list of names of modules to be skipped by the conversion script. (Only the first word in each line is used, and blank lines and lines starting with # are ignored, leaving room for explanations.)
package.conf.ina package configuration file, to be preprocessed with cpp. The script uses the extra_libraries and extra_ld_opts fields.
package.confa package configuration file (not to be preprocessed).
The conversion script runs ffihugs(1) where required. It sets the include path, and also adds auxiliary files generated by hsc2hs(1) and greencard(1). C files from the cbits directory required by a module may be specified with a CBITS `pragma' in the source file, for example:
{-# CBITS file.c another.c #-}
HUGSDIR
The hugs(1) library directory
Other environment variables that may be set are CC, cpp, hsc2hs, greencard, ffihugs and runhugs, all naming programs.