The FL User Interface Library Version 0.97 11/26/97

----------------------------------------------------------------
How to compile FL:
----------------------------------------------------------------

Run "./configure".  Then look at "config.h" and "makeinclude" and make
any further changes, then run "make".  To skip compiling the demo
programs, type "make lib" and "make fluid" instead.

To run the demo programs, run "test/demo".

To install the new version of FL and fluid, you must run "su" and then
"make install".  This will install the library, include files, and
fluid in /usr/local/{lib,include,bin}.

----------------------------------------------------------------
How to write programs that use FL:
----------------------------------------------------------------

The proper way to include FL header files is "#include <FL/Fl_xyz.H>".
If FL is installed this will work without switches.  If not you will
need to provide a -I switch pointing to this directory.

You will need to link with -lFl -lX11 and possibly -lXext and -lm.
Some machines will require more libraries.  Look in "makeinclude" for
a list.  If FL is not installed, use a -L switch pointing at the lib
subdirectory of this directory.

If you wish to distribute a program (in source form) that uses FL, you
are allowed by the license to directly include the portions of FL that
you need.  This may make it easier for a user to compile your program
since they don't need to install the library.  Please provide
instructions for the user on how they can get the entire source of FL.

If you wish to distribute a compiled program without source code: this
is allowed.  See the license.

----------------------------------------------------------------
Notes for Linux and XFree86:
----------------------------------------------------------------

The default keyboard mapping on XFree86 is incorrect.  The following
commands will rearrange it so that it matches most other X servers on
PC style keyboards.  FL will work without these changes, but they will
make the keypad and delete key work.  This should also fix problems
with Motif or other toolkits.  You should insert the following
commands into your .xinitrc file:

xmodmap - <<EOF
keycode 22 = BackSpace
add mod5 = Num_Lock
keycode 147 = KP_Home
keycode 148 = KP_Up
keycode 149 = KP_Prior
keycode 150 = KP_Left
keycode 151 = KP_Begin
keycode 152 = KP_Right
keycode 153 = KP_End
keycode 154 = KP_Down
keycode 155 = KP_Next
keycode 156 = KP_Insert
keycode 157 = KP_Delete
EOF

Most servers use Mod2 for NumLock, but rxvt (and perhaps other
programs) assumme it is Mod5.

----------------------------------------------------------------
How to port to a new machine:
----------------------------------------------------------------

./configure and compilation has been tested on:

  SGI IRIX 5.3, 6.2, 6.3
  Linux 2.0.18 and higher (with and without Mesa installed)

./configure works by creating the files "makeinclude" and "config.h".
If it does not work, you should try editing these files, and adding
"#if" or "#ifdef" statements to the source.  If you have access to GNU
autoconf, try to figure out a way to set the symbols in the configure
script.

If you succeed in getting FL to compile on a machine not listed here,
PLEASE tell me (even if you did not have to change anything).  Of
course, if you had to alter a file, I am even more interested in
hearing about it!

Known problems:

  FL assummes that a short is 16 bits in some of the image drawing
  library.  There is a typedef in config.h but I had no sample machines
  where this was not true to test this on.

  The symbol "SVR4" will enable compilation of a version of scandir() if
  your system does not have it.  However I don't know of an easy way to
  check if scandir() exists.

  ANSI C header files (for instance <string.h>) are assummed to exist.
  configure can detect that they don't but it is way too difficult to
  put all the other cases of code in.

----------------------------------------------------------------
Shared libraries:
----------------------------------------------------------------

FL was not designed to be a shared library.  It was cut up into as
many independent source files as possible so that a statically linked
program would be small.  I also intend to alter the structures and
inline functions in the headers without considering this a change in
the interface.

However I have reports that it works as a shared library, and many
people request this.

The methods and names used to create shared libraries vary greatly per
machine, and ./configure will not produce them.  Instead you must edit
your own version of a makeinclude file.  Take a look at some of the
makefiles/makeinclude.*.so files for examples.  These files are dated:
be sure to check the actual makeinclude produced by ./configure!!!

Some machines may require shared versions of the libraries to be put
in /usr/lib instead of /usr/local/lib.

----------------------------------------------------------------
Copyright (C) 1998 Digital Domain
----------------------------------------------------------------
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Library General Public License for more details.

You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

Written by Bill Spitzak		spitzak@d2.com
Digital Domain 300 Rose Avenue Venice, CA 90291
----------------------------------------------------------------
