|-h, -?, --help|
|show version information|
|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|
|keep pre-processed C header|
|copy C2HS library module to the current directory|
|-d TYPE, --dump=TYPE|
dump internal information (for debugging), where TYPE is one of:
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.
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,
.Bc2hs 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.
If you have more than one option that you want to give to the pre-processor, use multiple --cppopts= flags.
User guide /usr/share/doc/c2hs-0.15.1/html/c2hs.html
Please report bugs and feature requests in the c2hs trac
or to the C->Haskell mailing list firstname.lastname@example.org
C->Haskell Version 0.15.1 Copyright (c) [1999..2007] Manuel M. T. Chakravarty <email@example.com>
This manual page was mainly assembled from the original documentation.
It was written by Michael Weber <firstname.lastname@example.org> for the Debian GNU/Linux system (but may be used by others).
|Version 0.15.1||C2HS (1)||November 2007|