import JavaGen ( javaGen )
import qualified PrintJava
+import DriverState ( v_HCHeader )
import TyCon ( TyCon )
import Id ( Id )
import CoreSyn ( CoreBind )
import CmdLineOpts ( DynFlags, HscLang(..), dopt_OutName )
import TmpFiles ( newTempName )
-import IO ( IOMode(..), hClose, openFile, Handle )
-import IO ( hPutStr, stderr) -- Debugging
+import IOExts
+import IO
\end{code}
doOutput :: String -> (Handle -> IO ()) -> IO ()
doOutput filenm io_action
- = (do hPutStr stderr ("Writing to" ++ filenm)
- handle <- openFile filenm WriteMode
+ = (do handle <- openFile filenm WriteMode
io_action handle
hClose handle)
`catch` (\err -> pprPanic "Failed to open or write code output file"
\begin{code}
outputC dflags filenm flat_absC
= do dumpIfSet_dyn dflags Opt_D_dump_realC "Real C" (dumpRealC flat_absC)
- doOutput filenm (\ h -> writeRealC h flat_absC)
+ header <- readIORef v_HCHeader
+ doOutput filenm $ \ h -> do
+ hPutStr h header
+ writeRealC h flat_absC
\end{code}