import Data.Either
import Exception
-import Data.IORef ( readIORef, writeIORef, IORef )
+import Data.IORef ( readIORef )
import GHC.Exts ( Int(..) )
import System.Directory
import System.FilePath
-- Save the number of split files for future references
s <- readFile n_files_fn
let n_files = read s :: Int
- writeIORef v_Split_info (split_s_prefix, n_files)
+ dflags' = dflags { splitInfo = Just (split_s_prefix, n_files) }
-- Remember to delete all these files
addFilesToClean [ split_s_prefix ++ "__" ++ show n ++ ".s"
| n <- [1..n_files]]
- return (SplitAs, dflags, maybe_loc, "**splitmangle**")
+ return (SplitAs, dflags', maybe_loc, "**splitmangle**")
-- we don't use the filename
-----------------------------------------------------------------------------
let as_opts = getOpts dflags opt_a
- (split_s_prefix, n) <- readIORef v_Split_info
+ let (split_s_prefix, n) = case splitInfo dflags of
+ Nothing -> panic "No split info"
+ Just x -> x
let split_s n = split_s_prefix ++ "__" ++ show n <.> "s"
split_obj n = split_odir </>
-- otherwise, stick to the plan
| otherwise = current_hsc_lang
-GLOBAL_VAR(v_Split_info, ("",0), (String,Int))
- -- The split prefix and number of files
buildTag :: String, -- ^ The global \"way\" (e.g. \"p\" for prof)
rtsBuildTag :: String, -- ^ The RTS \"way\"
+ -- For object splitting
+ splitInfo :: Maybe (String,Int),
+
-- paths etc.
objectDir :: Maybe String,
hiDir :: Maybe String,
wayNames = panic "defaultDynFlags: No wayNames",
buildTag = panic "defaultDynFlags: No buildTag",
rtsBuildTag = panic "defaultDynFlags: No rtsBuildTag",
+ splitInfo = Nothing,
-- initSysTools fills all these in
ghcUsagePath = panic "defaultDynFlags: No ghciUsagePath",
ghciUsagePath = panic "defaultDynFlags: No ghciUsagePath",