Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 0115852f109f25c54fc4688f23760855 > files > 279

lesstif-devel-0.95.2-2.fc15.i686.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<!-- $Id: FAQ.html,v 1.81 2004/09/28 04:04:34 dannybackx Exp $ -->

<HTML>

<HEAD>
  <TITLE>LessTif Frequently Asked Questions</TITLE>
  
  <META NAME="AUTHOR"      CONTENT="LessTif Core Team">
  <META NAME="COPYRIGHT"   CONTENT="LessTif Core Team">
  <META NAME="DESCRIPTION" CONTENT="Frequently Asked Questions (FAQ) for the LessTif Project">
  <META NAME="KEYWORDS"    CONTENT="LessTif, Frequently, Asked, Questions, FAQ">
  
</HEAD>

<body bgcolor="#ffffff" text="#000000">

<H1 ALIGN=CENTER>
LessTif FAQ
</H1>

This article contains the answers to some Frequently Asked Questions (FAQ)
often seen in the LessTif mailing list and posted to the newsgroup
<A HREF="news:comp.windows.x.motif">comp.windows.x.motif</A>.
It is posted to help reduce volume in the LessTif mailing list and to
provide hard-to-find information of general interest.

<HR>

This article includes answers to the following questions, which are loosely
grouped into categories. Questions marked with a + indicate questions new to
this issue; those with significant changes of content since the last issue are
marked by !
<BR>
This FAQ was last updated on $Date: 2004/09/28 04:04:34 $

<HR>

<H2 ALIGN=CENTER>
Contents
</H2>

<A HREF="#TOPIC1"><B>TOPIC: LessTif General Information</B></A>
   <ul>
   <li><A HREF="#QU1.0">   What is LessTif?</A>
   <li><A HREF="#QU1.1">   Where can I get LessTif?</A>
   <li><A HREF="#QU1.2">   Who is developing LessTif?</A>
   <li><A HREF="#QU1.3">   Can I use LessTif in my applications?</A>
   <li><A HREF="#QU1.4">   Will LessTif be Motif1.2 Compliant?</A>
   <li><A HREF="#QU1.5">   Will LessTif be Motif2.0 Compliant?</A>
   <li><A HREF="#QU1.14">  Will LessTif be Motif2.1 Compliant?</A>
   <li><A HREF="#QU1.6">   What about CDE?</A>
   <li><A HREF="#QU1.13">  Is UIL (User Interface Language) supported?</A>
   <li><A HREF="#QU1.7">   Is there a LessTif newsgroup?</A>
   <li><A HREF="#QU1.8">   Is there a LessTif mailing list?</A>
   <li><A HREF="#QU1.9">   Is there a LessTif mailing list digest?</A>
   <li><A HREF="#QU1.10">  Is a LessTif mailing list archive available on FTP or WWW?</A>
   <li><A HREF="#QU1.11">  What is LessDox?</A>
   <li><A HREF="#QU1.12">  How can I obtain LessDox?</A>
   </ul>

<P>
<A HREF="#TOPIC2"><B>TOPIC: LessTif Installation</B></A>
    <ul>
    <li><A HREF="#QU2.0">  What Platforms is LessTif on?</A>
    <li><A HREF="#QU2.1">  Is there a pre-built library available for My Platform?</A>
    <li><A HREF="#QU2.2">  Do I have to have Imake/xmkmf?</A>
    <li><A HREF="#QU2.3">  Can I build a Shared Library?</A>
    <li><A HREF="#QU2.4">  Can I build a Static Library?</A>
    <li><A HREF="#QU2.6">  How do I build the makefiles?</A>
    <li><A HREF="#QU2.7">  Why does it say I have X11r5 when I have r6 ?</A>
    <li><A HREF="#QU2.8">  Why does the build fail with undefined symbols?</A>
    <li><A HREF="#QU2.9">  Why does configure fail?</A>
    </ul>

<P>
<A HREF="#TOPIC3"><B>TOPIC: Running applications with LessTif</B></A>
    <ul>
    <li><A HREF="#QU3.0">  Application fails to start</A>
    <li><A HREF="#QU3.1">  Application can't load Shared Libraries</A>
    <li><A HREF="#QU3.2">  Application doesn't work as expected</A>
    <li><A HREF="#QU3.3">  Application crashes on 64bit architecture</A>
    </ul>

<P>
<A HREF="#TOPIC4"><B>TOPIC: LessTif Development Progress</B></A>
    <ul>
    <li><A HREF="#QU4.0">   How complete is LessTif ?</A>
    <li><A HREF="#QU4.1">   Is there any Documentation for LessTif ?</A>
    <li><A HREF="#QU4.2">   How often is a release made ?</A>
    <li><A HREF="#QU4.3">   What if I find a Bug ?</A>
    <li><A HREF="#QU4.4">   What currently Works?</A>
    <li><A HREF="#QU4.5">   Will Motif _Xm functions be implemented?</A>
    <li><A HREF="#QU4.6">   Does LessTif support I18N?</A>
    <li><A HREF="#QU4.10">  Does LessTif support Unicode?</A>
    <li><A HREF="#QU4.7">   How to submit a bugfix/patch?</A>
    <li><A HREF="#QU4.8">   What about memory leaks ?</A>
    <li><A HREF="#QU4.9">   How to debug LessTif applications ?</A>
    <LI><A HREF="#QU4.11">  Is LessTif multi-threaded?</A>
    </ul>

