We need to build a _vanilla_ executable the first time. The previous code was essentially a no-op as it did not change the flags used to build the executable the first time. --- Cabal/Distribution/Simple/GHC.hs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/Cabal/Distribution/Simple/GHC.hs b/Cabal/Distribution/Simple/GHC.hs index 5f2926a..84745d6 100644 --- a/Cabal/Distribution/Simple/GHC.hs +++ b/Cabal/Distribution/Simple/GHC.hs @@ -866,15 +866,14 @@ buildExe verbosity _pkg_descr lbi ghcOptExtra = ["-no-hs-main" | not isHaskellMain ] } - -- For building exe's for profiling that use TH we actually - -- have to build twice, once without profiling and the again - -- with profiling. This is because the code that TH needs to - -- run at compile time needs to be the vanilla ABI so it can - -- be loaded up and run by the compiler. + -- For building profiling exe's or dynamic exe's that use TH + -- we actually have to build twice, once the vanilla way and + -- then the profiling/dynamic way. This is because GHC can only + -- use vanilla object files to link & run the appropriate + -- compile-time TH code. when ((withProfExe lbi || withDynExe lbi) && EnableExtension TemplateHaskell `elem` allExtensions exeBi) $ - runGhcProg compileOpts { ghcOptNoLink = toFlag True } - --TODO: do we also need to play the static vs dynamic games here? + runGhcProg staticOpts { ghcOptNoLink = toFlag True } runGhcProg compileOpts { ghcOptNoLink = toFlag True } -- 1.7.10.4 _______________________________________________ cabal-devel mailing list cabal-devel@haskell.org http://www.haskell.org/mailman/listinfo/cabal-devel