PREREQUISITES

To build rlwrap, you'll need an ANSI C compiler (gcc will certainly
do) and GNU readline 4.2 or later. rlwrap should compile on most
unices and unix-like environments like linux, the BSDs, OS/X, solaris,
HP/UX, QNX, AIX and cygwin (special thanks to PolarHome for their
"dinosaur zoo" of ageing Unix systems!)


INSTALLATION

First, unzip the tarball or clone the git repository (git clone
https://github.com/hanslub42/rlwrap.git). Then go to the rlwrap
directory, and:

autoreconf --install # only needed if there is no ./configure script

then:

./configure
make
sudo make install


CONFIGURATION OPTIONS

configure can be called with a number of options (e.g. if you want to
install rlwrap in a non-standard place). Do

./configure --help

to see them all. Most of them are not specific to rlwrap, except the
following:

--enable-spy-on-readline (default: YES) If we want to keep the display
  tidy when re-sizing the terminal window or printing multi-line
  prompts, we have to know whether or not readline is in
  horizontal-scroll-mode (i.e. wheter long lines are scrolled or
  wrapped). At present, this involves a look at a private readline
  variable - if you feel guilty about that, disable this option.

--enable-homegrown-redisplay (default: NO): some people report ddouble
  echoing of user input. Enabling this option will cure the problem -
  though the display will then flicker over slow connections
  (cf. BUGS)

--enable-debug: (default: NO) Adds a --debug option to rlwrap's
  repertoire. This will make rlwrap write debug information to a file
  /tmp/rlwrap.debug (cf. the output of rlwrap --help for more info)

--enable-proc-mountpoint (default: /proc) mountpoint for Linux-style
  procfs, used for determination of slave command's working directory.

--enable-multibyte-aware (default: YES) Prevent rlwrap from seeing
  multibyte characters as multiple  characters. 


UNINSTALLATION

To uninstall, do 'make uninstall'

INSTALLING AS NON-ROOT

If you want to install rlwrap as non-root, you should call configure with
the --prefix option, like:

./configure --prefix=$HOME

after which 'make install' will install rlwrap in $HOME/bin

You may have to install GNU readline (e.g using ./configure
--prefix=$HOME in the readline source directory)

rlwrap's configure script will not find this installation automatically, but

./configure --prefix=$HOME CFLAGS=-I$HOME/include CPPFLAGS=-I$HOME/include LDFLAGS=-L$HOME/lib

should work. You can add '-static' to LDFLAGS if you want to build a statically linked rlwrap, 
like so:

./configure --prefix=$HOME CFLAGS=-I$HOME/include CPPFLAGS=-I$HOME/include LDFLAGS=-L$HOME/lib' -static'



BUILD PROBLEMS

If configure complains about missing Xyz (where Xyz can be ncurses, or
readline) and you are sure that Xyz is installed on your system,
consider installing Xyz-devel

completion.c is made from completion.rb by the program rbgen
(https://github.com/hanslub42/libredblack), but both files are included in
the tarball and the repository; rbgen is only needed when you want to change
completion.c. Sometimes, however, after a 'git pull', make will try to
recompile completion.rb and complain about not finding rbgen. A fresh
clone, or simply 'touch completion.c' will solve this.

If the configure script is not found, you can recreate it, and all of
the other files it needs, by:

aclocal
autoconf
autoheader
automake --add-missing

or, even shorter:

autoreconf --install

On recent OS X sytems, libreadline is not the real thing, but a
non-GNU replacement. If the linker complains about missing
symbols, install GNU readline and try again (or, better, use
a tool like brew)

Even though rlwrap now uses the excellent pseudo-terminal (pty)
handling code from rxvt, portable programming with ptys is something
of a black art. The configure script tries to guess how ptys have to
be created and handled on your system, but it may guess wrong. To
quote rxvt's configure script: "if we don't guess right then it's up
to the user", which means that you have to manually edit config.h, and
save a copy of it somewhere, as configure will re-create config.h

