@@ -5,7 +5,7 @@ import Data.IORef
55import Control.Exception (SomeException, catch)
66
77import Distribution.Simple
8−import Distribution.Simple.BuildPaths (autogenModulesDir)
8+import Distribution.Simple.BuildPaths
99import Distribution.Simple.InstallDirs as I
1010import Distribution.Simple.LocalBuildInfo as L
1111import qualified Distribution.Simple.Setup as S
@@ -56,32 +56,37 @@ windres verbosity = P.runProgramInvocation verbosity . P.simpleProgramInvocation
5656
5757usesGMP :: S.ConfigFlags -> Bool
5858usesGMP flags =
59− case lookup (FlagName "gmp") (S.configConfigurationsFlags flags) of
59+ case lookup (mkFlagName "gmp") (S.configConfigurationsFlags flags) of
6060 Just True -> True
6161 Just False -> False
6262 Nothing -> False
6363
6464execOnly :: S.ConfigFlags -> Bool
6565execOnly flags =
66− case lookup (FlagName "execonly") (S.configConfigurationsFlags flags) of
66+ case lookup (mkFlagName "execonly") (S.configConfigurationsFlags flags) of
6767 Just True -> True
6868 Just False -> False
6969 Nothing -> False
7070
7171isRelease :: S.ConfigFlags -> Bool
7272isRelease flags =
73− case lookup (FlagName "release") (S.configConfigurationsFlags flags) of
73+ case lookup (mkFlagName "release") (S.configConfigurationsFlags flags) of
7474 Just True -> True
7575 Just False -> False
7676 Nothing -> False
7777
7878isFreestanding :: S.ConfigFlags -> Bool
7979isFreestanding flags =
80− case lookup (FlagName "freestanding") (S.configConfigurationsFlags flags) of
80+ case lookup (mkFlagName "freestanding") (S.configConfigurationsFlags flags) of
8181 Just True -> True
8282 Just False -> False
8383 Nothing -> False
8484
85+#if !(MIN_VERSION_Cabal(2,0,0))
86+mkFlagName :: String -> FlagName
87+mkFlagName = FlagName
88+#endif
89+
8590-- -----------------------------------------------------------------------------
8691-- Clean
8792
@@ -151,20 +156,22 @@ generateToolchainModule verbosity srcDir toolDir = do
151156 createDirectoryIfMissingVerbose verbosity True srcDir
152157 rewriteFile toolPath (commonContent ++ toolContent)
153158
154−idrisConfigure _ flags _ local = do
159+idrisConfigure _ flags pkgdesc local = do
155160 configureRTS
156− generateVersionModule verbosity (autogenModulesDir local) (isRelease (configFlags local))
157− if isFreestanding $ configFlags local
158− then do
159− toolDir <- lookupEnv "IDRIS_TOOLCHAIN_DIR"
160− generateToolchainModule verbosity (autogenModulesDir local) toolDir
161− targetDir <- lookupEnv "IDRIS_LIB_DIR"
162− case targetDir of
163− Just d -> generateTargetModule verbosity (autogenModulesDir local) d
164− Nothing -> error $ "Trying to build freestanding without a target directory."
165− ++ " Set it by defining IDRIS_LIB_DIR."
166− else
167− generateToolchainModule verbosity (autogenModulesDir local) Nothing
161+ withLibLBI pkgdesc local $ \_ libcfg -> do
162+ let libAutogenDir = autogenComponentModulesDir local libcfg
163+ generateVersionModule verbosity libAutogenDir (isRelease (configFlags local))
164+ if isFreestanding $ configFlags local
165+ then do
166+ toolDir <- lookupEnv "IDRIS_TOOLCHAIN_DIR"
167+ generateToolchainModule verbosity libAutogenDir toolDir
168+ targetDir <- lookupEnv "IDRIS_LIB_DIR"
169+ case targetDir of
170+ Just d -> generateTargetModule verbosity libAutogenDir d
171+ Nothing -> error $ "Trying to build freestanding without a target directory."
172+ ++ " Set it by defining IDRIS_LIB_DIR."
173+ else
174+ generateToolchainModule verbosity libAutogenDir Nothing
168175 where
169176 verbosity = S.fromFlag $ S.configVerbosity flags
170177 version = pkgVersion . package $ localPkgDescr local
@@ -175,6 +182,10 @@ idrisConfigure _ flags _ local = do
175182 -- the file after configure.
176183 configureRTS = make verbosity ["-C", "rts", "clean"]
177184
185+#if !(MIN_VERSION_Cabal(2,0,0))
186+ autogenComponentModulesDir lbi _ = autogenModulesDir lbi
187+#endif
188+
178189idrisPreSDist args flags = do
179190 let dir = S.fromFlag (S.sDistDirectory flags)
180191 let verb = S.fromFlag (S.sDistVerbosity flags)