<P>
<A HREF="#TOPIC5"><B>TOPIC: Compiling Applications With LessTif</B></A>
    <ul>
    <li><A HREF="#QU5.0">  I installed LessTif but I can't compile apps with it. Help !</A>
    <li><A HREF="#QU5.1">  My application doesn't build. What do I do ?</A>
    <li><A HREF="#QU5.2">  This app uses Imake but it won't build right.</A>
    <li><A HREF="#QU5.3">  Can I use LessTif with C++ ?</A>
    </ul>

<P>
<A HREF="#TOPIC6"><B>TOPIC: Platform-specific Issues</B></A>
    <ul>
    <LI><A HREF="#Platform_OS2">OS/2</A>
    <UL>
    <li><A HREF="#QU6.0">  What about static libraries?</A>
    <li><A HREF="#QU6.1">  Why don't statically linked apps work?</A>
    <LI><A HREF="#QU6.2">  What about "legacy" applications?</A>
    </ul>
    <LI><A HREF="#Platform_WINDOWS">Windows</A>
    <UL>
    <li><A HREF="#QU6.3">  Why are there no DLLs on my Windows platform?</A>
    <LI><A HREF="#QU6.4">+ The windowmanager mwm doesn't work properly!</A>
    </UL>
    </UL>

<HR>

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->

<H2 ALIGN=CENTER>
<A NAME="TOPIC1">TOPIC: LessTif General Information</A>
</H2>

<UL>

<LI>
<STRONG><A NAME="QU1.0">What is LessTif?</A></STRONG><BR>

LessTif is a clone of the
<A HREF="http://www.opengroup.org/tech/desktop/motif/">Motif&reg; toolkit</A>.
Currently LessTif is partially implemented with most of the API in place.
Saying this a lot of the internal functionality is still missing.
<P>
Compatibility can have several degrees,
the ultimate one being binary compatibility.
This is the one we're aiming for.
This can be tested even today on most platforms on which shared libraries
are supported :
if you also have Motif&reg; shared libraries,
you can choose which library to use by setting an environment variable
such as LD_LIBRARY_PATH prior to executing an application.
<P>
The primary objectives have been to develop the widget code of the
LessTif Toolkit.
Intermittently, the window manager (mwm)
and the combination of UIL compiler and libMrm are being worked on.
<P>
Volunteers to advance one or more parts of LessTif development,
or for writing documentation without an OSF, X/Open or The Open Group
copyright on it, are always welcome.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU1.1">Where can I get LessTif?</A></STRONG><BR>

You can get it over the Internet at several locations.
They're listed on our web site at
<A HREF="http://www.lesstif.org"><STRONG>http://www.lesstif.org</STRONG></A>,
which is one of the places to get it.
<P>
The same web pages can point you to quite a few 
<A HREF="cdrom.html">CD-ROM manufacturers</A>
which put a version of LessTif on some of their products.
Many free Unix (RedHat, Debian, SuSE, Walnut Creek FreeBSD, ...)
are among them.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->

<LI>
<STRONG><A NAME="QU1.2">Who is developing LessTif?</A></STRONG><BR>

A few Internet based individuals as listed in
<A HREF="core.html">core.html</A>.
Nobody is paid to work on it, all is effort by volunteers.
<BR>
Look for an all-time list of authors in the AUTHORS file in
the LessTif distribution, while CREDITS acknowledges the contributions
of various other people.
<P>
Keeping a list of developers for each widget is not really possible
mainly because the we're not fanatic about ownership of a widget.
We do keep in touch enough to know who's messing with what
so we don't overlap too much.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU1.3">Can I use LessTif in my applications?</A></STRONG><BR>

The odds of your application running fairly well with LessTif are
pretty good.
<P>
You should be able to compile and run your code,
how well it works is another matter...
If it doesn't, then we're very interested in hearing about
what doesn't work and why (we can't fix bugs that we don't know about),
and we're even more interested in a fix.
<P>
If your favorite application does work,
please tell us so we add it to the list of apps known to work.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU1.4">Will LessTif be Motif1.2 Compliant?</A></STRONG><BR>

Yes, this is the first major step.
<BR>
Up to now we are very close, all interfaces are in place,
we might only have to fight against some remaining bugs ...
<BR>
In early 1997 however, someone asked whether submissions for 2.0 or
CDE widgets would be accepted.
<P>
<STRONG>Of course !</STRONG>
<P>
Therefore, we expanded the source directory tree to make it easy to
add new stuff, and to build several versions of the library (and the
corresponding tools). So if anybody has a widget, or an application,
to offer which can advance us in the 2.x or CDE areas, please E-mail us.
<P>
Somewhere along 1997 we actually started building 2.0 compliant widgets.
More of them are needed though.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU1.5">Will LessTif be Motif2.0 Compliant?</A></STRONG><BR>

