From 2fa6b60d0449b49fd9eaa75c72d07f10d45c9837 Mon Sep 17 00:00:00 2001 From: bringert Date: Tue, 10 May 2005 13:55:01 +0000 Subject: [PATCH] Added option to disable readline. --- src/GF/System/Arch.hs | 15 +++--------- src/GF/System/Readline.hs | 51 +++++++++++++++++++++++++++++++++++++++ src/Makefile | 12 ++++++--- src/config.mk.in | 2 ++ src/configure.ac | 30 ++++++++++++++++++++++- 5 files changed, 94 insertions(+), 16 deletions(-) create mode 100644 src/GF/System/Readline.hs diff --git a/src/GF/System/Arch.hs b/src/GF/System/Arch.hs index d9f3e855c..c0dac3644 100644 --- a/src/GF/System/Arch.hs +++ b/src/GF/System/Arch.hs @@ -5,9 +5,9 @@ -- Stability : (stable) -- Portability : (portable) -- --- > CVS $Date: 2005/04/21 16:46:14 $ +-- > CVS $Date: 2005/05/10 14:55:01 $ -- > CVS $Author: bringert $ --- > CVS $Revision: 1.7 $ +-- > CVS $Revision: 1.8 $ -- -- architecture\/compiler dependent definitions for unix\/hbc ----------------------------------------------------------------------------- @@ -21,7 +21,8 @@ import System.Random import System.CPUTime import Control.Monad (filterM) import System.Directory -import System.Console.Readline + +import GF.System.Readline (fetchCommand) ---- import qualified UnicodeF as U --(fudlogueWrite) @@ -44,14 +45,6 @@ prCPU cpu = do welcomeArch :: String welcomeArch = "This is the system compiled with ghc." -fetchCommand :: String -> IO (String) -fetchCommand s = do - res <- readline s - case res of - Nothing -> return "q" - Just s -> do addHistory s - return s - -- | selects the one with the later modification time of two selectLater :: FilePath -> FilePath -> IO FilePath selectLater x y = do diff --git a/src/GF/System/Readline.hs b/src/GF/System/Readline.hs new file mode 100644 index 000000000..588b277d0 --- /dev/null +++ b/src/GF/System/Readline.hs @@ -0,0 +1,51 @@ +{-# OPTIONS -cpp #-} + +---------------------------------------------------------------------- +-- | +-- Module : GF.System.Readline +-- Maintainer : BB +-- Stability : (stable) +-- Portability : (portable) +-- +-- > CVS $Date: 2005/05/10 14:55:01 $ +-- > CVS $Author: bringert $ +-- > CVS $Revision: 1.1 $ +-- +-- Uses the right readline library to read user input. +----------------------------------------------------------------------------- + +module GF.System.Readline (fetchCommand) where + +#ifdef USE_READLINE + +import System.Console.Readline (readline, addHistory) + +#else + +import System.IO.Error (try) +import System.IO (stdout,hFlush) + +#endif + +#ifdef USE_READLINE + +fetchCommand :: String -> IO (String) +fetchCommand s = do + res <- readline s + case res of + Nothing -> return "q" + Just s -> do addHistory s + return s + +#else + +fetchCommand :: String -> IO (String) +fetchCommand s = do + putStr s + hFlush stdout + res <- try getLine + case res of + Left e -> return "q" + Right l -> return l + +#endif diff --git a/src/Makefile b/src/Makefile index a0ccaa4d7..5efe4753e 100644 --- a/src/Makefile +++ b/src/Makefile @@ -5,7 +5,6 @@ GHMAKE=$(GHC) --make GHCXMAKE=ghcxmake GHCFLAGS= -package util -fglasgow-exts $(CPPFLAGS) $(LDFLAGS) GHCOPTFLAGS=-O2 -GHCWINFLAGS=-package readline GHCFUDFLAG= JAVAFLAGS=-target 1.4 -source 1.4 @@ -20,6 +19,10 @@ BIN_DIST_DIR=$(DIST_DIR)-$(host) SNAPSHOT_DIR=GF-$(shell date +%Y%m%d) +ifeq ($(READLINE),readline) + GHCFLAGS += -package readline -DUSE_READLINE +endif + GF_EXE=gf$(EXEEXT) GF_EXE_TMP=gf-bin$(EXEEXT) GF_DOC_EXE=gfdoc$(EXEEXT) @@ -98,7 +101,8 @@ javac: jar: javac cd JavaGUI; $(JAR) -cmf manifest.txt gf-java.jar *.class - +showflags: + @echo $(GHCFLAGS) # added by peb: tracing: GHCFLAGS += -DTRACING @@ -108,8 +112,8 @@ ghci-trace: GHCFLAGS += -DTRACING ghci-trace: ghci touch-files: - rm -f GF/System/Tracing.{hi,o} - touch GF/System/Tracing.hs + rm -f GF/System/Tracing.{hi,o} GF/System/Readline.{hi,o} + touch GF/System/Tracing.hs GF/System/Readline.hs # profiling prof: GHCOPTFLAGS += -prof -auto-all -auto-dicts diff --git a/src/config.mk.in b/src/config.mk.in index 860e5bf0f..13395ff54 100644 --- a/src/config.mk.in +++ b/src/config.mk.in @@ -21,6 +21,8 @@ INSTALL = @INSTALL@ GHC = @GHC@ GHCI = @GHCI@ +READLINE = @READLINE@ + ENABLE_JAVA = @ENABLE_JAVA@ JAVAC = @JAVAC@ diff --git a/src/configure.ac b/src/configure.ac index 8991543ba..00995d24a 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -4,7 +4,7 @@ AC_INIT([GF],[2.2],[aarne@cs.chalmers.se],[GF]) AC_PREREQ(2.53) -AC_REVISION($Revision: 1.13 $) +AC_REVISION($Revision: 1.14 $) AC_CONFIG_FILES([config.mk jgf]) @@ -41,6 +41,34 @@ GHCI=$(dirname $GHC)/ghci AC_SUBST(GHC) AC_SUBST(GHCI) +dnl *********************************************** +dnl readline +dnl *********************************************** + +AC_ARG_WITH(readline, + AC_HELP_STRING([--with-readline=], + [Select which readline implementation to use. + Available alternatives are: 'readline' (GNU readline), + 'no' (don't use readline) + (default = readline)]), + [if test "$withval" = "yes"; then + READLINE="readline" + else + READLINE="$withval" + fi], + [READLINE="readline"]) + +case $READLINE in + readline) + ;; + no) + ;; + *) + AC_MSG_ERROR([Bad value for --with-readline: $READLINE]) + ;; +esac + +AC_SUBST(READLINE) dnl *********************************************** dnl java stuff