C2HS(1)
π C2HS(1) β the C->Haskell Interface Generator bestie edition
okay so. welcome to c2hs, aka the C->Haskell Interface Generator, and yes she's in manual section 1 π this is the short-and-sweet manual page version β for the whole lore you gotta go read the main documentation, which comes in a bunch of other formats including SGML and HTML (see the SEE ALSO bit below, iykyk) π¦
β¨ SYNOPSIS β¨
c2hs [OPTIONS]... header-file binding-file
πΈ DESCRIPTION πΈ
This manual page briefly describes the c2hs command, fr fr. 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β copyC2HSlibrary 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.dumpto 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. no thoughts, just vibes π«Ά
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. like. one per flag. do not get cute about it bestie π
π 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@haskell.org π
Β©οΈ COPYRIGHT Β©οΈ
C->Haskell Version 0.15.1 Copyright (c) [1999..2007] Manuel M. T. Chakravarty <chak@cse.unsw.edu.au>
π«Ά AUTHOR π«Ά
This manual page was mainly assembled from the original documentation.
It was written by Michael Weber <michael.weber@post.rwth-aachen.de> for the Debian GNU/Linux system (but may be used by others).
and that's the whole page, bestie!! this one's Version 0.15.1, dated November 2007, and it lives in manual section C2HS(1) π go forth and marshal some C, you absolute icon ππβ¨
π¦ where this page comes from
- debian bookworm: c2hs 0.28.8-1 Β· GFDL without Invariant Sections
- debian trixie: c2hs 0.28.8-1 Β· GFDL without Invariant Sections
- ubuntu jammy: c2hs 0.28.8-1 Β· GFDL without Invariant Sections
- ubuntu noble: c2hs 0.28.8-1 Β· GFDL without Invariant Sections
- ubuntu resolute: c2hs 0.28.8-2 Β· GFDL without Invariant Sections
- ubuntu stonking: c2hs 0.28.8-2 Β· GFDL without Invariant Sections
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms