This file details only configuration options peculiar to FVWM.  Please
read the generic instructions in INSTALL first.

Important Note!
===============

The `configure' script keeps a cache of information it discovers, so
that subsequent invocations of `configure' will be faster.

However, if you update information on your system (such as install or
upgrade an optional library like Xpm, etc. [see below]) the cache may
contain outdated information; this can lead to confusing behavior during
subsequent `configure' invocations or builds.

If you're not familiar with how this works it might be safest to remove
the cache each time before running `configure'; you can either do a
simple:

  $ rm -f config.cache

Or you may feel more comfortable with a complete cleaning:

  $ make distclean


Extra Modules
=============

All modules are equal, but some are more equal than others.  The
favoured and generally better supported modules are distributed under
the `modules' directory.  These are always built and installed.

The second class modules are categorized as `extras'.  These are only
built and installed if you explicitly do `cd extras; make install'.
You can also install extra modules one-by-one, using `cd extras/foo;
make install'.  (You must do a build from the top-level directory
first, so that `libs' is built.)

If you prefer to treat the extras as first-class modules, give
`--enable-extras' option to configure.  Then `make' and `make install'
will recurse into the `extras' directory.


What gets installed, and Where
==============================

* fvwm2 is installed into ${prefix}/bin
* a couple of utilities (xpmroot, etc) are also installed in ${prefix}/bin
* all the modules (and extra modules) are installed
  into ${libexecdir}/fvwm2/${VERSION}

Where VERSION is the version string of FVWM, typically something like
"2.2.0".  No other files are installed.  There are sample
system.fvwm2rc files which you may copy manually to ${sysconfdir} ---
see below.

Unless you used configure options,

* ${prefix} is /usr/local.
* ${sysconfdir} is ${prefix}/etc,
* ${libexecdir} is ${prefix}/libexec

Thus the default locations are: /usr/local/bin,
/usr/local/libexec/fvwm2/VERSION, and /usr/local/etc for the FVWM
binary, modules, and system.fvwm2rc, respectively.

Note that by default, none of the executables are stripped when they're
installed.  If you'd like them to be, run `make install-strip' instead
of `make install'.  Note that due to a bug in the current versions of
autoconf/automake this will fail in some of the modules directories
trying to strip shell scripts.  We recommend that you run `make -k
install-strip', which will continue past the failures.


Configuration File
==================

FVWM configures itself at runtime by reading one or more configuration
files.  The default location for the system-wide configuration (named
system.fvwm2rc) is /usr/local/etc; this may be changed by changing the
prefix or setting sysconfdir explicitly.  This system-wide file is
read only if the user's ~/.fvwm2rc is not found.

Sample configuration files may be found in the sample.fvwm2rc
directory.  To avoid clobbering the current configuration, no
configuration file is installed by default.  You must copy it manually
the first time FVWM is installed.


C++
===

FVWM proper does not need C++ to compile.  However, some modules are
written in C++, so configure probes for a C++ compiler by default, and
will build these modules only if a C++ compiler exists.  If configure
doesn't do the right thing, specify one or the other of these flags:

    --with-cxx=foo  to use "foo" for compiling C++ programs
    --without-cxx   to disable probing for a C++ compiler altogether


CPP
===

One of FVWM's modules, FvwmCpp, requires a C preprocessor program.  The
configuration will look in various common places for cpp.  If one is not
found, FvwmCpp will still compile but you'll need to invoke it with the
-cpppath option to tell it where to find cpp.  FvwmCpp will exit with an
error message if no path to cpp is known.

You can tell configure what cpp to use by setting the FVWM_CPP
environment variable before invoking configure:

  $ FVWM_CPP=/my/special/cpp ./configure


Optional libraries used by FVWM
===============================

FVWM can optionally be compiled to use the following libraries: Xpm,
rplay, and readline.  By default, these are probed for, and used if
found.  If you want to use any of them, install the library before
configuring FVWM.

Xpm allows the use of coloured icons.  See the Xpm web page at
http://www.inria.fr/koala/lehors/xpm.html for all the latest info and
links to source code.  You can also get the source code from
ftp://ftp.x.org/contrib/libraries/.  If you're having trouble building
with XPM even after reading this, try Question 2.4 in the FVWM FAQ.

Rplay is used in a few modules (FvwmEvent, for one) for playing sounds
without invoking an external program.  This library appears to have
been orphaned in November, 1996.  The latest version we know about is
rplay 3.2.0beta6, available at ftp://ftp.x.org/contrib/audio/rplay.

Readline is used in one module (FvwmConsole) to allow fancy
command-line editing, a history buffer, etc.  It is GNU software, and
should be found on any GNU site, such as ftp://ftp.gnu.org/gnu/readline/.

If configure doesn't do the right thing, try one or more of the
following flags (examples assume library is named "foo"):

    --without-foo-library    to disable probing for libfoo
    --with-foo-library=FILE  to specify the library filename
    --with-foo-library=DIR   to specify directory containing libfoo
    --with-foo-includes=DIR  to specify include directory for libfoo's
			     headers

The desired include directory is the one in which the following header
may be found:

    xpm		X11/xpm.h
    readline	readline/readline.h
    rplay	rplay.h

Only one version of the --with-foo-library flag may be specified.


Shared Libraries in Non-standard Places
---------------------------------------

