[project @ 2001-09-04 16:35:02 by sewardj]
authorsewardj <unknown>
Tue, 4 Sep 2001 16:35:02 +0000 (16:35 +0000)
committersewardj <unknown>
Tue, 4 Sep 2001 16:35:02 +0000 (16:35 +0000)
Build system hacks to split HSwin32.o into two parts, so that it
can be loaded into GHCi.  Uses the same gruesome hacks as HSstd.o.

ghc/compiler/main/DriverState.hs
ghc/driver/PackageSrc.hs
mk/target.mk

index 8dae078..20946fa 100644 (file)
@@ -1,5 +1,5 @@
 -----------------------------------------------------------------------------
--- $Id: DriverState.hs,v 1.55 2001/08/15 09:58:00 sewardj Exp $
+-- $Id: DriverState.hs,v 1.56 2001/09/04 16:35:02 sewardj Exp $
 --
 -- Settings for the driver
 --
@@ -474,13 +474,18 @@ getPackageLibraries = do
      -- different route (in InteractiveUI.linkPackage).
      -- See driver/PackageSrc.hs for the HSstd1/HSstd2 split definition.
      -- THIS IS A STRICTLY TEMPORARY HACK (famous last words ...)
+     -- JRS 04 Sept 01: Same appalling hack for HSwin32[1,2]
      hACK libs
 #      ifndef mingw32_TARGET_OS
        = libs
 #      else
        = if   "HSstd1" `elem` libs && "HSstd2" `elem` libs
          then "HSstd" : filter ((/= "HSstd").(take 5)) libs
-         else libs
+         else
+         if   "HSwin321" `elem` libs && "HSwin322" `elem` libs
+         then "HSwin32" : filter ((/= "HSwin32").(take 7)) libs
+         else 
+         libs
 #      endif
 
 getPackageExtraGhcOpts :: IO [String]
index 5c9d3e4..f37f912 100644 (file)
@@ -397,8 +397,9 @@ package_details installing
          library_dirs   = if installing
                              then [ "$libdir" ]
                              else [ "$libdir/hslibs/win32" ],
-         hs_libraries      = [ "HSwin32" ],
-        extra_libraries   = [ "user32",  "gdi32", "winmm" ],
+         hs_libraries      = [ "HSwin321", "HSwin322" ],
+        extra_libraries   = [ "user32",  "gdi32", "winmm", 
+                               "kernel32", "advapi32" ],
          include_dirs   = [],
          c_includes     = [],           -- ???
          package_deps   = [ "lang" ], -- greencard now built in
index 403b4f1..448b077 100644 (file)
@@ -515,7 +515,9 @@ CLEAN_FILES += $(GHCI_LIBRARY)
 
 all :: $(GHCI_LIBRARY)
 
+# How come GNU make doesn't support ands and ors?  Duh.
 ifneq "$(GHCI_LIBRARY)" "HSstd.o"
+ifneq "$(GHCI_LIBRARY)" "HSwin32.o"
 # An annoying gotcha is that the Prelude is a bit special,
 # for reasons described in ghc/lib/std/Makefile.
 # So we only put in this standard rule for packages other than std
@@ -523,13 +525,15 @@ ifneq "$(GHCI_LIBRARY)" "HSstd.o"
 # We check for GHCI_LIBRARY being HSstd.o rather than
 # PACKAGE being std, because we want to still use the boilerplate rule 
 # for cbits.
+# JRS 04 Sept 01: The exact same deal applies to hslibs/HSwin32.o.
 $(GHCI_LIBRARY) :: $(LIBOBJS)
        ld -r -x -o $@ $(LIBOBJS) $(STUBOBJS)
-endif
 
+endif # GHCI_LIBRARY != "HSwin32.o"
+endif # GHCI_LIBRARY != "HSstd.o"
 endif # GhcWithInterpreter
 endif # way
-endif # GHCI_LIBRARY
+endif # GHCI_LIBRARY != ""
 
 
 #----------------------------------------