@@ -1,11 +1,15 @@
1{-# LANGUAGE CPP #-}
1{-# LANGUAGE CPP #-}
3+#if !defined(MIN_VERSION_Cabal)
4+# define MIN_VERSION_Cabal(x,y,z) 0
3import Control.Monad
7import Control.Monad
4import Data.IORef
8import Data.IORef
5import Control.Exception (SomeException, catch)
9import Control.Exception (SomeException, catch)
7import Distribution.Simple
11import Distribution.Simple
8−import Distribution.Simple.BuildPaths (autogenModulesDir)
12+import Distribution.Simple.BuildPaths
9import Distribution.Simple.InstallDirs as I
13import Distribution.Simple.InstallDirs as I
10import Distribution.Simple.LocalBuildInfo as L
14import Distribution.Simple.LocalBuildInfo as L
11import qualified Distribution.Simple.Setup as S
15import qualified Distribution.Simple.Setup as S
@@ -56,32 +60,37 @@ windres verbosity = P.runProgramInvocation verbosity . P.simpleProgramInvocation
57usesGMP :: S.ConfigFlags -> Bool
61usesGMP :: S.ConfigFlags -> Bool
58usesGMP flags =
62usesGMP flags =
59− case lookup (FlagName "gmp") (S.configConfigurationsFlags flags) of
63+ case lookup (mkFlagName "gmp") (S.configConfigurationsFlags flags) of
60 Just True -> True
64 Just True -> True
61 Just False -> False
65 Just False -> False
62 Nothing -> False
66 Nothing -> False
64execOnly :: S.ConfigFlags -> Bool
68execOnly :: S.ConfigFlags -> Bool
65execOnly flags =
69execOnly flags =
66− case lookup (FlagName "execonly") (S.configConfigurationsFlags flags) of
70+ case lookup (mkFlagName "execonly") (S.configConfigurationsFlags flags) of
67 Just True -> True
71 Just True -> True
68 Just False -> False
72 Just False -> False
69 Nothing -> False
73 Nothing -> False
71isRelease :: S.ConfigFlags -> Bool
75isRelease :: S.ConfigFlags -> Bool
72isRelease flags =
76isRelease flags =
73− case lookup (FlagName "release") (S.configConfigurationsFlags flags) of
77+ case lookup (mkFlagName "release") (S.configConfigurationsFlags flags) of
74 Just True -> True
78 Just True -> True
75 Just False -> False
79 Just False -> False
76 Nothing -> False
80 Nothing -> False
78isFreestanding :: S.ConfigFlags -> Bool
82isFreestanding :: S.ConfigFlags -> Bool
79isFreestanding flags =
83isFreestanding flags =
80− case lookup (FlagName "freestanding") (S.configConfigurationsFlags flags) of
84+ case lookup (mkFlagName "freestanding") (S.configConfigurationsFlags flags) of
81 Just True -> True
85 Just True -> True
82 Just False -> False
86 Just False -> False
83 Nothing -> False
87 Nothing -> False
89+#if !(MIN_VERSION_Cabal(2,0,0))
90+mkFlagName :: String -> FlagName
85-- -----------------------------------------------------------------------------
94-- -----------------------------------------------------------------------------
@@ -151,20 +160,22 @@ generateToolchainModule verbosity srcDir toolDir = do
151 createDirectoryIfMissingVerbose verbosity True srcDir
160 createDirectoryIfMissingVerbose verbosity True srcDir
152 rewriteFile toolPath (commonContent ++ toolContent)
161 rewriteFile toolPath (commonContent ++ toolContent)
154−idrisConfigure _ flags _ local = do
163+idrisConfigure _ flags pkgdesc local = do
155 configureRTS
164 configureRTS
165+ withLibLBI pkgdesc local $ \_ libcfg -> do
166+ let libAutogenDir = autogenComponentModulesDir local libcfg
156− generateVersionModule verbosity (autogenModulesDir local) (isRelease (configFlags local))
167+ generateVersionModule verbosity libAutogenDir (isRelease (configFlags local))
157− if isFreestanding $ configFlags local
168+ if isFreestanding $ configFlags local
159− toolDir <- lookupEnv "IDRIS_TOOLCHAIN_DIR"
170+ toolDir <- lookupEnv "IDRIS_TOOLCHAIN_DIR"
160− generateToolchainModule verbosity (autogenModulesDir local) toolDir
171+ generateToolchainModule verbosity libAutogenDir toolDir
161− targetDir <- lookupEnv "IDRIS_LIB_DIR"
172+ targetDir <- lookupEnv "IDRIS_LIB_DIR"
162− case targetDir of
173+ case targetDir of
163− Just d -> generateTargetModule verbosity (autogenModulesDir local) d
174+ Just d -> generateTargetModule verbosity libAutogenDir d
164− Nothing -> error $ "Trying to build freestanding without a target directory."
175+ Nothing -> error $ "Trying to build freestanding without a target directory."
165− ++ " Set it by defining IDRIS_LIB_DIR."
176+ ++ " Set it by defining IDRIS_LIB_DIR."
167− generateToolchainModule verbosity (autogenModulesDir local) Nothing
178+ generateToolchainModule verbosity libAutogenDir Nothing
169 verbosity = S.fromFlag $ S.configVerbosity flags
180 verbosity = S.fromFlag $ S.configVerbosity flags
170 version = pkgVersion . package $ localPkgDescr local
181 version = pkgVersion . package $ localPkgDescr local
@@ -175,6 +186,10 @@ idrisConfigure _ flags _ local = do
175 -- the file after configure.
186 -- the file after configure.
176 configureRTS = make verbosity ["-C", "rts", "clean"]
187 configureRTS = make verbosity ["-C", "rts", "clean"]
189+#if !(MIN_VERSION_Cabal(2,0,0))
190+ autogenComponentModulesDir lbi _ = autogenModulesDir lbi
178idrisPreSDist args flags = do
193idrisPreSDist args flags = do
179 let dir = S.fromFlag (S.sDistDirectory flags)
194 let dir = S.fromFlag (S.sDistDirectory flags)
180 let verb = S.fromFlag (S.sDistVerbosity flags)
195 let verb = S.fromFlag (S.sDistVerbosity flags)