
                              Installing LessTif
                                       
   by The LessTif Core Team
   
Introduction

   This document details configuring, compiling, and installing LessTif
   on various platforms.
   
   The source of this document is in doc/INSTALL.html, the LessTif build
   process uses lynx to convert it into plain text. Both the HTML and the
   plain text formats should be in a distribution.
   
   Readers that have (or are interested in) a binary version of LessTif
   can jump to [1]section 5.2 immediately. It also explains where to get
   the binary (pre-compiled) versions of LessTif.
   
   Table of Contents:
   
    1. [2]Before LessTif(What you need to compile LessTif)
    2. [3]Supported platforms
    3. [4]Configuring LessTif
         1. [5]LessTif from CVS
         2. [6]LessTif source distribution
         3. [7]Getting configure to find everything
         4. [8]Using configure options to tune the build
    4. [9]Compiling LessTif
    5. [10]Installing LessTif
         1. [11]LessTif built from source
         2. [12]Binary distributions of LessTif
              1. [13]Where to get them
              2. [14]FreeBSD
              3. [15]Linux
              4. [16]OS/2
    6. [17]After LessTif (Getting shared libraries to work)
    7. [18]Xlt and Xbae
    8. [19]Revision History
       
   If you have any corrections/additions/comments about this document,
   please send E-mail to [20]lesstif@lesstif.org.
   
Before LessTif(What you need to compile LessTif)

   To build LessTif from the sources you need a number of installed
   software packages and utilities:
     * an ANSI C compiler such as [21]gcc
     * the make build tool
     * [22]automake
     * [23]autoconf
     * [24]libtool
     * the [25]X Window System (X11 Release 5 or higher)
     * yacc, lex (GNU implementations are fine)
       
   The autotools are not always mandatory, see below for details.
   
   Obviously a big number of [26]platforms fullfills this and install the
   missing software shouldn't be too hard (except for the compiler and
   X11, of course ;-)
   Check later sections in this document to get platform-specific
   instructions for building on [27]FreeBSD, [28]Linux, and [29]OS/2.
   
Supported platforms

   We have an incomplete(!) [30]list of supported platforms available.
   
Configuring LessTif

   Configuration of LessTif is now handled by automake, autoconf and
   libtool. They are GNU development tools which the LessTif developers
   use to generate the distribution's build scripts and makefiles.
   Normally this shouldn't bother you. The end result is that there are a
   bunch of Makefile.in files, and a "configure" script.
   
   If you obtained a copy of LessTif from CVS, then you need to perform
   some additional steps which will create the configure script and all
   the Makefile.in files.
   
   Configure is a script which is meant to be run by people who compile
   LessTif (you, probably). It looks at your system and figures out how
   exactly to compile. It may need a little help through command-line
   options, see below.
   
  LessTif from CVS
  
   If you obtained your LessTif sources directly from CVS, you'll have to
   perform some of the steps which the LessTif developers normally
   perform when creating a distribution. (So, if you did get a real
   distribution you don't need to do this and you can go on to the next
   section.)
   
   At the time of this writing, the current versions of the auto* tools
   which we use are:
   automake 1.4, autoconf 2.13, and libtool 1.3.
   
   We have four different places where you need to run the auto*
   commands. These are
     * $LESSTIF (the main directory)
     * $LESSTIF/lib/Xlt (a directory tree containing a set of add-on
       widgets)
     * $LESSTIF/lib/Xbae (a directory tree containing the Xbae add-on
       widgets)
     * $LESSTIF/test
       
   In each of these places, you need to run the following commands in the
   right order :
     * libtoolize --force not required in test directory
     * aclocal
     * autoheader
     * automake -a -i
     * autoconf
       
   The autoconf manual tells you exactly what's happening when you do
   this. You can find it at [31]the automake web page.
   
   The whole process of running the auto tools and make is automated by
   the CVSMake script which is present in LessTif's top directory. Use of
   CVSMake is recommended.
   
   CVSMake needs to be run in the top source directory of LessTif, it
   figures out which directories need its attention (information from the
   configure.in), and then does its thing. After running CVSMake, the
   source tree should be ready for running the configure command.
   
   Note that you may get a warning about the INSTALL file missing in some
   cases. Don't worry, it is now a generated file. If you have Lynx on
   your system, it'll convert doc/INSTALL.html (this document) into
   INSTALL. This only happens during the build process (and we're now in
   the configuration phase which is before the build); that's why you can
   get this message. By the way: it's harmless.
   
   The commands above are also the commands that you need to run if you
   have modified some of the makefiles yourself.
   
   Once you've done all the above, you can continue with the next
   section.
   
  LessTif source distribution
  
   To configure LessTif for your system, just type 'configure'. This
   should do a reasonable job of locating the stuff it needs, and gives
   rather verbose output should something fail.
   
   The configure script has a lot of command line options which you might
   need or want to use for two main reasons :
     * the configure program doesn't work (well) for you
     * you want to tune the LessTif build process
       
   You can type
        configure --help

   to get the list of all options, with a short description of each.
   We'll cover most if not all of the options in the next sections of
   this document.
   
  Getting configure to find everything
  
   Configure identifies a large number of aspects of your computer system
   and it influences the compilation of LessTif based on that. Autoconf
   and automake are tools which allow the LessTif developers to specify
   all of that in a fairly simple manner. Some of the things identified
   by configure are :
     * where is the X distribution (include files, libraries)
     * do you have X11R5 or X11R6
     * do you have ANSI C compatible include files
     * do you have the lynx, man2html, yacc, lex programs
     * what is the type of the return value of the signal system call
     * ...
       
   Two things that configure looks for on your machine are:
     * X11R5/R6/R6.1 headers and libaries
     * Motif 1.2 headers and libraries (optional)
       
   Now many people who have Motif on their system don't use LessTif. Hmm.
   Wonder why that is. Anyway, it wouldn't make much sense if you needed
   Motif in order to build LessTif. The good news is : you don't need it.
   The only reason why you can tell configure where to find Motif is so
   it can configure the Makefiles under test/ to be capable of building
   LessTif as well as Motif tests.
   
   Configure will tell you where it has found them if it found them. If
   it didn't find X, you'll have to specify the path on configure's
   command line. Use these two options:
