


Installing LessTif



Version information :
	$Id: INSTALL,v 1.23 1998/08/05 22:51:23 danny Exp $



A HTML version of this document is available in source distributions
in $(LESSTIF)/doc/INSTALL.html, in binary distributions it's in
$(LESSTIF)/LessTif/doc/INSTALL.html.



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
 - remove the HTML: February 13, 1998
 - add comment about HTML version's location: February 19, 1998

Table of contents :
   1 Introduction
   2 Before LessTif (Compiling it)
   2.1 Getting LessTif
   3 Supported Platforms
   4 Configuring LessTif
   5 Compiling LessTif
   6 Installing LessTif
   6.1 LessTif Built From Source
   6.2 Binary Distributions Of LessTif
   6.2.1 Where To Get Them
   6.2.2 FreeBSD
   6.2.3 Linux
   6.2.4 OS/2
   7 After LessTif (Getting Shared Libraries To Work)



1. Introduction

This document details configuring, compiling, and installing LessTif on
various platforms.

Readers that have (or are interested in) a binary version of LessTif can jump
to section 6.2 immediately. It also explains where to get the binary
(pre-compiled) versions of LessTif.

If you have any corrections/additions/comments about this document, please
send E-mail to LessTif@LessTif.org .

2. Before LessTif (Compiling it)

Lesstif is meant as a source compatible replacement/alternative to Motif 1.2.
As such, it will have the same requirements as Motif 1.2.  As far as we know,
the only requirement that Motif 1.2 has is that you have X11R5 on your system.
Lesstif will _not_ compile with R4 or earlier. If you have X11R5 or above,
you should be able to compile and run LessTif programs.

What this means is that all you folks out there with Suns running SunOS 4.x
that haven't uprgraded your X11 release to R5 -- don't use /usr/openwin.
That's R4 stuff, and won't work with LessTif. Please don't send bug reports
about this, because there is no way we can write LessTif and remain source
compatible with R4 or earlier.

