projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix return type cast in f.i.wrapper when using libffi (#3516)
[ghc-hetmet.git]
/
compiler
/
main
/
CodeOutput.lhs
diff --git
a/compiler/main/CodeOutput.lhs
b/compiler/main/CodeOutput.lhs
index
3b45a38
..
83f23cf
100644
(file)
--- a/
compiler/main/CodeOutput.lhs
+++ b/
compiler/main/CodeOutput.lhs
@@
-27,17
+27,18
@@
import Util
import Cmm ( RawCmm )
import HscTypes
import DynFlags
import Cmm ( RawCmm )
import HscTypes
import DynFlags
+import Config
import ErrUtils ( dumpIfSet_dyn, showPass, ghcExit )
import Outputable
import Module
import Maybes ( firstJust )
import ErrUtils ( dumpIfSet_dyn, showPass, ghcExit )
import Outputable
import Module
import Maybes ( firstJust )
-import Distribution.Text
-import Directory ( doesFileExist )
-import Monad ( when )
-import IO
+import Control.Exception
+import Control.Monad
+import System.Directory
import System.FilePath
import System.FilePath
+import System.IO
\end{code}
%************************************************************************
\end{code}
%************************************************************************
@@
-127,7
+128,7
@@
outputC dflags filenm flat_absC packages
_ -> "#include \""++h_file++"\""
pkg_configs <- getPreloadPackagesAnd dflags packages
_ -> "#include \""++h_file++"\""
pkg_configs <- getPreloadPackagesAnd dflags packages
- let pkg_names = map (display.package) pkg_configs
+ let pkg_names = map (display.sourcePackageId) pkg_configs
doOutput filenm $ \ h -> do
hPutStr h ("/* GHC_PACKAGES " ++ unwords pkg_names ++ "\n*/\n")
doOutput filenm $ \ h -> do
hPutStr h ("/* GHC_PACKAGES " ++ unwords pkg_names ++ "\n*/\n")
@@
-225,6
+226,10
@@
outputForeignStubs dflags mod location stubs
concatMap mk_include (includes rts_pkg)
mk_include i = "#include \"" ++ i ++ "\"\n"
concatMap mk_include (includes rts_pkg)
mk_include i = "#include \"" ++ i ++ "\"\n"
+ -- wrapper code mentions the ffi_arg type, which comes from ffi.h
+ ffi_includes | cLibFFI = "#include \"ffi.h\"\n"
+ | otherwise = ""
+
stub_h_file_exists
<- outputForeignStubs_help stub_h stub_h_output_w
("#include \"HsFFI.h\"\n" ++ cplusplus_hdr) cplusplus_ftr
stub_h_file_exists
<- outputForeignStubs_help stub_h stub_h_output_w
("#include \"HsFFI.h\"\n" ++ cplusplus_hdr) cplusplus_ftr
@@
-237,6
+242,7
@@
outputForeignStubs dflags mod location stubs
("#define IN_STG_CODE 0\n" ++
"#include \"Rts.h\"\n" ++
rts_includes ++
("#define IN_STG_CODE 0\n" ++
"#include \"Rts.h\"\n" ++
rts_includes ++
+ ffi_includes ++
cplusplus_hdr)
cplusplus_ftr
-- We're adding the default hc_header to the stub file, but this
cplusplus_hdr)
cplusplus_ftr
-- We're adding the default hc_header to the stub file, but this