35 lines
1.2 KiB
Haskell
35 lines
1.2 KiB
Haskell
import Distribution.PackageDescription
|
|
import Distribution.Simple
|
|
import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..), localPkgDescr)
|
|
import Distribution.Simple.PreProcess
|
|
import Distribution.Simple.Setup
|
|
import System.Directory (getCurrentDirectory)
|
|
import System.FilePath ((</>))
|
|
|
|
main :: IO ()
|
|
main = defaultMainWithHooks hooks
|
|
where
|
|
hooks =
|
|
simpleUserHooks
|
|
{confHook = \a flags -> confHook simpleUserHooks a flags >>= rsAddDirs}
|
|
|
|
rsFolder :: FilePath
|
|
rsFolder = "zcash-haskell/librustzcash-wrapper"
|
|
|
|
rsAddDirs :: LocalBuildInfo -> IO LocalBuildInfo
|
|
rsAddDirs lbi' = do
|
|
dir <- getCurrentDirectory
|
|
let rustIncludeDir =
|
|
dir </> rsFolder </> "target/x86_64-unknown-linux-gnu/debug"
|
|
rustLibDir = dir </> rsFolder </> "target/x86_64-unknown-linux-gnu/debug"
|
|
updateLbi lbi = lbi {localPkgDescr = updatePkgDescr (localPkgDescr lbi)}
|
|
updatePkgDescr pkgDescr =
|
|
pkgDescr {library = updateLib <$> library pkgDescr}
|
|
updateLib lib = lib {libBuildInfo = updateLibBi (libBuildInfo lib)}
|
|
updateLibBi libBuild =
|
|
libBuild
|
|
{ includeDirs = rustIncludeDir : includeDirs libBuild
|
|
, extraLibDirs = rustLibDir : extraLibDirs libBuild
|
|
}
|
|
pure $ updateLbi lbi'
|