Probably not fully. Since 2.0 is now gone and has been replaced by
the OpenGroup's Motif version 2.1 we will also no longer focus
on a 2.0 compatible release. Especially WRT CSText and the C++ extensions -
unless someone will donate implementations of these we will probably never 
get them!
<P>
See also in <A HREF="#QU1.4">Will LessTif be Motif1.2 Compliant?</A>

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU1.14">Will LessTif be Motif2.1 Compliant?</A></STRONG><BR>
Yes, even though we're convinced that this might still take some time.
Some of the new features in 2.x are not exactly easy stuff !
<P>
Note that we already have the traits mechanism in place,
a small number of the predefined traits are implemented,
some pieces of rendering,
the new widgets work,
so we're not exactly in bad shape...

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU1.6">What about CDE?</A></STRONG><BR>

To the best of our knowledge, CDE doesn't exist any more.


<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU1.13">Is UIL (User Interface Language) supported?</A></STRONG><BR>

Not really. 
<BR>
Though there is some old code in place already
it's unlikely you succeed with a project using it.
<BR>
Actually there are two versions of the uil compiler around:
one is built as <CODE>uil</CODE> while the other executable is named 
<CODE>newuil</CODE>. The latter uses <CODE>libUil</CODE> as opposed to 
the older one which uses it's own code base.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU1.7">Is there a LessTif newsgroup?</A></STRONG><BR>

No.
<BR>
Regularly, questions about LessTif (or about any free Motif&reg;)
clone are asked in
<A HREF="news:comp.windows.x">comp.windows.x</A> or
<A HREF="news:comp.windows.x.motif">comp.windows.x.motif</A> .

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU1.8">Is there a LessTif mailing list?</A></STRONG><BR>

Yes there is.
How to get on it is described on this
<A HREF="lists.html">web page</A>.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU1.9">Is there a LessTif mailing list digest?</A></STRONG><BR>

Yes.
How to get on it is described on the
<A HREF="lists.html">web page</A>.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU1.10">Is a LessTif mailing list archive available on FTP or WWW?</A></STRONG><BR>

Yes!
<BR>
Please check out the
<a href="lists.html">mailinglists page</A>
on our website.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU1.11">What is LessDox?</A></STRONG><BR>

LessDox is the shortened version of the LessTif Documentation Project.
Any previous reference to "LDP" is now dropped because of the
conflict with the "Linux Documentation Project".

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU1.12">How can I obtain LessDox?</A></STRONG><BR>

Currently you can obtain LessDox from the LessTif
<A HREF="http://www.lesstif.org">website</A>.
<P>
Nothing has happened to LessDox in a long time,
we would love some people to write free documentation
describing the LessTif widget set.

</UL>

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<HR>

<H2 ALIGN=CENTER>
<A NAME="TOPIC2">TOPIC: LessTif Installation</A>
</H2>

<UL>

<LI>
<STRONG><A NAME="QU2.0">What Platforms is LessTif on?</A></STRONG><BR>

A more accurate list is available in an
<A HREF="platforms.html">extraneous file</A>.
Here's an excerpt, with version numbers stripped for brevity:
Linux, FreeBSD, NetBSD, OpenBSD, BSDi (BSD/OS), Sun (SunOS, Solaris),
MkLinux, OS/2, AIX, Digital UNIX/Compaq Tru64, HP/UX,
Windows NT, Windows 95 (with cygwin)

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU2.1">Is there a pre-built library available for My Platform?</A></STRONG><BR>

Might be, we started doing that as of early March, 1997.
The core team (and some other brave guys) are providing
compiled images.
The <A HREF="INSTALL.html">INSTALL</A> file found in the source
distribution and on the web explains how to install it.
<P>
Note we'll only refresh these binary distributions at
release time (at least for major releases).
<P>
Make sure that you do get a binary version,
if that's what you're interested in; not the source distribution.
<P>
We also have a list of
<A HREF="cdrom.html">CD-ROMs</A> which include LessTif distributions.
For several platforms there are also third-party binary packages
available. Further information can be found in
<A HREF="INSTALL.html#Binary_distributions_of_LessTif">INSTALL</A> and
on our
<A HREF="download.html">download</A> pages.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU2.2">Do I need to have imake/xmkmf?</A></STRONG><BR>

No. LessTif used to work with those,
but they became more of a problem than a solution,
so we switched to GNU autoconf, which has the additional capability
to find out many many things about the target platform while
auto-configuring itself.
<P>
Around December 1997 we also started to work with libtool and automake,
two more free tools.
They should solve the portability problems with building shared libraries
on multiple platforms for us.
You'll find this in distributions of LessTif starting with release 0.85.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU2.3">Can I build a Shared Library?</A></STRONG><BR>