--x-includes
--x-libraries

   And to specify the Motif stuff, use these:
--with-motif-includes
--with-motif-libraries

   To specify the location of the various bits, you have to set these
   flags equal to something. An example on how to do this is:
configure --x-includes=/usr/local/X11R5/include

   The other flags behave identically.
   
   NOTE: On an HP/UX system that we have access to, the commands that we
   used to configure LessTif are :
    CC="cc -Ae"
    export CC
    configure --disable-static

  Using configure options to tune the build
  
   As of LessTif 0.87.2, the build system is capable of building multiple
   LessTif libraries. The purpose of this is to have several libraries
   that are compatible with several releases of OSF/Motif.
   
   This was introduced because an increasing number of people are using
   Motif 2.* functions, and the binary releases of LessTif only supported
   the 1.2 version of Motif.
   
   Note that the 2.0 compatible parts of LessTif are far less stable than
   the 1.2 parts. In particular, binary incompatibilities in the 2.0
   implementation are known to occur between releases of LessTif.
   
    Choosing which version to compile
    
   --enable-build-12
          build Motif-1.2 compatible version (enabled by default)
          
   --enable-build-20
          build Motif-2.0 compatible version (enabled by default)
          
    Choosing which version to install as default
    
   --enable-default-12
          install Motif-1.2 compatible version as default
          
   --enable-default-20
          install Motif-2.0 compatible version as default
          
    Other options
    
   --enable-shared
          build shared libraries [default=yes]
          
   --enable-static
          build static libraries [default=no]
          
   --with-dmalloc
          use dmalloc
          
   --enable-maintainer-mode
          enable make rules and dependencies not useful (and sometimes
          confusing) to the casual installer
          
   --enable-debug
          build LessTif with debugging options (-g)(default)
          
   --enable-verbose
          configure LessTif to be verbose (default)
          
   --enable-nonstandard-conversions
          include nonstandard conversions
          
   --enable-production
          build a production version (doesn't include XdbDebug calls
          which print all kinds of debugging info depending on some
          environment variables)
          
   --prefix=XXX
          tell configure where LessTif should be installed by "make
          install"
          
   There were also two options to allow building Motif 2.1 or CDE
   compatible versions of LessTif; these were removed because they didn't
   work.
   
