hugs-package(1)

NAME

hugs-package - converting a source package for use with
Hugs 98

SYNOPSIS

hugs-package pkg-dir [ target-dir ]

DESCRIPTION

Though Hugs does not uses packages directly, source pack
ages 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 pos sible.
Package directory structure
A package directory is assumed to contain a directory
hierarchy reflecting the module hierarchy, e.g. with mod
ule A.B.C in the source file pkg-dir/A/B/C.hs and so on. The following filename suffixes are recognized:
.hs or .lhs
Haskell source, to be sent through the C preproces
sor with __HUGS__ defined. The file may also #include HsFFi.h, config.h, MachDeps.h and any header files in pkg-dir/include.
.y or .ly
Happy source, to be processed with happy(1) with
the result sent through the C preprocessor as
above.
.hsc input 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.
.gc input for greencard(1).
In addition to Haskell source modules, the package direc
tory 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 dec
larations and files in cbits.
hugs/exclude
a 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.in
a package configuration file, to be preprocessed
with cpp. The script uses the extra_libraries and extra_ld_opts fields.
package.conf
a package configuration file (not to be prepro
cessed).
The conversion script runs ffihugs(1) where required. It sets the include path, and also adds auxiliary files gen
erated 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 #-}

ENVIRONMENT

HUGSDIR
The hugs(1) library directory
Other environment variables that may be set are CC, cpp,
hsc2hs, greencard, ffihugs and runhugs, all naming pro grams.

SEE ALSO

hugs(1), happy(1), hsc2hs(1), greencard(1)

BUGS

The conversion process is somewhat brittle.

The program fails to follow dependencies in package con
figuration files.
Copyright © 2010-2025 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout