sourCEntral - mobile manpages

pdf

C2HS

NAME

c2hs − C->Haskell Interface Generator

SYNOPSIS

c2hs [OPTIONS]... header-file binding-file

DESCRIPTION

This manual page briefly describes the c2hs command. For more details, refer to the main documentation, which is available in various other formats, including SGML and HTML; see below.

OPTIONS

The programs follow the usual GNU command line syntax, with long options starting with two dashes (‘-’). A summary of options are included below. For a complete description, see the other documentation.

c2hs accepts the following options:
−h, −?, −−help

brief help

−v, −−version

show version information

−−numeric−version

show version number

−c CPP−−cpp=CPP

use executable CPP to invoke C preprocessor

−C CPPOPTS, −−cppopts=CPPOPTS

pass CPPOPTS to the C preprocessor

−o FILE−−output=FILE

output result to FILE (should end in .hs)

−t PATH−−output−dir=PATH

place generated files in PATH

−p  PLATFORM, −−platform=PLATFORM

platform to use for cross compilation

−k, −−keep

keep pre-processed C header

−l, −−copy−library

copy ‘C2HS’ library module to the current directory

−d TYPE, −−dump=TYPE

dump internal information (for debugging), where TYPE is one of:

trace

trace compiler phases

genbind

trace binding generation

ctrav

trace C declaration traversal

chs

dump the binding file (adds .dump to the name)

header-file is the header file belonging to the marshalled library. It must end with suffix .h.

binding-file is the corresponding Haskell binding file, which must end with suffix .chs.

PLATFORM The platform name can be one of: x86_64-linux. i686-linux. m68k-palmos. This allows for cross-compilation, assuming the rest of your toolchain supports that. The default is the current host platform.

The most useful of these options is probably −−cppopts (or −C). If the C header file needs any special options (like −D or −I) to go through the C pre-processor, here is the place to pass them.

EXAMPLES

The easiest way to use the C->Haskell Interface Generator is via Cabal. Cabal knows about .chs files and will run c2hs automatically, passing the appropriate flags.

When used directly, c2hs is usually called as:

c2hs lib.h Lib.chs

where lib.h is the header file and Lib.chs the Haskell binding module, which define the C- and Haskell-side interface, respectively. If no errors occur, the result is a pure Haskell module Lib.hs, which implements the Haskell API of the library.

A more advanced call may look like this:

c2hs −−cppopts=−I/some/obscure/dir −−cppopts=−DEXTRA lib.h Lib.chs

Often, lib.h will not be in the current directory, but in one of the header file directories. Apart from the current directory, C->Haskell looks in two places for the header: first, in the standard include directory of the used system, this is usually /usr/include and /usr/local/include; and second, it will look in every directory that is mentioned in a −IDIR option passed to the pre-processor via −−cppopts.

CAVEATS

If you have more than one option that you want to give to the pre-processor, use multiple −−cppopts= flags.

SEE ALSO

User guide /usr/share/doc/c2hs-0.15.1/html/c2hs.html

Home page http://www.cse.unsw.edu.au/~chak/haskell/c2hs/

BUGS

Please report bugs and feature requests in the c2hs trac

http://hackage.haskell.org/trac/c2hs/

or to the C->Haskell mailing list c2hs AT haskell DOT org

COPYRIGHT

C->Haskell Version 0.15.1 Copyright (c) [1999..2007] Manuel M. T. Chakravarty <chak AT cse DOT unsw DOT edu DOT au>

AUTHOR

This manual page was mainly assembled from the original documentation.

It was written by Michael Weber <michael DOT weber AT post DOT rwth-aachen DOT de> for the Debian GNU/Linux system (but may be used by others).

pdf