weening@Gang-of-Four.Stanford.EDU (Joe Weening) (01/08/90)
The makefiles that I get with "xmkmf" for contrib clients have a
problem with library dependencies. Here's what I'm doing:
(The MIT libraries and clients have all been installed in the
standard locations.)
% cd /src/X11R4/contrib/clients/xrn
% xmkmf
mv Makefile Makefile.bak
imake -DUseInstalled -I/usr/lib/X11/config
% make
... all the sources are compiled with no problems ...
Make: Don't know how to make -lXaw. Stop.
%
It is fairly easy to see what the problem is, by looking in the
Makefile. It includes the lines:
XAWLIB = -lXaw
DEPLIBS = $(LOCAL_LIBRARIES)
LOCAL_LIBRARIES = $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB)
xrn: $(OBJS) $(DEPLIBS)
$(RM) $@
$(CC) -o $@ $(OBJS) $(LDOPTIONS) $(LOCAL_LIBRARIES) $(LDLIBS) $(EXTRA_LOAD_FLAGS)
So "xrn" eventually depends on "-lXaw", which make doesn't know about.
This problem is the result of -DUseInstalled, since it doesn't affect
the MIT clients.
--
Joe Weening Computer Science Dept.
weening@Gang-of-Four.Stanford.EDU Stanford Universityrws@EXPO.LCS.MIT.EDU (Bob Scheifler) (01/08/90)
So "xrn" eventually depends on "-lXaw", which make doesn't know about.
This problem is the result of -DUseInstalled, since it doesn't affect
the MIT clients.
Not exactly. It's a result of a change from R3 to R4, separating out
"libraries" from "dependencies". The MIT client Imakefiles define both
DEPLIBS and LOCAL_LIBRARIES explicitly, e.g.
DEPLIBS = XawClientDepLibs
LOCAL_LIBRARIES = XawClientLibs
or more verbosely,
DEPLIBS = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB)
LOCAL_LIBRARIES = $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB)
In config/Project.tmpl there is a fallback hack for when DEPLIBS isn't
defined, to use LOCAL_LIBRARIES instead (unless shared libraries are used).
Clearly, this doesn't work perfectly.
Change xrn's Imakefile to use one of the above two forms.