[comp.sys.alliant] Motif build experiences

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.