cabal: question on compiling build prerequisites

Peter Selinger selinger at
Sat Dec 7 03:31:51 UTC 2013

This may be a silly question, but I can't seem to find the answer in
the documentation.

I would like to create a Cabal package where some of the source files
use a custom pre-processor. The pre-processor is itself a Haskell
program, let's say MyPreProc.hs in the package's root directory.

I figured out how to activate the preprocessor, for example,

cabal build --ghc-options="-F -pgmF ./MyPreProc"

I also figured out how to achieve the same effect using hooks.

However, there is one problem: how can I tell cabal to actually
compile MyPreProc.hs before any of the commands using the preprocessor
are run? The package's Setup.hs file is automatically compiled during
"cabal configure". I would like MyPreProc.hs to be compiled at the
same time as well - or at least some time before the proprocessor
needs to be used.

The .cabal file contains all kinds of related variables, such as
"build-depends" (but only packages can be listed here, not programs to
be compiled), "other-modules" (but these modules would already require
the pre-processor, so the pre-processor should be compiled first),
"build-tools" (but this only refers to external programs).

My current solution is to make the pre-processor a shell script,
rather than a Haskell program. But this is ugly and not portable
(won't work in Windows, for example). 

To clarify: my custom preprocessor is local to this package. It has no
independent value, so it would not make sense to publish it as a
separate package just so that I can add it to build-depends.

Is there a known solution to this problem? 

Thanks, -- Peter

More information about the Libraries mailing list