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