Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

65 lines (51 sloc) 1.792 kb
--
-- HTTP client for use with io-streams
--
-- Copyright © 2013 Operational Dynamics Consulting, Pty Ltd
--
-- The code in this file, and the program it is a part of, is
-- made available to you by its authors as open source software:
-- you can redistribute it and/or modify it under the terms of
-- the BSD licence.
--
import Data.Char (toUpper)
import Distribution.Text (display)
import Distribution.PackageDescription (PackageDescription(..))
import Distribution.Simple
import Distribution.Simple.LocalBuildInfo (LocalBuildInfo)
import Distribution.Simple.Setup (ConfigFlags)
import Distribution.System (OS (..), buildOS)
import System.IO (IOMode (..), Handle, hPutStrLn, withFile)
main :: IO ()
main = defaultMainWithHooks $ simpleUserHooks {
postConf = configure
}
{-
Simple detection of which operating system we're building on;
there's no need to link the Cabal logic into our library, so
we'll keep using CPP in Network.Http.Inconvenience.
-}
configure :: Args -> ConfigFlags -> PackageDescription -> LocalBuildInfo -> IO ()
configure _ _ p _ = do
withFile "config.h" WriteMode (\h -> do
discoverOperatingSystem h
discoverLibraryVersion h p)
return ()
discoverOperatingSystem :: Handle -> IO ()
discoverOperatingSystem h = do
hPutStrLn h ("#define " ++ s)
where
o = buildOS
s = case o of
Linux -> "__LINUX__"
OSX -> "__MACOSX__"
Windows -> "__WINDOWS__"
_ -> "__" ++ up o ++ "__"
up x = map toUpper (show x)
discoverLibraryVersion :: Handle -> PackageDescription -> IO ()
discoverLibraryVersion h p = do
hPutStrLn h ("#define VERSION \"http-streams/" ++ s ++ "\"")
where
i = package p
v = pkgVersion i
s = display v
Jump to Line
Something went wrong with that request. Please try again.