Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
C2HS(1)				  C->Haskell			       C2HS(1)

       c2hs - C->Haskell Interface Generator

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

       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.

       The  programs  follow  the usual	GNU command line syntax, with long op-
       tions 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

	      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:

	      o	trace	trace compiler phases

	      o	genbind	trace binding generation

	      o	ctrav	trace C	declaration traversal

	      o	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.

       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, 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	imple-
       ments 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  di-
       rectory	of  the	used system, this is usually /usr/include and /usr/lo-
       cal/include; and	second,	it will	look in	every directory	that  is  men-
       tioned 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-pro-
       cessor, use multiple --cppopts= flags.

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

       Home page

       Please report bugs and feature requests in the c2hs trac

       or to the C->Haskell mailing list

       C->Haskell Version 0.15.1  Copyright  (c)  [1999..2007]	Manuel	M.  T.
       Chakravarty <>

       This manual page	was mainly assembled from the original documentation.

       It was written by Michael Weber <> for
       the Debian GNU/Linux system (but	may be used by others).

Version	0.15.1			 November 2007			       C2HS(1)


Want to link to this manual page? Use this URL:

home | help