From 1c8b1464208c1d2986f1e326dcfd20227490c19c Mon Sep 17 00:00:00 2001 From: Artem Pelenitsyn Date: Fri, 21 Jun 2024 01:55:39 +0000 Subject: [PATCH] FIXME: trying absolute paths in cabal file to find the .so but with no luck at least, the .o is fetched in a reasonable way now this also tries to compile RTS from the plugin, but local experiments doesn't seem to show it having any effect, unfortunately --- gibbon-compiler/src/Gibbon/Compiler.hs | 1 + .../examples/gibbon-examples.cabal | 15 +++++++++------ .../gibbon-plugin/src/Gibbon/Plugin.hs | 16 +++++++++++----- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/gibbon-compiler/src/Gibbon/Compiler.hs b/gibbon-compiler/src/Gibbon/Compiler.hs index 3ad5c2e5..6df15193 100644 --- a/gibbon-compiler/src/Gibbon/Compiler.hs +++ b/gibbon-compiler/src/Gibbon/Compiler.hs @@ -15,6 +15,7 @@ module Gibbon.Compiler , configParser, configWithArgs, defaultConfig -- * Some other helper fns , compileAndRunExe + , getRTSBuildDir, compileRTS ) where diff --git a/gibbon-ghc-integration/examples/gibbon-examples.cabal b/gibbon-ghc-integration/examples/gibbon-examples.cabal index f945ab7c..94fcc7cb 100644 --- a/gibbon-ghc-integration/examples/gibbon-examples.cabal +++ b/gibbon-ghc-integration/examples/gibbon-examples.cabal @@ -32,9 +32,10 @@ library -dcore-lint -ddump-simpl -dsuppress-all -ddump-to-file - include-dirs: "../../gibbon-rts/build" - extra-lib-dirs: "../../gibbon-rts/build" + -- include-dirs: "../../gibbon-rts/build" + -- extra-lib-dirs: "../../gibbon-rts/build" extra-libraries: gibbon_rts_ng + extra-lib-dirs: /home/artem/data/Dev/gibbon/gibbon/gibbon-rts/build executable run-gibbon-examples @@ -44,8 +45,10 @@ executable run-gibbon-examples build-depends: base, gibbon-examples, binary, bytestring, deepseq, time ghc-options: -O2 -dcore-lint - include-dirs: "../../gibbon-rts/build" - extra-lib-dirs: "../../gibbon-rts/build" + -- include-dirs: "../../gibbon-rts/build" + -- extra-lib-dirs: "../../gibbon-rts/build" extra-libraries: gibbon_rts_ng - -- ghc-options: "-optl-Wl,-I/home/ckoparka/chai/tree-velocity/gibbon-rts/build" - -- "-optl-Wl,-L/home/ckoparka/chai/tree-velocity/gibbon-rts/build" + extra-lib-dirs: /home/artem/data/Dev/gibbon/gibbon/gibbon-rts/build + ghc-options: + -- "-optl-Wl,-I/home/ckoparka/chai/tree-velocity/gibbon-rts/build" + "-optl-Wl,-L/home/artem/data/Dev/gibbon/gibbon/gibbon-rts/build" diff --git a/gibbon-ghc-integration/gibbon-plugin/src/Gibbon/Plugin.hs b/gibbon-ghc-integration/gibbon-plugin/src/Gibbon/Plugin.hs index d5dc454a..866c1316 100644 --- a/gibbon-ghc-integration/gibbon-plugin/src/Gibbon/Plugin.hs +++ b/gibbon-ghc-integration/gibbon-plugin/src/Gibbon/Plugin.hs @@ -96,7 +96,9 @@ gibbonPlugin mod_guts = do -- (5) Link the .o file in the module. let objfile = replaceExtension fp ".o" - let rtsfile = "/home/ckoparka/chai/tree-velocity/gibbon-rts/build/gibbon_rts.o" + GHC.liftIO $ Gib.compileRTS gibbonConfigForPlugin + lib_dir <- GHC.liftIO Gib.getRTSBuildDir + let rtsfile = lib_dir "gibbon_rts.o" let mod_guts' = mod_guts { GHC.mg_foreign_files = (GHC.mg_foreign_files mod_guts) ++ [ ( GHC.RawObject, objfile) , ( GHC.RawObject, rtsfile) @@ -128,14 +130,18 @@ gibbonPlugin mod_guts = do -------------------------------------------------------------------------------- +gibbonConfigForPlugin :: Gib.Config +gibbonConfigForPlugin = let + config = Gib.defaultConfig { Gib.mode = Gib.Library (Gib.toVar "xxx") } + dflags' = Gib.gopt_set Gib.Opt_DisableGC $ Gib.gopt_set Gib.Opt_Packed (Gib.dynflags config) + in + config { Gib.dynflags = dflags', Gib.optc = " -O3 " } + generateObjectFile :: Gib.Prog0 -> IO FilePath generateObjectFile l0 = do - let config = Gib.defaultConfig { Gib.mode = Gib.Library (Gib.toVar "xxx") } - let dflags' = Gib.gopt_set Gib.Opt_DisableGC $ Gib.gopt_set Gib.Opt_Packed (Gib.dynflags config) - let config' = config { Gib.dynflags = dflags', Gib.optc = " -O3 " } uniq <- randomIO :: IO Word16 let fp = "/tmp/gibbon-ghc-integration-file-" ++ show uniq ++ ".hs" - Gib.compileFromL0 config' 0 fp l0 + Gib.compileFromL0 gibbonConfigForPlugin 0 fp l0 return fp --------------------------------------------------------------------------------