on master help sign in
Merge pull request #3968 from RyanGlScott/master

Make Setup.hs build with GHC 8.2

commitdeca28999fb6f63cf643231dd365c47baea5ce9b authorNiklas Larsson <metaniklas@gmail.com> dateFri 4 Aug 2017, 09:42 (9 years ago) parent853768965c1e9b
2 files changed+41−18
Setup.hs+33−18 idris.cabal+8
Setup.hs+33−18
@@ -1,11 +1,15 @@
11{-# LANGUAGE CPP #-}
22
3+#if !defined(MIN_VERSION_Cabal)
4+# define MIN_VERSION_Cabal(x,y,z) 0
5+#endif
6+
37import Control.Monad
48import Data.IORef
59import Control.Exception (SomeException, catch)
610
711import Distribution.Simple
8−import Distribution.Simple.BuildPaths (autogenModulesDir)
12+import Distribution.Simple.BuildPaths
913import Distribution.Simple.InstallDirs as I
1014import Distribution.Simple.LocalBuildInfo as L
1115import qualified Distribution.Simple.Setup as S
@@ -56,32 +60,37 @@ windres verbosity = P.runProgramInvocation verbosity . P.simpleProgramInvocation
5660
5761usesGMP :: S.ConfigFlags -> Bool
5862usesGMP flags =
59− case lookup (FlagName "gmp") (S.configConfigurationsFlags flags) of
63+ case lookup (mkFlagName "gmp") (S.configConfigurationsFlags flags) of
6064 Just True -> True
6165 Just False -> False
6266 Nothing -> False
6367
6468execOnly :: S.ConfigFlags -> Bool
6569execOnly flags =
66− case lookup (FlagName "execonly") (S.configConfigurationsFlags flags) of
70+ case lookup (mkFlagName "execonly") (S.configConfigurationsFlags flags) of
6771 Just True -> True
6872 Just False -> False
6973 Nothing -> False
7074
7175isRelease :: S.ConfigFlags -> Bool
7276isRelease flags =
73− case lookup (FlagName "release") (S.configConfigurationsFlags flags) of
77+ case lookup (mkFlagName "release") (S.configConfigurationsFlags flags) of
7478 Just True -> True
7579 Just False -> False
7680 Nothing -> False
7781
7882isFreestanding :: S.ConfigFlags -> Bool
7983isFreestanding flags =
80− case lookup (FlagName "freestanding") (S.configConfigurationsFlags flags) of
84+ case lookup (mkFlagName "freestanding") (S.configConfigurationsFlags flags) of
8185 Just True -> True
8286 Just False -> False
8387 Nothing -> False
8488
89+#if !(MIN_VERSION_Cabal(2,0,0))
90+mkFlagName :: String -> FlagName
91+mkFlagName = FlagName
92+#endif
93+
8594-- -----------------------------------------------------------------------------
8695-- Clean
8796
@@ -151,20 +160,22 @@ generateToolchainModule verbosity srcDir toolDir = do
151160 createDirectoryIfMissingVerbose verbosity True srcDir
152161 rewriteFile toolPath (commonContent ++ toolContent)
153162
154−idrisConfigure _ flags _ local = do
163+idrisConfigure _ flags pkgdesc local = do
155164 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
165+ withLibLBI pkgdesc local $ \_ libcfg -> do
166+ let libAutogenDir = autogenComponentModulesDir local libcfg
167+ generateVersionModule verbosity libAutogenDir (isRelease (configFlags local))
168+ if isFreestanding $ configFlags local
169+ then do
170+ toolDir <- lookupEnv "IDRIS_TOOLCHAIN_DIR"
171+ generateToolchainModule verbosity libAutogenDir toolDir
172+ targetDir <- lookupEnv "IDRIS_LIB_DIR"
173+ case targetDir of
174+ Just d -> generateTargetModule verbosity libAutogenDir d
175+ Nothing -> error $ "Trying to build freestanding without a target directory."
176+ ++ " Set it by defining IDRIS_LIB_DIR."
177+ else
178+ generateToolchainModule verbosity libAutogenDir Nothing
168179 where
169180 verbosity = S.fromFlag $ S.configVerbosity flags
170181 version = pkgVersion . package $ localPkgDescr local
@@ -175,6 +186,10 @@ idrisConfigure _ flags _ local = do
175186 -- the file after configure.
176187 configureRTS = make verbosity ["-C", "rts", "clean"]
177188
189+#if !(MIN_VERSION_Cabal(2,0,0))
190+ autogenComponentModulesDir lbi _ = autogenModulesDir lbi
191+#endif
192+
178193idrisPreSDist args flags = do
179194 let dir = S.fromFlag (S.sDistDirectory flags)
180195 let verb = S.fromFlag (S.sDistVerbosity flags)
idris.cabal+8
@@ -97,6 +97,14 @@ source-repository head
9797 type: git
9898 location: git://github.com/idris-lang/Idris-dev.git
9999
100+custom-setup
101+ setup-depends:
102+ Cabal >= 1.10 && <2.1,
103+ base >= 4 && <5,
104+ directory,
105+ filepath,
106+ process
107+
100108Flag FFI
101109 Description: Build support for libffi
102110 Default: False