[project @ 2004-10-11 14:44:36 by simonmar]
authorsimonmar <unknown>
Mon, 11 Oct 2004 14:44:38 +0000 (14:44 +0000)
committersimonmar <unknown>
Mon, 11 Oct 2004 14:44:38 +0000 (14:44 +0000)
Fixes to readline detection and use.
VS: ----------------------------------------------------------------------

ghc/compiler/Makefile
ghc/compiler/ghci/InteractiveUI.hs

index 2cdc7aa..6169091 100644 (file)
@@ -273,21 +273,49 @@ compiling_with_4xx = $(shell if (test $(GhcCanonVersion) -lt 500); then echo YES
 endif
 endif
 
-# Only include GHCi if we're bootstrapping with at least version 411
+# -----------------------------------------------------------------------------
+# Building a compiler with interpreter support
+#
+# The interpreter, GHCi interface, and Template Haskell are only
+# enabled when we are bootstrapping with the same version of GHC, and
+# the interpreter is supported on this platform.
+
 ifeq "$(GhcWithInterpreter) $(bootstrapped)" "YES YES"
-# Yes, include the interpreter, readline, and Template Haskell extensions
+
+# Yes, include the interepreter, readline, and Template Haskell extensions
 SRC_HC_OPTS += -DGHCI -package template-haskell
+
 ifneq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
 SRC_HC_OPTS += -package unix
-ifeq "$(GhcLibsWithReadline)" "YES"
-SRC_HC_OPTS += -package readline 
-endif
 endif
+
 ALL_DIRS += ghci
+
+# Enable readline if either:
+#   - we're building stage 1 and $(GhcHasReadline)="YES"
+#   - we're building stage 2/3, and we have built the readline package
+#
+# But we don't enable readline on Windows, because readline is fairly
+# broken there.
+#
+ifneq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
+ifeq "$(stage)" "1"
+ifeq "$(GhcHasReadline)" "YES"
+SRC_HC_OPTS += -package readline -DUSE_READLINE
+endif
+else
+ifeq "$(GhcLibsWithReadline)" "YES"
+SRC_HC_OPTS += -package readline -DUSE_READLINE
+endif
+endif # stage=1
+endif # not windows
+
 else
+
 # No interpreter, so exclude Template Haskell modules
 EXCLUDED_SRCS += deSugar/DsMeta.hs typecheck/TcSplice.lhs hsSyn/Convert.lhs
-endif 
+
+endif # bootstrapped with interpreter
 
 # -----------------------------------------------
 # mkdependC stuff
index 1648773..2e9a1a0 100644 (file)
@@ -1,6 +1,6 @@
 {-# OPTIONS -#include "Linker.h" #-}
 -----------------------------------------------------------------------------
--- $Id: InteractiveUI.hs,v 1.176 2004/09/30 10:36:47 simonpj Exp $
+-- $Id: InteractiveUI.hs,v 1.177 2004/10/11 14:44:38 simonmar Exp $
 --
 -- GHC Interactive User Interface
 --
@@ -47,7 +47,7 @@ import System.Posix
 #endif
 #endif
 
-#if HAVE_READLINE_HEADERS && HAVE_READLINE_LIBS
+#ifdef USE_READLINE
 import Control.Concurrent      ( yield )       -- Used in readline loop
 import System.Console.Readline as Readline
 #endif
@@ -185,7 +185,7 @@ interactiveUI srcs maybe_expr = do
        -- initial context is just the Prelude
    cmstate <- cmSetContext cmstate [] ["Prelude"]
 
-#if HAVE_READLINE_HEADERS && HAVE_READLINE_LIBS
+#ifdef USE_READLINE
    Readline.initialize
 #endif
 
@@ -196,7 +196,7 @@ interactiveUI srcs maybe_expr = do
                   cmstate = cmstate,
                   options = [] }
 
-#if HAVE_READLINE_HEADERS && HAVE_READLINE_LIBS
+#ifdef USE_READLINE
    Readline.resetTerminal Nothing
 #endif
 
@@ -265,8 +265,8 @@ interactiveLoop is_tty show_prompt = do
                        _other      -> return ()) $ do
 
   -- read commands from stdin
-#if HAVE_READLINE_HEADERS && HAVE_READLINE_LIBS
-  if (is_tty) 
+#ifdef USE_READLINE
+  if (True || is_tty) 
        then readlineLoop
        else fileLoop stdin show_prompt
 #else
@@ -331,7 +331,7 @@ stringLoop (s:ss) = do
 mkPrompt toplevs exports
    = concat (intersperse " " (map ('*':) toplevs ++ exports)) ++ "> "
 
-#if HAVE_READLINE_HEADERS && HAVE_READLINE_LIBS
+#ifdef USE_READLINE
 readlineLoop :: GHCi ()
 readlineLoop = do
    cmstate <- getCmState