![]() |
The original version of this document is written in 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 the according section immediately. It also explains where to get the binary (pre-compiled) versions of LessTif.
Table of Contents:
The autotools are not always mandatory, see below for details.
A large variety of systems fullfill this as our
(incomplete!) list of
supported platforms shows.
And installing 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
FreeBSD,
Linux
and
OS/2.
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 shell 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.
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
In each of these places, you need to run a few commands like described e.g. in the autoconf manual. You can find it at the automake web page.
The whole process of running the auto tools and make
is now automated by the CVSMake script
which is present in LessTif's top directory.
Use of CVSMake is recommended! Don't bother us if
you run the auto* tools in your own way and run
into problems afterwards ...
Note that due to a bug in current versions of those tools you may see
an error message while running CVSMake.
If things run well afterwards you may ignore this, of course!
(so please trying to continue first!)
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.
The CVSMake script(s) now feature some command line flags which may be useful.
local
-
if applied to the toplevel CVSMake it won't run CVSMake
in the non-core directories (lib/Xbae/, lib/Xlt/, test/)
nodist
-
enables generation of dependencies in Makefiles.
This does only work on systems which are supported by
GNU automake/libtool
.
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.
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 :
You can type
configure --helpto 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.
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 :
Two things that configure looks for on your machine are:
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-librariesTo 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/includeThe 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
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.x compatible parts of LessTif are still less complete as the 1.2 part when comapred to the full feature/API set of OSF/Motif® 2.x/2.1.
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.
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 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 libtool to solve the platform-dependencies problems for us.
Binary versions usually exist for Linux (various versions), FreeBSD and OS/2.
The primary source for LessTif ( ftp://ftp.lesstif.org/pub/hungry/lesstif) contains three different things :
You can also use CVS; anonymous CVS has been set up so you can keep up to date very easily. Instructions are on our CVS page.
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/libto its command line. See also below.
From Matthew Simpson (matthewsimpson@home.com)
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:
gunzip lesstif-0.82-linux.tar.gz
tar -xvf lesstif-0.82-linux.tar
The result will be this directory:
/usr/lesstif
rm lesstif-0.82-linux.tar
/etc/ld.so.conf
and add the following line for the untarred LessTif library:
/usr/lesstif/lib
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:
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,
add this to your .login
or startx
file:
rm -f $HOME/.MWM-errorsTo 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
cp /usr/lesstif/lib/X11/app-defaults/Mwm .
Mwm*doubleClickTime: 1000
Mwm*keyboardFocusPolicy: pointer
cp /usr/lesstif/lib/X11/mwm/system.mwmrc .mwmrc
/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.)
startx
Matt Simpson
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, Xm_20.dll, mwm.exe, ...).
It puts everything in place to be used within a valid XFree86 OS/2
configuration, so you don't have to adjust anything manually.
If you want to build LessTif for XFree86 OS/2 you have to use OS/2 specific Makefiles since a build based on the auto*-tools/libtool is not (yet?) possible. They are available from http://www.tu-darmstadt.de/~st002279/os2/lesstif.html.
Shared library configuration differs from system to system. Here is the lowdown on getting them to work on the systems that support them.
LD_LIBRARY_PATH
environment variable.
ldconfig
.
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_PATHIf 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 -vto 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.
The Xlt and Xbae widget sets are two widget sets that come with
LessTif distributions but that aren't part of the Motif® clone.
If you first want to learn what they really are,
check out the according pages for
Xlt and
Xbae.
Then you can read on here how to build and/or install them.
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.
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.
Our 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.
libtool: link: warning: cannot determine absolute directory name of `../../../../lib/Xm/.libs' libtool: link: passing it literally to the linker, although it might failThis means you've built Xbae outside of a LessTif source tree. Don't worry about it.