on master help sign in
Make Setup.hs build with GHC 8.2
9f8888aRyan Scott
Setup.hs+29−18
@@ -5,7 +5,7 @@ import Data.IORef
5import Control.Exception (SomeException, catch)
5import Control.Exception (SomeException, catch)
6
6
7import Distribution.Simple
7import Distribution.Simple
8−import Distribution.Simple.BuildPaths (autogenModulesDir)
8+import Distribution.Simple.BuildPaths
9import Distribution.Simple.InstallDirs as I
9import Distribution.Simple.InstallDirs as I
10import Distribution.Simple.LocalBuildInfo as L
10import Distribution.Simple.LocalBuildInfo as L
11import qualified Distribution.Simple.Setup as S
11import qualified Distribution.Simple.Setup as S
@@ -56,32 +56,37 @@ windres verbosity = P.runProgramInvocation verbosity . P.simpleProgramInvocation
56
56
57usesGMP :: S.ConfigFlags -> Bool
57usesGMP :: S.ConfigFlags -> Bool
58usesGMP flags =
58usesGMP flags =
59− case lookup (FlagName "gmp") (S.configConfigurationsFlags flags) of
59+ case lookup (mkFlagName "gmp") (S.configConfigurationsFlags flags) of
60 Just True -> True
60 Just True -> True
61 Just False -> False
61 Just False -> False
62 Nothing -> False
62 Nothing -> False
63
63
64execOnly :: S.ConfigFlags -> Bool
64execOnly :: S.ConfigFlags -> Bool
65execOnly flags =
65execOnly flags =
66− case lookup (FlagName "execonly") (S.configConfigurationsFlags flags) of
66+ case lookup (mkFlagName "execonly") (S.configConfigurationsFlags flags) of
67 Just True -> True
67 Just True -> True
68 Just False -> False
68 Just False -> False
69 Nothing -> False
69 Nothing -> False
70
70
71isRelease :: S.ConfigFlags -> Bool
71isRelease :: S.ConfigFlags -> Bool
72isRelease flags =
72isRelease flags =
73− case lookup (FlagName "release") (S.configConfigurationsFlags flags) of
73+ case lookup (mkFlagName "release") (S.configConfigurationsFlags flags) of
74 Just True -> True
74 Just True -> True
75 Just False -> False
75 Just False -> False
76 Nothing -> False
76 Nothing -> False
77
77
78isFreestanding :: S.ConfigFlags -> Bool
78isFreestanding :: S.ConfigFlags -> Bool
79isFreestanding flags =
79isFreestanding flags =
80− case lookup (FlagName "freestanding") (S.configConfigurationsFlags flags) of
80+ case lookup (mkFlagName "freestanding") (S.configConfigurationsFlags flags) of
81 Just True -> True
81 Just True -> True
82 Just False -> False
82 Just False -> False
83 Nothing -> False
83 Nothing -> False
84
84
85+#if !(MIN_VERSION_Cabal(2,0,0))
86+mkFlagName :: String -> FlagName
87+mkFlagName = FlagName
88+#endif
89+
85-- -----------------------------------------------------------------------------
90-- -----------------------------------------------------------------------------
86-- Clean
91-- Clean
87
92
@@ -151,20 +156,22 @@ generateToolchainModule verbosity srcDir toolDir = do
151 createDirectoryIfMissingVerbose verbosity True srcDir
156 createDirectoryIfMissingVerbose verbosity True srcDir
152 rewriteFile toolPath (commonContent ++ toolContent)
157 rewriteFile toolPath (commonContent ++ toolContent)
153
158
154−idrisConfigure _ flags _ local = do
159+idrisConfigure _ flags pkgdesc local = do
155 configureRTS
160 configureRTS
161+ withLibLBI pkgdesc local $ \_ libcfg -> do
162+ let libAutogenDir = autogenComponentModulesDir local libcfg
156− generateVersionModule verbosity (autogenModulesDir local) (isRelease (configFlags local))
163+ generateVersionModule verbosity libAutogenDir (isRelease (configFlags local))
157− if isFreestanding $ configFlags local
164+ if isFreestanding $ configFlags local
158− then do
165+ then do
159− toolDir <- lookupEnv "IDRIS_TOOLCHAIN_DIR"
166+ toolDir <- lookupEnv "IDRIS_TOOLCHAIN_DIR"
160− generateToolchainModule verbosity (autogenModulesDir local) toolDir
167+ generateToolchainModule verbosity libAutogenDir toolDir
161− targetDir <- lookupEnv "IDRIS_LIB_DIR"
168+ targetDir <- lookupEnv "IDRIS_LIB_DIR"
162− case targetDir of
169+ case targetDir of
163− Just d -> generateTargetModule verbosity (autogenModulesDir local) d
170+ Just d -> generateTargetModule verbosity libAutogenDir d
164− Nothing -> error $ "Trying to build freestanding without a target directory."
171+ Nothing -> error $ "Trying to build freestanding without a target directory."
165− ++ " Set it by defining IDRIS_LIB_DIR."
172+ ++ " Set it by defining IDRIS_LIB_DIR."
166− else
173+ else
167− generateToolchainModule verbosity (autogenModulesDir local) Nothing
174+ generateToolchainModule verbosity libAutogenDir Nothing
168 where
175 where
169 verbosity = S.fromFlag $ S.configVerbosity flags
176 verbosity = S.fromFlag $ S.configVerbosity flags
170 version = pkgVersion . package $ localPkgDescr local
177 version = pkgVersion . package $ localPkgDescr local
@@ -175,6 +182,10 @@ idrisConfigure _ flags _ local = do
175 -- the file after configure.
182 -- the file after configure.
176 configureRTS = make verbosity ["-C", "rts", "clean"]
183 configureRTS = make verbosity ["-C", "rts", "clean"]
177
184
185+#if !(MIN_VERSION_Cabal(2,0,0))
186+ autogenComponentModulesDir lbi _ = autogenModulesDir lbi
187+#endif
188+
178idrisPreSDist args flags = do
189idrisPreSDist args flags = do
179 let dir = S.fromFlag (S.sDistDirectory flags)
190 let dir = S.fromFlag (S.sDistDirectory flags)
180 let verb = S.fromFlag (S.sDistVerbosity flags)
191 let verb = S.fromFlag (S.sDistVerbosity flags)