ric@ace.sri.com (Richard Steinberger) (12/11/90)
To: Motif and Alliant user community
From: Ric Steinberger
This is a summary of some of the problems I had when building Motif 1.1
on our Alliant FX/40. The Alliant run Concentrix 5.6.0 which is basically
a BSD 4.3 variant. When appropriate I have made some suggestions.
1) The README file refers to applying only patches 1 - 14 to the MIT X11R4
sources. Patches 15 - 18 have been available for some time now,
and these patches obviate the need for installing the patch named
fix-osf.
2) I made the mistake of assuming that the ./config/Imake.tmpl supplied
with Motif was identical to the file of the same same that comes
with X11R4. It is close, but the Motif version also has includes
for two important files, Motif.rules and Motif.tmpl. Thanks to
the folks at OSF for helping me find this subtle problem.
3) After much heartburn, I concluded that the Alliant compiler, pcc, just
could not be used to build Motif from sources. "Symbol table full" was
the operative error without a workaround. I have spoken to Alliant
and they will list this as a bug. BTW - This same bug prevented some
of the X11 clients from a successful build.
I ended up using GNU C, version 1.37.93. Many people will
probably also want to use GNU C, and I'd recommend that OSF consider
appending recent GNU C sources from MIT to their distribution tape.
My ./config/fx8.cf (Alliant config file) looks like this:
------------------------------------------------------------------------------
/*
* SET VERSION NUMBERS BEFORE MAKING MAKEFILES
*/
SYSLIBS = -lXt -lX11
CC = gcc
CcCmd = gcc
#define OSName Concentrix 5.5.3
#define OSMajorVersion 5
#define OSMinorVersion 6
#define SystemV NO
#define BuildServer NO
#define HasGcc YES /* very useful for the server */
#define HasVoidSignalReturn NO
/*****************************************************************************
* Platform-specfic parameters *
*****************************************************************************/
#define HasBsearch NO
#define HasInputExtension NO /* The servers we have do, but
* Alliant's compiler can't hack the
* pace
*/
#define StandardDefines -D_NO_PROTO -DNO_VFORK -DSYS_DIR -DNO_REGEX \
-DUSE_GETWD
-------------------------------------------------------------------------------
4) Much of the customization that people need do (usually to their config
file) is discussed after the instructions on building Motif. Probably
this order should be reversed, or at least people should be aware that
they ought to read the sections on System libraries, other defines,
and machine dependencies before using make.
5) There needs to be (IMHO) a fairly firm statement about where
OSF/Motif stands in regard to ANSI-C and especially prototypes.
The release notes supplement urges that prototypes not be used
in the build (select -D_NO_PROTO). [BTW, Why does this define
start with "_", but all the other ones start with a letter?]
6) There is apparently a problem in UilDiags.c and UilLisLst.c
that requires them to be compiled without the -D_NO_PROTO switch
(when STDC is defined).
I ended up adding a #undef _NO_PROTO directly in the codes. The
way the Makefile is arranged, one can't simply compile it to a .o
file and then have make take over with the other sources: Make does
an rm on the .o files before compiling.
Clearly it would have been better for OSF to change the code and/or
the Makefile, or add another define option in the config file to
handle this. I am concerned about the probelms associated with
patching source code that is no longer pure Motif 1.1 (I almost
said virgin).
7) While I was still using Alliant's pcc, I found I had to add the line
extern int errno to ./lib/Mrm/MrmIfile.c. All of the other c sources
that use errno.h have this line. I'm not sure gcc would need it, but
of course, it didn't complain.
8) These references were not present on my system: putenv(),
vprintf(), and vsprintf(). The last two are in the ANSI C standard
(as described by: ANSI C A Lexical Guide. Prentice-Hall).
I ended up getting them from uunet.uu.net via FTP. They are in
~ftp/bsd-sources/lib/libc/stdio. Putenv() is also at uunet in
~ftp/bsd-sources/lib/libc/stdlib, but I got the version I used
from someone at SRI. Since putenv() is not formally in ANSI C,
perhaps OSF should consider supplying it in source form.
Note to ALLIANT users: You might want to gently nudge Alliant
into incorporation of all ANSI C routines into their C libraries.
9) A list of installation related bugs or problems (such as that
referred to in item 6) would have been helpful. A mail server
that makes up-to-the-minute bug info available would be a nice
Xmas present to the Motif user community.
10) As a fairly new Motif user, familiar with X, I would have appreciated
a few suggestions about ways to test the Motif code after the
build-install had been completed. All I have done so far is run
mwm.