Compiling LessTif

   After configuring LessTif, just typing 'make' should build all the
   libraries, clients, and (optionally) tests for LessTif. To build
   libraries or other things only, just cd to the directory in which you
   want to build things, and type 'make'. Dependencies have been set up
   so that the libraries will be recompiled if they are old (or haven't
   been compiled yet), so typing make from within a test directory will
   rebuild what needs to be rebuilt.
   
   Some combinations of compilers and libraries may have code generation
   bugs. For example, gcc-2.7.0 on a Solaris platform has known problems
   if the library is compiled with an optimization greater than -O (-O1).
   If you see weird problems when you debug library code, try a lower (or
   no) optimization. For the vast majority who compile with the default
   flags (-g for GNU-C), this is not an issue.
   
Installing LessTif

  LessTif built from source
  
   Installing LessTif is as easy as typing 'make install'. Getting shared
   libraries to work on your machine after installation depends on your
   OS. Fortunately we're using [32]libtool to solve the
   platform-dependencies problems for us.
   
  Binary distributions of LessTif
  
   Binary versions of LessTif are built and made available as a service
   to people who want to use LessTif without having to compile it
   themselves. As we're concentrating on developping and improving
   LessTif itself, we consider binary releases to be a side product,
   which we only generate once in a while - generally at each minor
   release. Our release policy is detailed in [33]RELEASE-POLICY.
   
   Binary versions currently exist for Linux, FreeBSD, OS/2.
   
    Where to get them
    
   The primary source for LessTif ([34]
   ftp://ftp.lesstif.org/pub/hungry/lesstif) contains three different
   things :
     * [35]source distributions (and a daily snapshot of CVS called
       lesstif-current)
     * daily diffs of the sources
     * [36]binary distributions.
       
   You can also use CVS; anonymous CVS has been set up so you can keep up
   to date very easily. Instructions are on the [37]CVS page of the
   [38]LessTif web site.
   
    FreeBSD
    
   Starting with the 0.80a (0.80 pre-release), the FreeBSD binary
   distribution is provided as a pkg_add installable file.
   
   Pkg_add(8) is FreeBSD's installation tool.
   
   Installation of LessTif with pkg_add creates a directory /usr/lesstif,
   under which all of LessTif is placed. As the file /usr/lesstif/README
   explains, you should put /usr/lesstif/bin in your $path, add
   /usr/lesstif/lib to your LD_LIBRARY_PATH or to the options of ldconfig
   in /etc/rc, and point your compiler to include files and libraries by
   adding
    -I/usr/lesstif/include -L/usr/lesstif/lib

   to its command line. See also [39]below.
   
    Linux
    
   From [40]Matthew Simpson:
   
   LessTif Binary Installation
   
   The following procedure worked for installing the binary version 0.82
   LessTif onto my Redhat 4.2 Linux system. I did not have a previous
   installation of either the source or binary LessTif, so this works
   from scratch. I am documenting this days later, so please correct as
   needed. The binary installation is simple:
    1. After downloading the binary distribution, log in as root and
       place the file in /usr
    2. gunzip it: gunzip lesstif-0.82-linux.tar.gz
    3. untar it: tar -xvf lesstif-0.82-linux.tar The result will be this
       directory: /usr/lesstif
    4. Remove the tar file if desired: rm lesstif-0.82-linux.tar
    5. Edit /etc/ld.so.conf and add the following line for the untarred
       LessTif library:
/usr/lesstif/lib
    6. Run this: ldconfig
       LessTif Window Manager:
       To ignore your default window manager and instead load mwm, make
       or copy these files as yourself or root (whichever you use) to
       your home directory:
    7. Put a .xinitrc file in your home directory. Add this to the last
       line, replacing the call to any other window manager:
eval "exec /usr/lesstif/bin/mwm"
       Or for better tracking, use this line instead:
eval "exec /usr/lesstif/bin/mwm" -debug >"$HOME"/.MWM-errors 2>&1
       (The redirections rules for > and 2>&1 syntax are specific to sh,
       which is what my startx script uses. The rules are slightly
       different for tcsh.) This will dump any errors to a file in your
       home directory called .MWM-errors. If no errors occur, this file
       will not get created. If this file already exists, new errors will
       be appended to it. To get a new file each time you log in or start
       X windows, add this to your .login or startx file:
rm -f $HOME/.MWM-errors
       To automatically execute your window manager upon login, add this
       to the end of your .login file (this is using tcsh syntax):
if ( ! -e /tmp/.X0-lock ) then
echo "Starting X Windows..."
rm -f $HOME/.MWM-errors
startx
endif
    8. Copy this:
       cp /usr/lesstif/lib/X11/app-defaults/Mwm .
       This is where you set your personal app-defaults. Uncomment the
       lines mentioned at the end of this file to get some pretty
       borders. Here are some other things I changed: Double clicking an
       icon was set too fast. To slow it down:
       Mwm*doubleClickTime: 1000
       To allow automatic window focus whenever the mouse pointer hits
       it:
       Mwm*keyboardFocusPolicy: pointer
    9. Copy this to your home directory:
       cp /usr/lesstif/lib/X11/mwm/system.mwmrc .mwmrc
       (Note that you should rename it from system.mwmrc to .mwmrc) This
       is where you set up your personal root menues. If you use XFree86,
       look in /usr/X11R6/bin for most of the already-installed
       applications you like to execute through the root window pull-down
       menues. More menues and sub-menues can be added as desired. Since
       /usr/X11R6/bin is in your path, you need not type the full path
       names into .mwmrc. Applications in other directories will need
       paths or soft links set up.
       When setting up these two files I did not have a LessTif mwm
       manual page available. However, if you have Unix and Motif
       available at work (such as on SGI products), just do a man mwm and
       print it out for reference. Most will apply to LessTif mwm. (Even
       though SGI uses their own version called 4Dwm, they still provide
       the mwm manual pages with the IRIX 6.2 release.)
   10. run startx
       
   Hope this helps someone. These directions may be over simplified, but
   I wanted to be specific. Thanks for LessTif. I am learning M*tif but
   have a long way to go.
   
   Matt Simpson
   
    OS/2
    
   The OS/2 binary distribution is provided as an InfoZip file. Put it
   into your X11ROOT directory and unzip the archiv. This installs all
   libraries and executables (Xm.dll, mwm, ...).
   
   If you want to build LessTif for XFree86/2 you have to use OS/2
   specific Makefiles) since a build based on the auto* tools is not yet
   possible). They are available from
   [41]http://www.tu-darmstadt.de/~st002279/os2/lesstif.html.
   
