From 3fc8c5b200dc411c9b4d3aa1c2b5706de653c5f7 Mon Sep 17 00:00:00 2001 From: simonmar Date: Mon, 11 Oct 2004 14:44:38 +0000 Subject: [PATCH] [project @ 2004-10-11 14:44:36 by simonmar] Fixes to readline detection and use. VS: ---------------------------------------------------------------------- --- ghc/compiler/Makefile | 40 ++++++++++++++++++++++++++++++------ ghc/compiler/ghci/InteractiveUI.hs | 14 ++++++------- 2 files changed, 41 insertions(+), 13 deletions(-) diff --git a/ghc/compiler/Makefile b/ghc/compiler/Makefile index 2cdc7aa..6169091 100644 --- a/ghc/compiler/Makefile +++ b/ghc/compiler/Makefile @@ -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 diff --git a/ghc/compiler/ghci/InteractiveUI.hs b/ghc/compiler/ghci/InteractiveUI.hs index 1648773..2e9a1a0 100644 --- a/ghc/compiler/ghci/InteractiveUI.hs +++ b/ghc/compiler/ghci/InteractiveUI.hs @@ -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 -- 1.7.10.4