- | not opt_Static =
- case (dynLibLoader dflags) of
- Wrapped wrapmode ->
- do
- let (o_base, o_ext) = splitExtension input_fn
- let wrapped_executable | o_ext == "exe" = (o_base ++ ".dyn") <.> o_ext
- | otherwise = input_fn ++ ".dyn"
- behaviour <- wrapper_behaviour dflags wrapmode dep_packages
-
- -- THINKME isn't this possible to do a bit nicer?
- let behaviour' = concatMap (\x -> if x=='\\' then "\\\\" else [x]) behaviour
- renameFile input_fn wrapped_executable
- let rtsDetails = (getPackageDetails (pkgState dflags) rtsPackageId);
- (md_c_flags, _) = machdepCCOpts dflags
- SysTools.runCc dflags
- ([ SysTools.FileOption "" ((head (libraryDirs rtsDetails)) ++ "/dyn-wrapper.c")
- , SysTools.Option ("-DBEHAVIOUR=\"" ++ behaviour' ++ "\"")
- , SysTools.Option "-o"
- , SysTools.FileOption "" input_fn] ++
- map (SysTools.FileOption "-I") (includeDirs rtsDetails) ++
- map Option md_c_flags)
- return True
- _ -> return True