After LessTif (Getting shared libraries to work)

   Shared library configuration differs from system to system. Here is
   the lowdown on getting them to work on the systems that support them.
   
    1. Linux
       There are two ways to have shared libraries available under linux:
          + Use the LD_LIBRARY_PATH environment variable.
          + Use ldconfig.
       The second option is only available to those with superuser
       access, so if you don't, or you specifically want to use the
       library that was just built (for running the tests), use the
       LD_LIBRARY_PATH variable.
       The LD_LIBRARY_PATH variable is to contain a colon separated list
       of paths to be searched for shared libraries. This variable is
       consulted before the information compiled by ldconfig, so even if
       you have LessTif already installed on your system you can use this
       variable to force the use of the newly built library.
       An example setting for LD_LIBRARY_PATH:
$ LD_LIBRARY_PATH=/home/toshok/lesstif/libXm:/home/toshok/lesstif/libMrm
$ export LD_LIBRARY_PATH
       If you have superuser access and want LessTif to be installed for
       system- wide use, make sure the directory to which the libraries
       were installed is listed in /etc/ld.so.conf. Then (as root) type
ldconfig -v
       to make them available.
       If you're not sure which library is being used (either the
       system-wide installed one, or one you've just compiled), use the
       'ldd' command. After generating an executable linked dynamically
       with LessTif, type 'ldd <executable-name>'. This will output a
       list of the paths to all the shared libraries this executable
       depends on.
    2. HPUX 9
       Nothing additional needs to be done. Just make sure the linker can
       find the libraries when generating the executable (the -L flag).
    3. NetBSD/FreeBSD/OpenBSD
       Same as for Linux.
       
   Send corrections or additions to this document to
   [42]<lesstif@lesstif.org>
   
