When linking a shared library with --make, always do the link step
authorDuncan Coutts <duncan@well-typed.com>
Tue, 19 May 2009 12:11:49 +0000 (12:11 +0000)
committerDuncan Coutts <duncan@well-typed.com>
Tue, 19 May 2009 12:11:49 +0000 (12:11 +0000)
Without -shared, the default target is a binary and in that case
it makes sense for --make to not try and link a binary when there
is no Main module. But for a shared library the user already has
to specify -shared and there's no reason a shared lib should
contain any Main module or main function.

compiler/main/GHC.hs

index c5571cb..f63b98f 100644 (file)
@@ -888,7 +888,7 @@ load2 how_much mod_graph = do
              let 
                main_mod = mainModIs dflags
                a_root_is_Main = any ((==main_mod).ms_mod) mod_graph
-               do_linking = a_root_is_Main || no_hs_main
+               do_linking = a_root_is_Main || no_hs_main || not StaticFlags.opt_Static
 
              when (ghcLink dflags == LinkBinary 
                     && isJust ofile && not do_linking) $