Note that at this time, autoconf and FVWM don't handle systems which
require a runtime library path separate from the link path very
gracefully.  If you have such a system (e.g., Solaris) and you have
installed the optional libraries in places not normally searched (e.g.,
not in /usr/lib, /lib or similar), you may need to specify the runtime
path separately; the above options won't add it for you.

A good way to do this is set the LDFLAGS variable before configure
runs to contain the -R option.  For example:

  $ LDFLAGS=-R/opt/xpm ./configure --with-xpm-library=/opt/xpm \
                                   --with-xpm-includes=/opt/xpm

In the future, hopefully, FVWM's configuration will perform this step
automatically.


Compile-time Options
====================

FVWM has a multitude of options selectable only at compile time.
These are intended to keep FVWM's memory footprint small, by compiling
in the code only if requested.

Each such option, say "foo", is selectable by an "--enable-foo" or a
"--disable-foo" switch.  By default, all of these options (except
debug messages) are enabled.  This is probably what you want -- unless
memory is *really* tight -- so normally none of these options are
used.

If option "foo" is enabled by default, the NON-default version of the
switch is shown in the list below, and vice-versa.  In other words,
the version of the switch that you are likely to use is the one
listed.


  --disable-modality		disable modal dialogs for applications

Totally disables motif applications ability to have modal dialogs.
Use with care.

  --disable-saveunder		disable saveunders for pop-up menus

Tells the WM not to request save unders for pop-up menus.  A quick
test using monochrome X11 shows that save unders cost about 4 kbytes
RAM, but saves a lot of window redraws if you have windows that take a
while to refresh.  For a color display, I assume the cost is more like
4 kbytes x 8 = 32 kbytes (256 color).

  --disable-shape		disable shape extensions

Shaped window extensions are enabled by default; this option will
disable them.  Shaped window extensions seem to increase the window
managers RSS by about 60 Kbytes.  They provide for leaving a title-bar
on the window without a border.  If you don't use shaped window
extension, you can either make your shaped windows undecorated, or
live with a border and backdrop around all your shaped windows
(oclock, xeyes)

If you normally use a shaped window (xeyes or oclock), you might as
well compile this extension in, since the memory cost is minimal in
this case (the shaped window shared libs will be loaded anyway).  If
you don't normally use a shaped window, you have to decide for
yourself.

Note: if it is compiled in, run time detection is used to make sure
that the currently running X server supports it.

  --disable-activedown-button	disable ActiveDown button state

Disables the ActiveDown button state.  This state allows different
button styles for pressed down buttons on active windows, and also for
the title-bar if extended-titlestyle is enabled (see below).  The man
page refers to this button state as "ActiveDown."  If not defined, the
"ActiveUp" state is used instead.  Disabling this reduces memory
usage.

  --disable-inactive-button	disable Inactive button state

Disables the Inactive button state.  This state allows different
button styles for inactive windows, and also for the title-bar if
extended-titlestyle is enabled (see below).  The man page refers to
this button state as "Inactive."  If not defined, the "ActiveUp" state
is used instead.  Disabling this reduces memory usage.

  --disable-mini-icons		disable MiniIcon style option

Disables the "MiniIcon" Style option to specify a small pixmap which
can be used as one of the title-bar buttons, shown in window list,
utilized by modules, etc.  Requires pixmap-buttons to be defined (see
below).

  --disable-vector-buttons	disable vector button style

Disables the vector button style.  This button type is considered
"standard," so it is recommended that you leave it in.

  --disable-pixmap-buttons	disable pixmap button style

Disables the pixmap button style.  You must have Xpm support to use
color pixmaps.  See the man page button style entries for "Pixmap" and
"TiledPixmap" for usage information.

  --disable-gradient-buttons    disable gradient button style

Disables the gradient button style.  See the man page button style
entries for "HGradient" and "VGradient" for usage information.

  --disable-multistyle		disable stacked button styles

Disables stacked button styles (also for the title-bar if
extended-titlestyle is enabled).  There is a slight memory penalty for
each additional style. See the man page entries for AddButtonStyle and
AddTitleStyle for usage information.

  --disable-extended-titlestyle	 disable styled title-bars

Disables styled title-bars.  These are specified with the TitleStyle
command in a similar fashion to the ButtonStyle command.  This flag
this also controls whether support to change the title-bar height is
compiled in.

  --disable-borderstyle		disable BorderStyle command

Disables the BorderStyle command.  Not all button styles are
available.  See the man page entry for BorderStyle for usage
information.  If you are also using pixmap-buttons, you can also
texture your borders with tiled pixmaps.  The BorderStyle command has
Active and Inactive states, regardless of the activedown-button and
inactive-button flags.

  --disable-usedecor		disable UseDecor style option

Disables tagged general decoration styles which can be assigned to
windows using the UseDecor Style option, or dynamically updated with
ChangeDecor.  To create and destroy "decor" definitions, see the man
page entries for AddToDecor and DestroyDecor.  There is a slight
memory penalty for each additionally defined decor.

  --disable-windowshade		disable WindowShade function

Disables the WindowShade function.  This function "rolls" the window
up so only the title-bar remains.  See the man page entry for
"WindowShade" for more information.

  --enable-debug-msgs		enable debugging messages

If you would like to see lots of debug messages from FVWM, for
debugging purposes, enable this option.