Yes, you can on almost any platform which LessTif can be built on
(see above).
<P>
We use libtool for keeping the complexities of building and installing
shared libraries out of LessTif. Therefore, if LessTif doesn't build a working 
shared library on some platform, you may want to check whether libtool already 
supports this platform.
<BR>
Contact the libtool mailing list if you're interested in details about 
the platforms supported by libtool. http://www.opengroup.org/onlinepubs/7908799/xsh/limits.h.htmlA link to libtool homepage is on our 
<A HREF="links.html#tools">links page</A>.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU2.4">Can I build a Static Library?</A></STRONG><BR>

Even for this we use libtool;
but yes, you can on all platforms we can think of.
<BR>
By default building these is disabled. Check out the
<A HREF="INSTALL.html">INSTALL</A> document how to
actually build them (hint: you have use a configure switch).

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU2.6">How do I build the makefiles?</A></STRONG><BR>

LessTif is now using the GNU configure system so (usually) all
you need to do is type
<PRE>
   ./configure
   make
</PRE>
<BR>
That's all!
<P>
For more information on this topic check out the
<A HREF="INSTALL.html">INSTALL</A> document.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU2.7">Why does it say I need X11r5 or higher when I have r6 ?</A></STRONG><BR>

Several people have reported build problems;
the configure script looks for an X distribution and then checks whether
it is X11R5 or X11R6.
<BR>
On some systems the configure script stops, saying
<pre>
configure: error: You must have X11 Revision 5 or higher to compile LessTif
</pre>
while the system actually has X11R6.
<BR>
Apparently this has to do with installations of Linux, in which
the include files (under /usr/include) often contain symbolic links
to the source directories (either on disk or on CD-ROM).
In such a situation, if one either removes the CD-ROM, or cleans up
/usr/src, the effect will be dangling symbolic links under /usr/include
which confuse our configure script.
<BR>
The solution is obvious : make sure that your include files don't contain
symbolic links to nonexistent files.
<P>
Another possibility is that you simply forgot to install the X11 development
package (e.g. X11-devel RPM) so that the related headers are not yet installed 
on your system.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU2.8">Why does the build fails with undefined symbols?</A></STRONG><BR>

We might have screwed up, of course.
<P>
On the other hand, please make sure that you've built the entire
distribution with the same configuration.
<P>
Not clear ?
After running the "configure" command with its options,
you should ideally run "make clean".
Otherwise e.g. clients/Motif-1.2/mwm/Makefile may be configured
such that it looks for stuff that isn't there in lib/Xm/* .


<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU2.9">Why does configure fail?</A></STRONG><BR>

There are some circumstances when configure fails to run, or produces
wrong results:
<UL>
<LI>
You have an old (broken/incomplete) config.cache (config.status) file left over.
Delete those! Or if you have a recent set of the auto* tools
installed (See
<A HREF="INSTALL.html#LessTif_from_CVS">INSTALL.html</A>)
run the <EM>CVSMake</EM> script, and then <EM>configure</EM> again.
<LI>
configure (and the generated Makefiles) won't work if the build directory
resides in a path which has embedded blanks, e.g. "/usr/work/Fine Software".
The simple and only solution is to move it to another path.
<LI>
If you get some strange results also check whether you have some
strange settings in the environment which may cause those.
Some related variables are <CODE>CC, CFLAGS, LIBS, ...</CODE>
</UL>

</UL>

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->

<HR>

<H2 ALIGN=CENTER>
<A NAME="TOPIC3">TOPIC: Running applications with LessTif</A>
</H2>

<UL>

<LI>
<STRONG><A NAME="QU3.0">Application fails to start</A></STRONG><BR>
Your application fails to start and you get a quite "sophisticated"
error message like the following:
<PRE>
Error: PANIC: no realize procedure specified for this widget.
</PRE>
or
<PRE>
Error: attempt to add non-widget child "DropSiteManager" to parent
       "xmfoo" which supports only widgets
</PRE>
We've seen this happen when the order of libraries upon linking was incorrect.
The correct order is :
<pre>
-lXm -lXt -lX11
</pre>
(see also
<A HREF="#QU5.1">Question 5.1</A>)
<BR>
If you built this application please link it again, otherwise
notify the maintainer.
<P>
Check out <CODE>_LtCheckClassOfVendorShell()</code> 
and <CODE>_LtXmFixupVendorShell()</CODE> in <EM>lib/Xm/Vendor.c</EM>.
A suitable test is in <EM>/test/Xm/Vendor/test4.c</EM>.
Also related messages should be in the
<a href="lists.html">mailinglist archive</a>.
The following explanation was a submission from
<STRONG>Martin Simmons</STRONG>:
<BLOCKQUOTE>
The linking order problems are caused by these two symbols:
<PRE>
vendorShellClassRec
vendorShellWidgetClass
</PRE>
which are defined *AND* referenced in both -lXm and -lXt.  Somehow you have to
convince the linker to use the -lXm definitions to satisfy the references in
both -lXm and -lXt.  The -lXt definitions should not be used.