Xlt and Xbae

   The Xlt and Xbae widget sets are two widget sets that come with
   LessTif distributions but that aren't part of the Motif clone. This
   chapter describes briefly what they are, and how to build and install
   them.
   
  With and without LessTif
  
   They can be built both inside a LessTif source tree or independently,
   e.g. on a system that has commercial Motif.
   
   Both Xlt and Xbae are built in exactly the same way, so there's no
   need to make a distinction between them here.
   
   The LessTif distribution is created such that the basic distribution
   (the LessTif libraries, and the standard clients) are always part of
   the distribution. The other parts - the tests, Xlt, and Xbae - are all
   optional, and they can be used without LessTif around.
   
   What does this mean ? Well, quite simply it means you can use the Xbae
   widget set without having to use LessTif. Or the Xlt widget set.
   
   Or, the other way around: if you want to use the LessTif library but
   have no interest in any of the three optional pieces, then you can
   just not install them. This is true for source distributions, binary
   distributions may combine one or more of the optional bits as a
   convenience to users who are not application developers.
   
   The following short chapters will describe both Xlt and Xbae, then
   we'll describe how to build and/or install them.
   
  Xlt
  
   The Xlt widget set is mostly written by Rick Scott as a collection of
   utilities that come in handy when writing Motif/LessTif programs.
   
  Xbae
  
   Xbae however is a small widget set that originates at Bellcore, and
   that was part of the Bellcore Application Environment. It was
   maintained for years outside of Bellcore by Andrew Lister, but this
   became too much for him.
   
   The primary source for Xbae is now in the Hungry CVS, Xbae will be
   released at the same dates as LessTif even though it is not part of
   LessTif.
   
  How to build them
  
   There's no magic involved in compiling or installing Xbae or Xlt.
   Compilation is driven by the GNU auto* tools, as such it should be
   similar to the compilation of many other freely available software
   packages.
   
   The Hungry CVS repository contains only sources however, we try to
   avoid storing generated files in it. This means that files that can be
   generated by either libtool, automake, or autoconf, are not part of
   the CVS.
   
   If you grab a development snapshot either by downloading a -current
   image, or obtain a copy through anonymous CVS, then you'll have to use
   these tools to generate some files which would normally be present in
   a LessTif distribution.
   
   CVSMake makes all this a lot easier though.
   
  Quirks in the build
  
libtool: link: warning: cannot determine absolute directory name of `../../../.
./lib/Xm/.libs'
libtool: link: passing it literally to the linker, although it might fail

   This means you've built Xbae outside of a LessTif source tree. Don't
   worry about it.
   
  Binary distributions
  
Revision History

   Document revision history :
     * original writing : November 21, 1996
     * binary distributions added : June 14, 1997
     * add new configuration stuff: December 26, 1997
     * convert to HTML: January 20, 1998
     * provide text version based on lynx HTML to text conversion,
       January 1999
     * update the links to GNU build tools, January 1999
     * update document to reflect build for more than one environment,
       February 1999
     * Add information about Xlt and Xbae.

References

   1. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#Binary_distributions_of_LessTif
   2. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#Before_LessTif
   3. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#Supported_platforms
   4. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#Configuring_LessTif
   5. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#LessTif_from_CVS
   6. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#LessTif_source_distribution
   7. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#find_everything
   8. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#tune_the_build
   9. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#Compiling_LessTif
  10. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#Installing_LessTif
  11. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#LessTif_built_from_source
  12. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#Binary_distributions_of_LessTif
  13. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#Where_to_get_them
  14. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#FreeBSD
  15. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#Linux
  16. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#OS/2
  17. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#After_LessTif
  18. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#Xlt_and_Xbae
  19. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#RevisionHistory
  20. mailto:lesstif@lesstif.org
  21. http://www.gnu.org/software/gcc/gcc.html
  22. http://sourceware.cygnus.com/automake
  23. http://sourceware.cygnus.com/autoconf
  24. http://www.gnu.org/software/libtool/libtool.html
  25. http://www.x.org/
  26. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/platforms.html
  27. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#FreeBSD
  28. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#Linux
  29. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#OS/2
  30. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/platforms.html
  31. http://sourceware.cygnus.com/automake
  32. ftp://ftp.gnu.org/pub/gnu
  33. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/RELEASE-POLICY
  34. ftp://ftp.lesstif.org/pub/hungry/lesstif
  35. ftp://ftp.lesstif.org/pub/hungry/lesstif/srcdist
  36. ftp://ftp.lesstif.org/pub/hungry/lesstif/bindist
  37. http://www.lesstif.org/cvs.html
  38. http://www.lesstif.org/
  39. file://localhost/tmp/lesstif-0.89.9/doc/www.lesstif.org/INSTALL.html#After_LessTif
  40. mailto:matthewsimpson@home.com
  41. http://www.tu-darmstadt.de/~st002279/os2/lesstif.html
  42. mailto:lesstif@lesstif.org
