packages feed

mxnet-0.2.0.0: Setup.hs

import Distribution.Simple
import Distribution.Simple.Setup
import Distribution.Types.LocalBuildInfo
import Distribution.Types.GenericPackageDescription
import Distribution.Types.HookedBuildInfo

import Data.List (find)

main :: IO ()
main = defaultMainWithHooks $
    simpleUserHooks { confHook = confWithExtraFlags
                    }

-- | Patch the `-lmxnet` arguments during the build stage for TH phase.
confWithExtraFlags :: (GenericPackageDescription, HookedBuildInfo) -> ConfigFlags -> IO LocalBuildInfo
confWithExtraFlags desc_info flags =
    defaultConfHook desc_info newFlags
  where
    newFlags = flags { configProgramArgs = defaultOtherArgs ++ [ ("ghc", defaultGhcArgs ++ ["-lmxnet"])
                                                               , ("haddock", defaultHaddockArgs ++ ["--optghc=-lmxnet"])
                                                               ]
                     }
    defaultProgramArgs = configProgramArgs flags
    defaultOtherArgs = filter (\(prog, _) -> prog /= "ghc" && prog /= "haddock") defaultProgramArgs
    defaultGhcArgs = case find (\(prog, _) -> prog == "ghc") defaultProgramArgs of
                          Nothing -> []
                          Just (_, opts) -> opts
    defaultHaddockArgs = case find (\(prog, _) -> prog == "haddock") defaultProgramArgs of
                              Nothing -> []
                              Just (_, opts) -> opts
    defaultConfHook = confHook simpleUserHooks