For typical elf-based dynamic loaders (Linux, Solaris etc), this is done by
passing '-lXm -lXt' to the linker, which adds them both as SO_NEEDED sections
to the executable.  At runtime, the dynamic loader collects symbols from each
SO_NEEDED section in the order it finds them, discarding symbols it already
knows, and then fixes the references in all the loaded libraries using that
combined symbol table.

For typical static linkers, it is also done by specifying '-lXm -lXt' to the
linker.  In this case, the linker extracts some .o's from -lXm which contain
user-referenced symbols and eventually ends up extracting -lXm:Vendor.o due to
internal references in -lXm.  It then does the same for -lXt, but doesn't need
to extract -lXt:Vendor.o because it doesn't define anything that is still
undefined.
</BLOCKQUOTE>

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<A NAME="QU3.1"><STRONG>Application can't load Shared Libraries</STRONG></A><BR>

If you get a message like
<pre>
foo: error in loading shared libraries
libXm.so.1: cannot open shared object file: No such file or directory
</pre>
then you did not tell your system where to look for the
shared libraries you have (hopefully) installed.
The <A HREF="INSTALL.html">INSTALL</A> file describes how to this.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU3.2">Application doesn't work as expected</A></STRONG>
<BR>

If you build the application make sure you followed
the instructions in section
<A HREF="#TOPIC5">TOPIC: Compiling Applications With LessTif</A>.
Also you may have discovered a remaining bug or missing feature
in LessTif. See section
<A HREF="#QU4.3">4.3 What if I find a Bug ?</A>

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<A NAME="QU3.3"><STRONG>Application crashes on 64bit architecture</STRONG></A>
<BR>
"Somehow" LessTif does still have problems to work properly
on 64bit platforms, e.g. those based on the alpha processor.
There's not a simple known work-around, but we are working to get this
fixed! As of releases above 0.92.26 we hope to iron out another
category of crashes. We're convinced that we will soon provide the same
quality as on 32bit platforms!

</UL>

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->

<HR>

<H2 ALIGN=CENTER>
<A NAME="TOPIC4">TOPIC: LessTif Development Progress</A>
</H2>

<UL>

<LI>
<STRONG><A NAME="QU4.0">How complete is LessTif ?</A></STRONG><BR>

Hard to say really. Depends on how much credit you give us.
<P>
Actually most LessTif widgets work somewhat.
Many work fairly well.
Things like traversal and focus handling have been worked on,
but probably aren't really all that functional yet.
<P>
The menu system is quickly losing its child diseases
(occasionally freezing the X server with grabs).
If you're not in a rush when working the menus,
the odds are low that you'll get in much trouble.
Also dragging in the menus will get you in trouble faster
than clicking.
<P>
In short, if something does not work quite right,
send us an
<A HREF="feedback.html">email</A>
and we'll try to help you as soon as we possibly can!
In fact telling us about your problem is the fastest way to
get your app to work with LessTif. Recommended !
<P>

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU4.1">Is there any documentation for LessTif ?</A></STRONG><BR>

Yes the LessTif Documentation Project (LessDox)
check out the LessDox home page at:
<A HREF="http://www.lesstif.org/Lessdox/lesstif.html">
http://www.lesstif.org/Lessdox/lesstif.html</A>

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU4.2">How often is a release made ?</A></STRONG><BR>

Starting December 1996 we plan to make intermediary releases every
month or so, and "real" releases every three months or so.
The 0.75 release was made available around December 11, 1996.
In April 2000 0.90 was released. See
<a href="versions.html">versions.html</a> for a list
of all released versions.
<br>
<a href="release-policy.html">release-policy.html</a>
has more on this topic.
<P>
In between releases, you can always grab get our latest
development sources from our
<A HREF="cvs.html">CVS repository</A>.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU4.3">What if I find a Bug ?</A></STRONG><BR>

Bug reports are very welcome, and we'll do our best to get
the fixes out as quick as possible.
<P>
The <A HREF="http://www.lesstif.org/">web site</A>
and all distributions contain a
<A HREF="bugs.html">write-up</A>
on how to submit bug fixes or reports.

<!-- todo: list of known bugs, ... -->

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU4.4">What currently runs ?</A></STRONG><BR>

DDD, Mosaic-2.7, NEdit, ...
<P>
Look at
the <A HREF="http://www.lesstif.org/">web site</A>
for a more accurate and timely
<A HREF="apps.html">list</A>.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU4.5">Will Motif _Xm functions be implemented?</A></STRONG><BR>

Sure they will. Many of them are implemented already.
<P>
This was not easy though.
The _Xm* functions seem to be undocumented in Motif 1.2 therefore
we will make every effort to implement the functions as best we can.
<P>
One of our sources of information was
"Writing Your Own OSF/MOTIF Widgets" by McMinds and Whitty,
kindly donated to us by Linux International.
<!--
  amai: should perhaps point to LesstifInternals.3 ?!
