packages feed

dx9d3d-0.1: Setup.hs

module Main
where
import Distribution.Simple              ( defaultMainWithHooks, simpleUserHooks
                                        , preConf, postConf )
import Distribution.PackageDescription  ( HookedBuildInfo, extraLibDirs
                                        , includeDirs, emptyBuildInfo
                                        , ccOptions )
import Distribution.PackageDescription.Parse ( writeHookedBuildInfo )
import Data.List                        ( isPrefixOf, intersperse )
import System.Exit  --                    ( ExitSuccess )

main = defaultMainWithHooks simpleUserHooks{preConf=conf, postConf=ok}
    where
        ok _ _ _ _ = return ()
        conf args flags = do
            let
                sdk = findSdk args
                lib = map (++"\\mingw") sdk
                inc = map (++"\\Include") sdk
                inc_c = map ("-I"++) inc
                bi = (Just emptyBuildInfo {extraLibDirs=lib, includeDirs=inc,ccOptions=inc_c}, [])
            if null sdk
                then putStrLn "No DirectX9 sdk path specified.  Give --dx-sdk=path\\to\\sdk or write dx.buildinfo"
                else do
                    putStrLn $ "Looking for sdk headers in: " ++ (concat $ intersperse ";" inc)
                    putStrLn $ "Looking for sdk libraries (mingw) in: " ++ (concat $ intersperse ";" lib)
            writeHookedBuildInfo "dx.buildinfo" bi
            return bi

        flag = "--dx-sdk="
        findSdk l = case l of
            []  -> []
            i:x | isPrefixOf flag i -> drop (length flag) i : findSdk x
                | otherwise         -> findSdk x