1
1
\begin {code}
2
2
{-# LANGUAGE CPP #-}
3
3
{-# LANGUAGE OverloadedStrings #-}
4
+ module Main (main ) where
5
+
6
+ #ifndef MIN_VERSION_cabal_doctest
7
+ #define MIN_VERSION_cabal_doctest(x,y,z) 0
8
+ #endif
9
+
10
+ import Distribution.Simple ( defaultMainWithHooks , UserHooks (.. ), simpleUserHooks )
11
+
12
+ #if MIN_VERSION_cabal_doctest(1,0,0)
13
+ import Distribution.Extra.Doctest ( generateBuildModule )
14
+ #else
15
+
16
+ -- Otherwise we provide a shim
17
+
4
18
#ifndef MIN_VERSION_Cabal
5
19
#define MIN_VERSION_Cabal(x,y,z) 0
6
20
#endif
10
24
#if MIN_VERSION_Cabal(1,24,0)
11
25
#define InstalledPackageId UnitId
12
26
#endif
13
- module Main (main ) where
14
27
15
28
import Control.Monad ( when )
16
29
import Data.List ( nub )
30
+ import Data.String ( fromString )
17
31
import Distribution.Package ( InstalledPackageId )
18
32
import Distribution.Package ( PackageId , Package (.. ), packageVersion )
19
33
import Distribution.PackageDescription ( PackageDescription (), TestSuite (.. ) , Library (.. ), BuildInfo (.. ))
20
- import Distribution.Simple ( defaultMainWithHooks , UserHooks (.. ), simpleUserHooks )
21
34
import Distribution.Simple.Utils ( rewriteFile , createDirectoryIfMissingVerbose )
22
35
import Distribution.Simple.BuildPaths ( autogenModulesDir )
23
36
import Distribution.Simple.Setup ( BuildFlags (buildDistPref , buildVerbosity ), fromFlag )
@@ -43,15 +56,8 @@ makeAbsolute p | isAbsolute p = return p
43
56
return $ cwd </> p
44
57
#endif
45
58
46
- main :: IO ()
47
- main = defaultMainWithHooks simpleUserHooks
48
- { buildHook = \ pkg lbi hooks flags -> do
49
- generateBuildModule flags pkg lbi
50
- buildHook simpleUserHooks pkg lbi hooks flags
51
- }
52
-
53
- generateBuildModule :: BuildFlags -> PackageDescription -> LocalBuildInfo -> IO ()
54
- generateBuildModule flags pkg lbi = do
59
+ generateBuildModule :: String -> BuildFlags -> PackageDescription -> LocalBuildInfo -> IO ()
60
+ generateBuildModule testsuiteName flags pkg lbi = do
55
61
let verbosity = fromFlag (buildVerbosity flags)
56
62
let distPref = fromFlag (buildDistPref flags)
57
63
@@ -83,7 +89,7 @@ generateBuildModule flags pkg lbi = do
83
89
[ " -include" , libAutogenDir ++ " /cabal_macros.h" ]
84
90
++ cppOptions libBI
85
91
86
- withTestLBI pkg lbi $ \ suite suitecfg -> when (testName suite == " doctests " ) $ do
92
+ withTestLBI pkg lbi $ \ suite suitecfg -> when (testName suite == fromString testsuiteName ) $ do
87
93
88
94
-- get and create autogen dir
89
95
#if MIN_VERSION_Cabal(1,25,0)
@@ -160,5 +166,13 @@ generateBuildModule flags pkg lbi = do
160
166
161
167
testDeps :: ComponentLocalBuildInfo -> ComponentLocalBuildInfo -> [(InstalledPackageId , PackageId )]
162
168
testDeps xs ys = nub $ componentPackageDeps xs ++ componentPackageDeps ys
169
+ #endif
170
+
171
+ main :: IO ()
172
+ main = defaultMainWithHooks simpleUserHooks
173
+ { buildHook = \ pkg lbi hooks flags -> do
174
+ generateBuildModule " doctests" flags pkg lbi
175
+ buildHook simpleUserHooks pkg lbi hooks flags
176
+ }
163
177
164
178
\end {code}
0 commit comments