If you're going to be doing development work with LessTif, building the
dependencies for the library files is a necessity. You must have 'makedepend'
to do this. This should be standard on any machine with R5, but if you can't
find it, get it from ftp.x.org (try in /pub/R6untarred). If you don't have
makedepend in your path, `make depend' will not work.

Lastly, you will need an ANSI-C compiler to build Lesstif. If you have GNU CC,
you're set.

Check sections 6.2.2 to 6.2.4 for platform-specific installation instructions
for FreeBSD, Linux, and OS/2.

2.1 Getting LessTif

LessTif is distributed in a couple of ways, a tarball of the most recent 
numbered release, and anonymous CVS.  You can get the tarballs from 
ftp://ftp.lesstif.org/pub/hungry/lesstif/srcdist. Anonymous CVS is available
with a CVSROOT of :pserver:anoncvs@anoncvs.hungry.com:/cvsroot and the 
module name of lesstif.  Be warned that to build LessTif from a CVS checkout
you will also need libtool, automake and autoconf.  All three are available
from you friendly neighbourhood GNU mirror.  Once you have the lesstif module
checked out, and the GNU tools set up, you will need to 
"autoheader && automake -i && autoconf" in order to create the configure 
script. Once this is done you are ready to carry on to Configuring LessTif.


3. Supported platforms

Currently, LessTif is known to build and execute on the following platforms:

OS      Version      CPU               Compiler        X Version
----------------------------------------------------------------------------
Linux   2.0.25        Pentium           GCC-2.7.2.1     X11R6.1 (XFree86-3.2)
                      486               GCC-2.7.1       X11R5
        2.0.0         486               gcc-2.7.2       X11R6 (XFree86-312)
        2.0.18        Alpha             gcc-2.7.2       X11R6
        2.0.20        68030             gcc-2.7.2       X11R6 (Xfree86-3.2)
	(other 2.0.x kernels have been tested)
MkLinux 2.0.21        PowerPC           gcc-2.7.2       X11R6.1
Solaris 2.4           SPARC             GCC-2.7.2.1     X11R5
        2.5           SPARC             GCC-2.7.2       X11R5
SunOS   4.1.4         SPARC             GCC-2.7.2       X11R6.1
FreeBSD 2.1.5-RELEASE 386, 486          gcc-2.6.3       X11R6
        2.1           Intel             GCC-2.6.3       X11R6
        2.2-SNAP      Intel             GCC-2.6.3       X11R6
        2.2-961006-SNAP Pentium         GCC-2.7.2.1     X11R6.1
OpenBSD 2.0           i486              GCC-2.7.2.1     X11R6.1
        2.0           m68k (Sun3)       GCC-2.7.2.1     X11R6
	2.1           Pentium           GCC-2.7.2.1     X11R6.3 (Xfree86-3.3)
	2.1           Sparc             GCC-2.7.2.1     X11R6.3 (w/NCD Xterm)
	2.1           mvme68k           GCC-2.7.2.1     X11R6.3 (w/NCD Xterm)
NetBSD  1.2           m68k (Amiga 3000) GCC-2.7.2       X11R6.1
        1.2(B)        SPARC             GCC-2.7.2       X11R6, X11R6.1
OS/2    Warp          Pentium           GCC-2.7.2 (EMX) X11R6.1 (XFree86-3.2)
Digital UNIX 4.0      Alpha             GCC-2.7.2       X11R6
AIX     4.1.x         ?? (assume RS6K)  gcc-2.6.?       X11R5
        3.25          ?? (assume RS6K)  gcc-2.6.?/cc    X11R5
HP-UX   9.0.4         HP PA             HP cc           X11R5
SVR4    R40V4.3       mc88100           GCC-2.5.8       X11R5
------------------------------------------------------------------------------

Notes:
 - the Linux/ALPHA build was not thoroughly tested, and generated many
   compiler warnings.
 - The AIX builds were not done recently.
 - The SunOS build was not done recently.


4. Configuring LessTif


Configuration of LessTif is now handled by GNU Automake, GNU Libtool, and GNU
Autoconf.  [Historical note: at one time, there was an Imakefile package
contributed by Paul Hoad; this package was not maintained, and has been
removed.]

Automake, libtool, and autoconf are 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.

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.

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.

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 stuff 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 command line that
we used to configure LessTif is :

	CC="cc -Ae" configure --disable-static --x-includes=/usr/include/X11R6
		--x-libraries=/usr/lib/X11R6

There are also other flags available on the command line. Each of these can
take on either a 'yes' or 'no' value. They are:
  --enable-shared	build shared libraries [default=yes]
  --enable-static	build static libraries [default=no]
  --enable-build-12	build Motif-1.2 compatible version (default)
  --enable-build-20	build Motif-2.0 compatible version
  --with-dmalloc	use dmalloc (ftp.letters.com)
  --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.

You can type
	configure --help
to get the list of all options, with a short description of each.

There used to also be two options there that didn't work :
  --enable-build-21	build Motif-2.1 compatible version
  --enable-build-CDE	build Motif-CDE compatible version

There are no source files in the 2.1 or CDE directories (yet), so
we didn't debug the build system.


5. 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.


6. Installing LessTif

6.1 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 GNU libtool to solve the platform-dependencies problems
for us.


6.2 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 RELEASE-POLICY.

Binary versions currently exist for Linux, FreeBSD, OS/2.

6.2.1 Where to get them

The primary source for LessTif (ftp.lesstif.org, in /pub/hungry/lesstif)
contains three different things :
 - source distributions (and a daily snapshot of CVS called lesstif-current)
 - daily diffs of the sources
 - binary distributions.

6.2.2 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 below.

6.2.3 Linux

From Matthew Simpson <msimpson@wans.net> :

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:

 - After downloading the binary distribution, log in as root and place 
   the file in /usr
 - gunzip it:
   gunzip lesstif-0.82-linux.tar.gz
 - untar it:
   tar -xvf lesstif-0.82-linux.tar
   The result will be this directory: /usr/lesstif
 - Remove the tar file if desired:
   rm lesstif-0.82-linux.tar 
 - Edit /etc/ld.so.conf and add the following line for the untarred 
   LessTif library:
	/usr/lesstif/lib
 - 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:
 - 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
 - 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

 - 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 on 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.)
 - 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

6.2.4 OS/2

The OS/2 binary distribution is provided as an InfoZip file.
Go to your X11ROOT and unzip the archive. 

If you want to build LessTif for XFree86/2 you have to use OS/2 specific
Makefiles. They are available from

http://www.ime.rwth-aachen.de/~michael/os2/lt/lesstif.html

7 After LessTif (Getting shared libraries working)

Shared library configuration differs from system to system.  Here is the
lowdown on getting them to work on the systems that support them.

 - 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.
 - HPUX 9
   Nothing additional needs to be done.  Just make sure the linker can
   find the libraries when generating the executable (the -L flag).

 - NetBSD/FreeBSD/OpenBSD
   Same as for Linux.

Please send corrections or additions to this document to lesstif@lesstif.org