<P>
The _Xm functions are implemented in the
<A HREF="Lessdox/InterFunction.html">Internal Functions</A>
section of the LessTif Documentation project.
-->
<P>
Many of the <CODE>_Xm*</CODE> functions are exposed in
OSF/Motif&reg; 2.0/2.1 where they changed names into <CODE>Xme*</CODE>.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU4.6">Does LessTif support I18N?</A></STRONG><BR>

Two widgets that accept text input (namely XmText and XmTextField)
do support it, but they don't feature multibyte support.
<p>
This means you can use sequences such as Multi_key+c+o to
get &copy;, Multi_key+n+~ to get the &ntilde;, etc..
These work because they're part of the ISO Latin 1 character set,
which is based on one-byte representations.
<p>
The XmText and XmTextField widgets can handle input methods, as
described above, but they don't have multibyte support.
This means that Asian input methods which work with a multi-byte
representation of a character will not work (yet).
<p>
The XmIm*() API is work in progress,
this is probably not a problem for you as we have yet to
discover an application that uses it.


<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU4.10">Does LessTif support Unicode?</A></STRONG><BR>

Not yet. 
<BR>
There are more limitations than just a M*tif library which fails to do so -
you may want to read the
<A HREF="http://www.cl.cam.ac.uk/~mgk25/unicode.html">
UTF-8 and Unicode FAQ for Unix/Linux</A>.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU4.7">How to submit a bugfix/patch?</A></STRONG><BR>

This topic is covered in
<A HREF="bugs.html">bugs.html</A>
which is also distributed in plain ASCII format (BUG-REPORTING).

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU4.8">What about memory leaks ?</A></STRONG><BR>

Obviously we don't like memory leaks in LessTif.
A couple of tests have been done with commercial memory analysis tools, 
some of the apps in the <CODE>tests/</CODE> tree help tracking some leaks 
as well.
<P>
We believe we're not doing really bad.
In fact we did run some simple comparisons with official Motif 1.2.4 
implementations which showed LessTif was even leaking <EM>less</EM> memory!
<P>
One package which can help you (and us) in tracking memory problems
both in your application and in LessTif, is <EM>dmalloc</EM>,
a library which can be obtained from
<A HREF="http://dmalloc.com">dmalloc.com</a> .
You can compile LessTif itself with dmalloc, check out the
<A HREF="INSTALL.html#tune_c">Installation docs</A>.
<BR>
Dmalloc is freely available software, but <b>please note the license</b>
which is different from most other free software licenses.
Also similar tools may easily be used instead, e.g. we already
support dbmalloc.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<A NAME="QU4.9"><STRONG>How to debug LessTif applications ?</STRONG></A>
<BR>

We have some documents which should help to track down bugs in 
LessTif-based applications.
<A HREF="BUG-HUNTING.html">BUG-HUNTING.html</A>
describes some specifics of LessTif's built-in debugging facilities 
while <A HREF="bugs.html">bugs.html</A> covers more general the topic 
of debugging X11 applications.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<A NAME="QU4.11"><STRONG>Is LessTif multi-threaded?</STRONG></A>
<BR>

This question is handled in another
<A HREF="thread.html">document</A>.

<!-- end of chapter 4 -->
</UL>
<HR>

<H2 ALIGN=CENTER>
<A NAME="TOPIC5">TOPIC: Compiling Applications With LessTif</A>
</H2>

<UL>

<LI>
<STRONG><A NAME="QU5.0">I installed LessTif but I can't compile apps with it. What's wrong ?</A></STRONG>
<BR>

You may have an application that's not error-free; or (more likely) one which
needs configuration for your site, computer platform, etc.
<BR>
It would be a good idea to consult the compilation and installation
guidelines for that application.
<P>
If it's not a bug within the application it probably has to do with your
compiler options. If it's indeed that, there are several possibilities.
<P>
In the examples we'll give now, we'll be using some installation directories
that may differ from your installation. Please adjust your compilation
parameters accordingly, don't try to fix your installation so it matches
our examples. In our examples, X has been installed in <I>/usr/X11R6</I> and
LessTif has been installed in <I>/usr/lesstif</I>.
<P>
Compilation of applications is really a two-step process :

<OL>
<LI>compiling all sources to object files
<LI>linking the object files together
</OL>
<P>
The compilation phase needs to know where to find include files.
These are files that are referenced in the C (or C++) sources of your
programs as
<PRE>
#include &lt;Xm/Xm.h&gt;
</PRE>
and you should find them on your system in a couple of directories
under <I>/usr/lesstif</I>/Motif1.2/include or
<I>/usr/lesstif</I>/Motif2.0/include.
Specifically the file mentioned above should show up as
<I>/usr/lesstif</I>/Motif1.2/include/Xm/Xm.h or
<I>/usr/lesstif</I>/Motif2.0/include/Xm/Xm.h
<P>
For your compiler to find these files, it needs to be told where to look.
Using the examples above, the flag needed would be -I<I>/usr/lesstif</I>/include .
Note that you need to tell the compiler the same thing about the X Window System
include files, you need to do that by using the -I<I>/usr/X11R6</I>/include flag.
So together this gives
<PRE>
  -I<I>/usr/X11R6</I>/include -I<I>/usr/lesstif</I>/include
