#!/usr/bin/env runghc

> module Main where

> import Distribution.Simple
> import Distribution.PackageDescription
> import System

> main :: IO ()
> main = defaultMainWithHooks perlhooks

> perlhooks = defaultUserHooks 
>                { 
> --                 hookedPreProcessors = 
> --                 hscp2hscHook:hookedPreProcessors defaultUserHooks 
>                   preBuild = doPreBuild,
>                   preClean = doPreClean
>                }

> doPreBuild args i 
>      = do 
>           system $ "./hscp2hsc Perl/Core.hscp Perl/Core_hsc.c Perl/Core.hs"
>           system $ "mkdir -p dist/build"
>           system $ "rm -f dist/build/Core_stub.o"
>           system $ "ln -s Perl/Core_stub.o dist/build/Core_stub.o"
>           return emptyHookedBuildInfo

> doPreClean args i
>      = do 
>           system $ "rm -f Perl/Core.hs Perl/Core_hsc.c" 
>           return emptyHookedBuildInfo

> hscp2hscHook = ("hscp", 
>                 \buildinfo localbuildinfo inf outf verbose -> 
>                   do 
>                      putStrLn $ "In: " ++ inf ++ " out: " ++ outf
>                      let hsc = reverse (drop 5 (reverse inf)) ++ ".hsc"
>                      system $ "./hscp2hsc < " ++ inf ++ " > " ++ hsc
>                      mapM_ putStrLn (ccOptions buildinfo)
>                      return $ ExitFailure 1)
