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.