</PRE>
<P>
The second step, linking all the source files together, requires similar flags
which are shown
<A HREF="#QU5.1">below</A>.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU5.1">My application doesn't build. What do I do ?</A></STRONG><BR>

If your application doesn't build, this could have several reasons.
Some are discussed for the question
<A HREF="#QU5.0">"I installed LessTif but I can't compile apps with it. What's wrong ?"</A>!
<BR>
If the linking process fails, this probably means you didn't specify some library,
or the required libraries aren't present on your system.
Error messages indicating this are a long list of undefined symbols
most of which have a name with an identical prefix, such as <I>Xm</I>.
The linker needs to know where the libraries are, and additionally you need
to tell it which libraries to include in the link process.
<P>
Using the example outlined
<A HREF="#QU5.0">above</A>,
we'd need to use the flags
<PRE>
  -L<I>/usr/X11R6</I>/lib -L<I>/usr/lesstif</I>/lib
</PRE>
for the linker to know where to look, and
<PRE>
  -lXm -lXt -lX11
</PRE>
to know which libraries to use.
<BR>
In this quite simplified example
you might get away with using those linker flags:
<PRE>
  -L<I>/usr/X11R6</I>/lib -L<I>/usr/lesstif</I>/lib -lXm -lXt -lX11
</PRE>
<BR>
Note that the order of the libraries is usually important (see below),
so try to do it right from the beginning!
<P>
We didn't list additional libraries which are often required.
e.g. our Motif&reg; 2.1 compatible libXm requires an additional
<I>-lXp -lXext</I>. Therefore we list some prefixes and the related library,
so you can check which library you are missing.

<BR>
<CENTER>
<TABLE BORDER=1>
<TR>
<TH ALIGN=CENTER>
Prefix
<TH ALIGN=CENTER>
Linker Command
<TR>
<TD ALIGN=CENTER>Xt
<TD ALIGN=CENTER>-lXt
<TR>
<TD ALIGN=CENTER>Xmu
<TD ALIGN=CENTER>-lXmu
<TR>
<TD ALIGN=CENTER>Sm
<TD ALIGN=CENTER>-lSM
<TR>
<TD ALIGN=CENTER>Ice
<TD ALIGN=CENTER>-lICE
<TR>
<TD ALIGN=CENTER>Xp
<TD ALIGN=CENTER>-lXp
<TR>
<TD ALIGN=CENTER>Xdbe, Xext, XShape
<TD ALIGN=CENTER>-lXext
<TR>
<TD ALIGN=CENTER>Xm
<TD ALIGN=CENTER>-lXm
<TR>
<TD ALIGN=CENTER>Mrm
<TD ALIGN=CENTER>-lMrm
<TR>
<TD ALIGN=CENTER>Dt
<TD ALIGN=CENTER>-lDtPrint
</TABLE>
</CENTER>
<P>
The order in which you should specify these options is
<PRE>
-lDtPrint -lMrm -lXm -lXt -lXmu -lXp -lXext -lX11 -lSM -lICE
</PRE>
Of course not all of these libraries are always necessary,
but in some cases even more libraries may be required
(-lsocket is another candidate here). Also make sure the linker
is able to find the libs, e.g. it may be necessary to add
an <CODE>-L/usr/lesstif/lib</CODE> or similar.
<BR>
Once more, the compilation and installation guidelines for the application
probably tell you which libraries to link with.
<P>
Finally, please make sure that you have the X development packages
installed on your system, not only the X "user stuff".
Forgetting to install the development system could result in
messages like <I>Xm/Xm.h : cannot open file</I>,
or <I>-lXt: library not found</I>.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU5.2">This app uses Imake but it won't build right.</A></STRONG><BR>

<A HREF="links.html"><B>Imake</B></A> is a tool which is included in the 
X Window System distributions.
It is an extra layer above Makefiles (processed by the make program)
which attempts to make the build process more system independent.
(Nowadays more and more applications use GNU autoconf and GNU automake
for the same purpose.)
The imake program process an Imakefile and turns it into a Makefile.
Often the Imakefile uses some template file that comes with the application,
to specify additional options.
<BR>
If you use imake directly to create the Makefile, then this will probably
not work right, because you need to tell imake to read the LessTif
configuration files. The <I>mxmkmf</I> program calls imake with the right
parameters, so just using this should help.
<P>
It is also possible that the Imakefile file or some file used by it
overrides some of LessTif's parameters.
Please check whether EXTRA_INCLUDES, XMLIB, or XmClientLibs
are overruled in these files.
If they are, then this is probably the cause of the problem.

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<LI>
<STRONG><A NAME="QU5.3">Can I use LessTif with C++ ?</A></STRONG><BR>
You sure can.
There really are two ways.
You can use it directly, or through one of the C++ wrappers for Motif.
Much of this is discussed in the Motif FAQ which can be found
at Ken Lee's website at
<A HREF="http://www.rahul.net/~kenton">http://www.rahul.net/~kenton</A>
<BR>
We're copying a tiny bit of information from one of the FAQ issues here.
<P>
Using LessTif directly with C++ prompts the question on how to use
class member functions as callbacks. Here's part of Ken's answer :
<P>
There are three common user problems with C++ callbacks.
<UL>
<LI>
First, make sure you use the correct function prototype for
the function declarations.
<LI>
Second, the callback function must be declared as a static member of the
class.
<LI>
Third, when registering it with XtAddCallback(), you must use its full
signature.
</UL>
<P>
Here's an example :
<PRE>
    class MyClass {
      void createWidgets();
      static void myButtonCB(Widget, XtPointer, XtPointer);
    };

    void MyClass::createWidgets() {
      w = XtCreatePushButton(...);
      XtAddCallback(w, XmNactivateCallback, &amp;MyClass::myButtonCB, (XtPointer) this);
    }

    void myButtonCB(Widget w, XtPointer clientData, XtPointer callData) {
      MyClass *myclass = (MyClass *) clientData;
    }
