packages feed

system-time-monotonic-0.2: testing/make.hs

{-# LANGUAGE CPP #-}
{-# OPTIONS -fno-warn-missing-signatures #-}
import Development.Shake
import Development.Shake.FilePath
import System.Environment

tests =
    [ "benchmark"
    , "bombard"
    , "clock"
    , "delay"
    , "leak"
#if mingw32_HOST_OS
    , "diffMSec32"
#endif
    ]

#if mingw32_HOST_OS
binaries = map (++ ".exe") tests
#else
binaries = tests
#endif

intermediates = map (++ ".hi") tests
             ++ map (++ ".o")  tests

main = do
    args <- getArgs
    shake shakeOptions $ do
        case args of
            ["clean"] -> clean
            _         -> build

build = do
    want binaries
    (`elem` binaries) ?> \out -> do
        let hs = replaceExtension out ".hs"
        need [hs]
        system' "ghc" ["-Wall", "-O2", "-threaded", hs, "-o", out]

clean = action $ do
    system' "rm" $ "-f" : intermediates ++ binaries