[Haskell-cafe] can GHC build an executable from a C source file?

Manlio Perillo manlio_perillo at libero.it
Tue Mar 17 13:42:37 EDT 2009

Joe Fredette ha scritto:
> You know, I hear theres this brilliant program for compiling C code -- 
> gcd? ccg? gcc, yah gcc... Anyone tried it?
> In all seriousness though, why do you need to compile c with ghc? I'm 
> curious, it seems a bit pointless...

It's for a possible extension I'm planning for Cabal.

The idea is to add support for "configuration features".
A configuration feature is similar to a "configuration flag", but with 
some important differences.

data Feature = Bool | String

A feature block:

Feature HaveURandom
     action: execute
     include-dirs: ...
     c-sources: features/urandom.c
     -- other possible properties, as listed in
     -- "Build information chapter", excluding `buildable` and
     -- `other-modules`
     -- The `action` property can have values `compile` (default`)
     -- or `execute`

This means that I'm testing for a feature named "HaveURandom", and the 
testing requires to compile/build and then execute some code.

In this case there is only a C source file that needs to be compiled; 
this is the reason why I have asked if GHC supports compilation for C 
source files only, and the creation of an executable.

Here I'm asking Cabal to execute the generated program.
If the executable returns 0, then HaveURandom will have value
`Feature True`; if it returns 1, then HaveURandom will have value 
`Feature False`.

If the executable write something on stdout, then HaveURandom will have 
value `Feature string`.

If compilation fails, HaveURandom will have value `Feature False`.
If `action` property is "compile", then a successful compilation will 
result in HaveURandom having a value of `Feature True`.

Regards  Manlio

More information about the Haskell-Cafe mailing list