X11R4 under S/6000 AIX 3.1

X11R4 under S/6000 AIX 3.1

Post by Charley Kli » Sun, 23 Dec 1990 02:27:52

I just finished a port of X11R4. With a little help from Bill Moran (whose
xterm patches are necessary but not sufficient), everything now works except
xterm, which works mostly but leaves a couple of termio settings undone (and
I have no way to set them without major hacking on the xterm code, a twisty
little maze of #ifdefs, all mostly alike).

Some words of wisdom garnered from my build notes, admittedly a bit terse:

*  Set the environment variable IMAKECPP to /usr/lpp/X11/Xamples/util/cpp/cpp
   before building, (or hack imakemdep.h to change the default definition of

*  You'll need BOOTSTRAPCFLAGS (I set it to -Drs6000).

*  Change Imake.tmpl to key on the rs6000 symbol, and make an RS6000.cf
   config file. Mine looks like this:

        #define OSMajorVersion         3        /* S/6000 AIX Version 3.1 */
        #define OSMinorVersion         1

        #define SystemV YES
        #define OSName AIX 3.1
        #define HasNdbm YES
        #define CppCmd /usr/lpp/X11/Xamples/util/cpp/cpp
        #define PreProcessCmd /usr/lpp/X11/Xamples/util/cpp/cpp
        #define StandardCppDefines -Drs6000 -DSYSV
        #define BuildServer NO
        #define BootstrapCFlags -Drs6000
        #define OPERATING_SYSTEM AIX
        #define LibraryDefines -DUNIXCPP ibmlibdefs StandardDefines
        #define StandardDefines -Drs6000 -DSYSV -DMALLOC_0_RETURNS_NULL
        #define LintOpts -ax -Drs6000
        #define SpecialMalloc YES
        #define ibmSpecialMalloc YES

* Follow the directions in imakemdep.h carefully!

* I found things to work better when I left the xlc.cfg file alone; i.e.,
  DON'T try to make the C compiler behave more like the bsd one.

* A few source changes were necessary. Most are trivial, two are massive.
  I used #ifdef rs6000 around all my changes to keep things portable. You
  should too.

         after comment "Get struct timeval", arrange for the following
         set of conditionals to include both <time.h> and <sys/time.h>.
         There are a couple of ways to do this.

         cast required near line 1560 to keep compiler happy because
         operands on either side of the : in a ?: operator were of
         wrong types (hereafter referred to as ?: type check).

         #include <math.h> needs to be moved up to the top with the
         other includes, and the declaration of malloc near line 165
         needs to be ifdeffed out.

         #include <sys/select.h> needs to be added.

         #undef FALSE and #undef TRUE before the declaration of
         enum bool.

         declaration of calloc near line 37 needs to be ifdeffed out.

         declaration of strcpy near line 218 needs to be ifdeffed out
         (in AIX this is an in-line optimization by the compiler, so
         degenerates to a macro).

         change all calls to realloc to calls to Xrealloc (this is a
         more general oversight than for the S/6000!). Change #ifdef USG
         to #if defined(USG) || defined(rs6000) at line 443.

         ?: type check near line 1418.

         declaration of strcmp near line 43 needs to be ifdeffed out
         for the same reason as strcpy did.

         massive changes required in main.c, mostly having to do with
         the unique pty naming scheme under AIX and the fact that the
         #ifdefs seemt to take everything into account EXCEPT the POSIX
         terminal I/O that AIX likes to use. I hope someone will
         correct me if I'm wrong. I still don't have this right. We're
         still using the "aixterm" program supplied with X11R3.

         AIX doesn't keep the load average in the kernel! I had to add
         some code to do this; the result looks just like a real load
         average display except all the math is being done by
         get_load.c, not the kernel. Contact me for details.  For this

         EXTRA_LIBRARIES = -lm since I call exp() in get_load.c.

         needs to be modified because /etc/install under AIX expects
         -M to set the mode instead of -m.


1. X11R4 clients on AIX 3.1 (3003+) server

I've applied the 3003 patches to the AIX3.1 X.  The 24-bit color board
now looks better - hooray!  On the other hand, certain things that worked
under the 3001 patch are giving me fits:

        1) the X server isn't dying when I quit mwm - I have to
          CTRL-ALT-BACKSPACE back (no, I'm not using "open xinit" - maybe
          that's the problem)

        2) we'd rather run the R4 clients, and I've made them from the
          patched MIT distribution.  Most things are fine, but I don't get
          the selections on the twm menus until after I mouse over them
          (the menu box (in the appropriate color) shows up when I
          click the button, but there's nothing in the box until I
          mouse down the list).  This is pretty annoying, and I'm no
          Xpert - any hints on where to look for this?

        3)we're _also_ running ATKpl9 on top of twm.  Most things look
          reasonable, but the printer icon in the ButterAlmond console
          is wrong (hard to describe, too!).  This is the same ATK that's
          presently running just fine on the system at AIX 3.1.3001 X.
          The rest of the fonts seem fine.

That's it for the moment.  If it weren't for the SGI board drivers, I
probably would just go back to the 3001 stuff - it works fine for my

Thanks for any help...
Pat Wilson
Systems Manager, Project NORTHSTAR

2. Modems and Hardware Buffer

3. Vector fonts for IBM GL (AIX 3.1 on RS/6000)

4. Linux emulation version

5. RS/6000 sendmail HELO problem (AIX 3.1)

6. Lilo Error HELP plz??

7. MENU progam for AIX 3.1 RS/6000

8. Modem pppk lock up

9. AIX 3.1 and IBM RS/6000 - Frequently Asked Questions (Part 1/3)

10. Frequently Asked Question to AIX 3.1 and IBM RS/6000

11. GNU Emacs on '6000 AIX 3.1

12. AIX 3.1 and IBM RS/6000 - Frequently Asked Questions (Part 1/2)

13. Frequently Asked Question to AIX 3.1 and IBM RS/6000