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