map Option md_c_flags)
return oFile
+mkRtsOptionsLevelObj :: DynFlags -> IO [FilePath]
+mkRtsOptionsLevelObj dflags
+ = do let mkRtsEnabledObj val
+ = do fn <- mkExtraCObj dflags
+ ["#include \"Rts.h\"",
+ "#include \"RtsOpts.h\"",
+ "const rtsOptsEnabledEnum rtsOptsEnabled = "
+ ++ val ++ ";"]
+ return [fn]
+ case rtsOptsEnabled dflags of
+ RtsOptsNone -> mkRtsEnabledObj "rtsOptsNone"
+ RtsOptsSafeOnly -> return [] -- The default
+ RtsOptsAll -> mkRtsEnabledObj "rtsOptsAll"
+
-- generates a Perl skript starting a parallel prg under PVM
mk_pvm_wrapper_script :: String -> String -> String -> String
mk_pvm_wrapper_script pvm_executable pvm_executable_base sysMan = unlines $
let no_hs_main = dopt Opt_NoHsMain dflags
let main_lib | no_hs_main = []
| otherwise = [ "-lHSrtsmain" ]
- let mkRtsEnabledObj val = do fn <- mkExtraCObj dflags
- ["#include \"Rts.h\"",
- "#include \"RtsOpts.h\"",
- "const rtsOptsEnabledEnum rtsOptsEnabled = "
- ++ val ++ ";"]
- return [fn]
- rtsEnabledObj <- case rtsOptsEnabled dflags of
- RtsOptsNone -> mkRtsEnabledObj "rtsOptsNone"
- RtsOptsSafeOnly -> return []
- RtsOptsAll -> mkRtsEnabledObj "rtsOptsAll"
+ rtsEnabledObj <- mkRtsOptionsLevelObj dflags
rtsOptsObj <- case rtsOpts dflags of
Just opts ->
do fn <- mkExtraCObj dflags
let (md_c_flags, _) = machdepCCOpts dflags
let extra_ld_opts = getOpts dflags opt_l
+
+ rtsEnabledObj <- mkRtsOptionsLevelObj dflags
+
#if defined(mingw32_HOST_OS)
-----------------------------------------------------------------------------
-- Making a DLL
++ lib_path_opts
++ extra_ld_opts
++ pkg_lib_path_opts
+ ++ rtsEnabledObj
++ pkg_link_opts
))
#elif defined(darwin_TARGET_OS)
++ lib_path_opts
++ extra_ld_opts
++ pkg_lib_path_opts
+ ++ rtsEnabledObj
++ pkg_link_opts
))
#else
++ lib_path_opts
++ extra_ld_opts
++ pkg_lib_path_opts
+ ++ rtsEnabledObj
++ pkg_link_opts
))
#endif