</pre>
Note that the "this" pointer is used as the client data.
This technique is popular, but not required.
<P>
Motif++ is one of the C++ wrappers for Motif/LessTif.
It has a nice tutorial summarizing mechanisms.
(used to be available from
<A HREF="ftp://src.doc.ic.ac.uk/packages/motif++/">
ftp://src.doc.ic.ac.uk/packages/motif++/</A>, but this link is
dead nowadyays. Try ftp-search on it!)

</UL>

<!-- end of chapter 5 -->
<HR>

<H2 ALIGN=CENTER>
<A NAME="TOPIC6">TOPIC: Platform-specific Issues</A>
</H2>

<UL>

<LI>

<A NAME="Platform_OS2"><STRONG>OS/2</STRONG></A>
<UL>
<LI>
<STRONG><A NAME="QU6.0">What about static libraries?</A></STRONG>
<BR>
Well, there is (almost) no demand for static libraries so far. 
If you want them anyway and are capable to deal with the problems as described 
in the in <A HREF="#QU6.1">question above</A>, then you may retrieve the
set of
<A HREF="INSTALL.html#compile_OS2">Makefiles for OS/2</A> 
and build them on your own.
<LI>
<STRONG><A NAME="QU6.1">Why don't statically linked apps work?</A></STRONG>
<BR>
You need to call <CODE>_LtXmFixupVendorShell()</CODE> at the beginning
of <CODE>main()</CODE>, or at least before accessing the LessTif library
somehow. Note that this call was not always exported from earlier
versions of the <EM>Xm*.dll</EM>s. It does and will always exist from
version 0.92.26 and above.
<BR>
For further technical details check out the source code in
<A HREF="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/lesstif/lesstif/lib/Xm/Vendor.c"><EM>lib/Xm/Vendor.c</EM></A>
and read the answer to
<A HREF="#QU3.0">"Application fails to start"</A>.
<LI>
<STRONG><A NAME="QU6.2">What about "legacy" applications?</A></STRONG>
<BR>
Old LessTif programs may still be linked against <CODE>Xm.dll</CODE> while
all recent ones should be linked against the libraries following the
new naming scheme, 
i.e. <CODE>Xm_12.dll</CODE>, <CODE>Mrm_20.dll</CODE>, etc.
<BR>
For this legacy stuff there was a "final" version of the Motif 1.2
compatible
<A HREF="INSTALL.html#compile_OS2"><CODE>Xm.dll</CODE></A>
being made available as of LessTif version 0.91.8 (August 2000). This is
obviously quite outdated nowadays.
<BR>
If you really need a more up-to-date library <CODE>Xm.dll</CODE>
either try the quick approach of renaming the dll or patching the executable
(both approahces are not really recommended) or built one from scratch.
In fact you just need to simply tweak the linker definition file
(<CODE>Xm.def</CODE> here) and the according Makefile.

</UL>

<LI>
<A NAME="Platform_WINDOWS"><STRONG>Windows</STRONG></A>
<UL>
<li>
<A NAME="QU6.3"><STRONG>Why are there no DLLs on my Windows platform?</STRONG></A>
<BR>
This question is addressed within our
<A HREF="INSTALL.html#compile_Windows">Installation Instructions</A>.
<LI>
<A NAME="QU6.4"><STRONG>The windowmanager mwm doesn't work properly!?</STRONG></A>
<BR>
If you can't switch focus to windows displayed on mwm, try turning off <CODE>NumLock</CODE>.
</UL>

</UL>

<!-- end of chapter 6 -->


<!-- ++++++++++++++++++++ Generic HTML footer ++++++++++++++++++++++++++++ -->

<HR>
<address>                                                                              
  <a href="http://validator.w3.org/check/referer"><img
     src="images/vh32.jpg" height=31 width=88
     align=right border=0 alt="Valid HTML 3.2!"></a>
  <a href="feedback.html">Feedback</a><br>
  <SMALL>
  Last modified on $Date: 2004/09/28 04:04:34 $
 </SMALL>
</address>

</BODY>
</HTML>