* Set up with [[darcs]] repositories on http://code.haskell.org or elsewhere.

* Make distribution tarballs and install on server.

* Make distribution tarballs and install on server.

* Automated download and build in a fresh local temp directory for testing.

* Automated download and build in a fresh local temp directory for testing.

−

* Copy [[Haddock]] docs to server

+

* Copy [[Haddock]] docs to server (deprecated now that hackage has caught up with ghc).

* Generate editor tags files (via [[hasktags]]).

* Generate editor tags files (via [[hasktags]]).

* Convert source files between dos-style and unix-style line endings.

* Convert source files between dos-style and unix-style line endings.

* Customizable.

* Customizable.

+

+

== Packages using cabal-make ==

+

+

To get a concrete sense of the first few of the features listed above, here are some links to docs for packages that use cabal-make. (Please add your own packages to this list when you use cabal-make.)

+

* [[Phooey]]: a simple, arrow-based functional GUI library

+

* [[DeepArrow]]: a framework for composable semantic editors

+

* [[TV]]: combined and separable packaging of functionality and interface

On my Windows system, I've placed cabal-make at <code>c:\Haskell\cabal-make</code>, and I like to install Haskell packages under <code>c:\Haskell\packages</code>. I might write a <code>Makefile</code> for the package [[TV]] as follows:

+

On my Windows system, I've placed cabal-make at <code>c:\Haskell\cabal-make</code>, and I like to install Haskell packages under <code>c:\Haskell\packages</code>. I might write a <code>Makefile</code> for the package [[checkers]] as follows:

I don't like wiring the interface paths (especially with version numbers) into my makefile, but I don't know how to avoid it. Suggestions, please.

+

To build [[checkers]], I run "<code>make</code>" with targets like "<code>configure</code>", "<code>build</code>", "<code>doc</code>", and "<code>install</code>". Or "<code>all</code>" (default) for all of these targets.

−

To build [[TV]], I run "<code>make</code>" with targets like "<code>configure</code>", "<code>build</code>", "<code>doc</code>", and "<code>install</code>". Or "<code>all</code>" (default) for all of these targets.

* In order for cabal-make to work, you have to list each of your source modules on a line by itself, ''including'' the first one in the list (instead of placing it aside the Cabal directive). You can use "<code>make show-modules</code>" to see if your list of source modules is extracted correctly.

Latest revision as of 21:56, 10 March 2013

Contents

Cabal-make is an include file for GNU make files to be used with Cabal in sharing Haskell packages. It is intended mainly for package authors. People who just build & install packages software can do so entirely with Cabal commands. In particular, it's a bit hairy to get the best results from Haddock & hscolour.

To get a concrete sense of the first few of the features listed above, here are some links to docs for packages that use cabal-make. (Please add your own packages to this list when you use cabal-make.)

In order for cabal-make to work, you have to list each of your source modules on a line by itself, including the first one in the list (instead of placing it aside the Cabal directive). You can use "make show-modules" to see if your list of source modules is extracted correctly.