diff --git a/Setup.hs b/Setup.hs index 48d1fcd..4233dd8 100644 --- a/Setup.hs +++ b/Setup.hs @@ -1,11 +1,15 @@ -import Distribution.PackageDescription hiding (Flag) +import Data.Maybe +import Distribution.PackageDescription hiding (Flag) import Distribution.Simple +import Distribution.Simple.LocalBuildInfo import Distribution.Simple.Setup import Distribution.Simple.Utils +import System.Directory main = defaultMainWithHooks simpleUserHooks { preConf = makeExtLib + , confHook = \a f -> confHook simpleUserHooks a f >>= updateExtraLibDirs } makeExtLib :: Args -> ConfigFlags -> IO HookedBuildInfo @@ -14,3 +18,20 @@ makeExtLib _ flags = do rawSystemExit verbosity "env" ["make", "--directory=ext_lib"] return emptyHookedBuildInfo + +updateExtraLibDirs :: LocalBuildInfo -> IO LocalBuildInfo +updateExtraLibDirs localBuildInfo = do + let packageDescription = localPkgDescr localBuildInfo + lib = fromJust $ library packageDescription + libBuild = libBuildInfo lib + dir <- getCurrentDirectory + return localBuildInfo { + localPkgDescr = packageDescription { + library = Just $ lib { + libBuildInfo = libBuild { + extraLibDirs = (dir ++ "/ext_lib/lib") : + extraLibDirs libBuild + } + } + } + } diff --git a/haskell-and-cpp.cabal b/haskell-and-cpp.cabal index 1d3c059..22eb17c 100644 --- a/haskell-and-cpp.cabal +++ b/haskell-and-cpp.cabal @@ -16,7 +16,6 @@ library hs-source-dirs: src default-language: Haskell2010 extra-libraries: ext, stdc++ - extra-lib-dirs: ext_lib/lib test-suite test hs-source-dirs: test