HSFFIG

From HaskellWiki
Revision as of 19:12, 4 June 2009 by DimitryGolubovsky (talk | contribs) (→‎Building from source: clarified on modern way of building)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Purpose

Hsffig is a tool to convert a C header file (.h) into Haskell code containing FFI import statements for all entities whose declarations are found in the header file. Current release version of hsffig is 1.0 (release date 07/30/2005).

Getting HSFFIG

Downloading

Hsffig has been released on Hackage under the name HSFFIG. Also, the working repository is available:

darcs get http://code.haskell.org/hsffig

When downloading from the working repository, run make first, then cabal install.

Building from source

This is a pre-cabal-install way to build from source. See the Downloading section

Hsffig has been released as a Cabalized package. The distribution tarball file contains a minimal version of Cabal setup program, so it is not necessary to have Cabal installed in order to install hsffig. Even more, it is advised to use the Cabal setup program (further referred to as cabal-setup) as it was slightly tailored to the details of hsffig installation.

  1. After unpacking the tarball, go to the root directory of the distibution and run make. This builds the cabal-setup executable necessary for proper package build and installation.
  2. Run ./cabal-setup configure. Alex is required to compile hsffig, so it is necessary to provide path to Alex executable (the --with-alex= option of ./cabal-setup configure). This creates the package build configuration file.
  3. Run ./cabal-setup build. This builds the hsffig library, and all executables.
  4. Run ./cabal-setup install. This installs the library and the executables, and registers the package with GHC.

At this point, hsffig is ready to use.

See also

Please see HSFFIG/Tutorial for how to use the program. There are other examples and a separate discussion page. Finally, there is a page describing linkage optimization