on master help sign in
stack test --nix should work now
commitf351735f70c16b39615ce1c194c3424fdbf96ed5 authorJorge Acereda <jacereda@gmail.com> dateThu 1 Mar 2018, 19:09 (9 years ago) parentb93fe6b
4 files changed+31−9
Setup.hs+19−3 idris.cabal+1 src/IRTS/System.hs+6−2 stack-shell.nix+5−4
Setup.hs+19−3
@@ -18,6 +18,7 @@ import Distribution.Simple.Utils (createDirectoryIfMissingVerbose, rewriteFile,
1818import Distribution.Compiler
1919import Distribution.PackageDescription
2020import Distribution.Text
21+import Distribution.Verbosity
2122
2223import System.Environment
2324import System.Exit
@@ -115,6 +116,18 @@ gitHash = do h <- Control.Exception.catch (readProcess "git" ["rev-parse", "--sh
115116 (\e -> let e' = (e :: SomeException) in return "PRE")
116117 return $ takeWhile (/= '\n') h
117118
119+-- Generate a module that contains extra library directories passed
120+-- via command-line to cabal
121+generateBuildFlagsModule :: Verbosity -> FilePath -> [String] -> IO ()
122+generateBuildFlagsModule verbosity dir libdirs = do
123+ let buildFlagsModulePath = dir </> "BuildFlags_idris" Px.<.> "hs"
124+ putStrLn $ "Generating " ++ buildFlagsModulePath
125+ createDirectoryIfMissingVerbose verbosity True dir
126+ rewriteFile buildFlagsModulePath contents
127+ where contents = "module BuildFlags_idris where \n\n" ++
128+ "extraLibDirs :: [String]\n" ++
129+ "extraLibDirs = " ++ show libdirs
130+
118131-- Put the Git hash into a module for use in the program
119132-- For release builds, just put the empty string in the module
120133generateVersionModule verbosity dir release = do
@@ -167,8 +180,10 @@ generateToolchainModule verbosity srcDir toolDir = do
167180
168181idrisConfigure _ flags pkgdesc local = do
169182 configureRTS
170− withLibLBI pkgdesc local $ \_ libcfg -> do
183+ withLibLBI pkgdesc local $ \lib libcfg -> do
171184 let libAutogenDir = autogenComponentModulesDir local libcfg
185+ let libDirs = extraLibDirs $ libBuildInfo lib
186+ generateBuildFlagsModule verbosity libAutogenDir libDirs
172187 generateVersionModule verbosity libAutogenDir (isRelease (configFlags local))
173188 if isFreestanding $ configFlags local
174189 then do
@@ -199,6 +214,7 @@ idrisPreSDist args flags = do
199214 let dir = S.fromFlag (S.sDistDirectory flags)
200215 let verb = S.fromFlag (S.sDistVerbosity flags)
201216 generateVersionModule verb "src" True
217+ generateBuildFlagsModule verb "src" []
202218 generateTargetModule verb "src" "./libs"
203219 generateToolchainModule verb "src" Nothing
204220 preSDist simpleUserHooks args flags
@@ -250,7 +266,7 @@ idrisPreBuild args flags = do
250266 return (Nothing, [])
251267#endif
252268
253−idrisBuild _ flags _ local
269+idrisBuild _ flags _ local
254270 = if (execOnly (configFlags local)) then buildRTS
255271 else do buildStdLib
256272 buildRTS
@@ -272,7 +288,7 @@ idrisBuild _ flags _ local
272288-- -----------------------------------------------------------------------------
273289-- Copy/Install
274290
275−idrisInstall verbosity copy pkg local
291+idrisInstall verbosity copy pkg local
276292 = if (execOnly (configFlags local)) then installRTS
277293 else do installStdLib
278294 installRTS
idris.cabal+1
@@ -267,6 +267,7 @@ Library
267267 , Paths_idris
268268 , Version_idris
269269 , Tools_idris
270+ , BuildFlags_idris
270271
271272 Build-depends: base >=4 && <5
272273 , aeson >= 0.6 && < 1.3
src/IRTS/System.hs+6−2
@@ -25,6 +25,7 @@ import Target_idris
2525#else
2626import Paths_idris
2727#endif
28+import BuildFlags_idris
2829
2930import Control.Applicative ((<$>))
3031import Data.List.Split
@@ -81,9 +82,12 @@ gmpLib = ["-lgmp"]
8182gmpLib = []
8283#endif
8384
85+extraLibFlags = map ("-L" ++) extraLibDirs
86+
8487getLibFlags = do dir <- getIdrisCRTSDir
85− return $ ["-L" ++ dropTrailingPathSeparator dir,
86− "-lidris_rts"] ++ extraLib ++ gmpLib ++ ["-lpthread"]
88+ return $ ["-L" ++ dropTrailingPathSeparator dir, "-lidris_rts"]
89+ ++ extraLib ++ gmpLib ++ extraLibFlags
90+ ++ ["-lpthread"]
8791
8892getIdrisLibDir = addTrailingPathSeparator <$> overrideIdrisSubDirWith "libs" "IDRIS_LIBRARY_PATH"
8993
stack-shell.nix+5−4
@@ -2,20 +2,21 @@
22with (import <nixpkgs> {});
33
44let
5− native_libs = [
5+ libs = [
66 libffi
77 zlib
88 ncurses
99 gmp
10− pkgconfig
11− ] ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [
10+ ];
11+ native_libs = lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [
1212 Cocoa
1313 CoreServices
1414 ]);
1515
1616in haskell.lib.buildStackProject {
1717 inherit ghc;
18− buildInputs = native_libs;
18+ nativeBuildInputs = native_libs;
19+ buildInputs = libs;
1920 name = "idrisBuildEnv";
2021 src = ./.;
2122}