---
name: "gtk2hsC2hs"
section: "1"
platform: "linux"
package: "gtk2hs-buildtools"
version: "0.13.11.0-1+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/gtk2hsC2hs"
---

# gtk2hsC2hs(1)

C-\>Haskell Interface Generator

## NAME

gtk2hsC2hs - C-\>Haskell Interface Generator

## SYNOPSIS

**gtk2hsC2hs** \[**OPTIONS**\]... \[ *header-file* \] *binding-file*

## DESCRIPTION

This manual page briefly describes the **gtk2hsC2hs** command.  It's a modified version of the [**c2hs**(1)](/c2hs/1.md) command, which is a helper program necessary to build the Gtk2Hs suite of libraries.

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

**gtk2hsC2hs** accepts the following options:

- **-h, -?, --help**

  brief help

- **-v, --version**

  show version information

- **-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 NAME, --lock=NAME**

  wrap each foreign call with the function NAME

- **-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

When used directly, **gtk2hsC2hs** is usually called as:

**gtk2hsC2hs** *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:

**gtk2hsC2hs** --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 -I*DIR* 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.

## BUGS

Please report bugs and feature requests in the Gtk2Hs trac

*http://hackage.haskell.org/trac/gtk2hs/*

or to the Gtk2Hs mailing list *gtk2hs-devel@lists.sourceforge.net*

## COPYRIGHT

C-\>Haskell Compiler, version 0.13.4 (gtk2hs branch) Copyright (c) \[1999..2004\] Manuel M T Chakravarty \<chak@cse.unsw.edu.au\>

## AUTHOR

This page was addapted from the [**c2hs**(1)](/c2hs/1.md) manpage, by Marco Túlio Gontijo e Silva \<marcot@debian.org\> for the Debian GNU/Linux system (but may be used by others), which was mainly assembled from the original documentation of c2hs.

The [**c2hs**(1)](/c2hs/1.md) was written by Michael Weber \<michael.weber@post.rwth-aachen.de\> for the Debian GNU/Linux system (but may be used by others).
