Commit 88445139 authored by Simon Marlow's avatar Simon Marlow

FIX #3093: stub filenames when using -osuf

Also remove some unused cruft
parent 8b85ebc3
......@@ -260,11 +260,10 @@ compile' (nothingCompiler, interactiveCompiler, batchCompiler)
compileStub :: GhcMonad m => HscEnv -> Module -> ModLocation
-> m FilePath
compileStub hsc_env mod location = do
let (o_base, o_ext) = splitExtension (ml_obj_file location)
stub_o = (o_base ++ "_stub") <.> o_ext
-- compile the _stub.c file w/ gcc
let (stub_c,_,_) = mkStubPaths (hsc_dflags hsc_env) (moduleName mod) location
let (stub_c,_,stub_o) = mkStubPaths (hsc_dflags hsc_env)
(moduleName mod) location
runPipeline StopLn hsc_env (stub_c,Nothing) Nothing
(SpecificFile stub_o) Nothing{-no ModLocation-}
......
......@@ -498,23 +498,14 @@ mkStubPaths dflags mod location
stub_basename = stub_basename0 ++ "_stub"
-- this is the filename we're going to use when
-- \#including the stub_h file from the .hc file.
-- Without -stubdir, we just #include the basename
-- (eg. for a module A.B, we #include "B_stub.h"),
-- relying on the fact that we add an implicit -I flag
-- for the directory in which the source file resides
-- (see DriverPipeline.hs). With -stubdir, we
-- \#include "A/B.h", assuming that the user has added
-- -I<dir> along with -stubdir <dir>.
include_basename
| Just _ <- stubdir = mod_basename
| otherwise = takeFileName src_basename
obj = ml_obj_file location
osuf = objectSuf dflags
stub_obj_base = dropTail (length osuf + 1) obj ++ "_stub"
-- NB. not takeFileName, see #3093
in
(stub_basename <.> "c",
stub_basename <.> "h",
(include_basename ++ "_stub") <.> "h")
-- the _stub.o filename is derived from the ml_obj_file.
stub_obj_base <.> objectSuf dflags)
-- -----------------------------------------------------------------------------
-- findLinkable isn't related to the other stuff in here,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment