[comp.windows.x] R3 fix for PEX

martin@CITI.UMICH.EDU (02/14/89)

This is long overdue, but here it is.

I've put it onto expo.lcs.mit.edu: contrib/pexR3fix.tar.Z

It makes code in ./contrib/extensions/pex compile in X.V11R3.

--------------------  README.patch  -------------------
This patch brings the demonstration implementation of PEX up to R3, and also
improves it a small bit.  

There are four files:

  What they do/named	How (from where and when) they do it.

  Removes		sh ./Removes
  Diffs			patch -p < ./Diffs >& Diffs.log
  Additions		sh ./Additions
  MoveMe                sh ./MoveMe

Don't do Removes after Additions! that's all.

The files removed in Removes must be removed or moved.  The files contained in
the Shell-archive (Additions) must be added.  There are two mkdir lines added
to the Additions shar file.  They shouldn't hurt, and should help to clear a
path for the new file (miinitext.c).  The files changed by Diffs, are
plentiful.

The changes to the Imakefiles are definitely neccessary for compilation.  The
rest of the files, however, (the *.[ch] files) have been changed for several
(other) reasons, None of which bear relevance for simple compilation with R3.
(eg..  The patched sources work in R2 also)

1)  Lots of changes were made to allow compilation on a strict ANSI compiler.
    (like hc1.4 on the IBM RT's), or GCC for that matter (I think).

2)  Some small (ifdef'ed out) bugs were found.

3)  Some enhancements were made to the shading code to make the server look
    prettier.

Note: The changes for reason 1 above were tested (compiled) with R2.  The code
has been linked with the R2 and R3 Xsun, Xqdss, Xqvss, and the R2 Xibm.  (NOT
the R3 Xibm yet) I see no good reason why it wouldn't link right up with that
too.

You can use linktree, (like RELINK does), and then do a global make.  That is
easiest.  You can get sneaky and merge this stuff with the core X tree.  I
have done it, but I don't have time to explain how.  It should be cake for any
determined and experienced X hacker or compiler.  I sugggest using linktree,
with the checks for *.o and *.a files removed.  

#like this!!!
#
#    else if ( $file =~ *.o || $file =~ *.a || $file =~ *.ln ) then
#        echo "ignoring...  : ${file:t} binary"

Thus the compiled objects in the core tree get linked in along with the
sources and nothing gets recompiled which doesn't need to be.  To be sure, you
can hit a:

    foreach i (`find . -type f -name '*.c' -print `)
        rm -f $i:r.o
    end

This removes any .o files forwhich there exists a solid (not linked) .c file.
I believe that there will be only one of these files. (miinitext.o)

If you have gone ahead already, and modified the PEX code yourselves, you
can ignore my changes to the sources, and simply apply the patches to the
Imakefiles.  It should work that way too.

Good luck, 

and send squeeeeeeelmail if you need help, or find blunders in my work.

Martin Friedmann
Martin@citi.umich.edu