amaya-1.0b on ultrix 4.4

i have amaya-1.0b compiled and (kinda) working under ultrix 4.4
(gcc-2.7.2).  nice to have an ultrix web client that has a halfway
reasonable understanding of tables -- too bad the forms stuff doesn't
work better...

here's a shell script i used to (semi-)automate the configuration.  it
won't work for you (for any instance of 'you') -- it contains paths to
things like our local copy of the Motif library.  however, the
(lengthy) comment lists the problems i had to solve and how i solved
them.  note: there were three places where i couldn't avoid source
tree changes (thotlib/dialogue/input.c, thotlib/dialogue/lookup.c and

also, MAX_CHAR is an X/Open constant that probably shouldn't be used
in Thot.  it causes a lot of compiler noise, at least on ultrix.
(it's defined in thotlib/internals/h/constint.h.)

this is provided as a public service to help other people along in
their porting efforts.  i'm NOT on the www-amaya mailing list and i'm
NOT likely to respond to any direct questions or requests.

rm -f config.*

if [ `uname` = ULTRIX ]; then
  # ULTRIX issues:
  #  - kaffe isn't ported to ULTRIX (not even as of 0.9.0), so we *must*
  #    set --disable-java.  (ULTRIX has pthreads support, so it seems 
  #    doable, but i don't have time to look at this right now.)
  #  - there aren't any plugins for ULTRIX, so we may as well set 
  #    --disable-plugin.
  #  - the ULTRIX 4.4 <memory.h> has only non-ANSI prototypes.  we don't 
  #    really want it, but autoconf sees it and sets HAVE_MEMORY_H.  undo
  #    this.  unfortunately, this means we must modify "config.h" by hand.
  #  - ULTRIX doesn't have strdup(3).  work around this using a macro.
  #    (some of the code does the right thing with HAVE_STRDUP and some
  #    of it doesn't; this makes it hard to fix this cleanly.)
  #  - for some reason, autoconf doesn't set HAVE_MEMCPY.  thotlib 
  #    contains a macro workaround for this; this causes the prototypes
  #    to produce syntax errors.  work around this by setting HAVE_MEMCPY
  #    by hand.
  #  - ULTRIX has Motif libraries, but if we include /usr/include before
  #    (the implicit) gcc-lib/include, we get the ULTRIX <stdarg.h> 
  #    instead of the gcc <stdarg.h>.  this causes the va_* macros to
  #    generate syntax errors.  make sure nothing in the /usr/include 
  #    hierarchy is placed in the gcc command line!
  #  - the ULTRIX /bin/sh has some crock that makes directory tests fail.
  #    /bin/sh5 works, so use SHELL=/bin/sh5 in the Makefiles (via 
  #    Options).
  #  - thotlib/dialogue/input.c tries to work around the fact that
  #    libX11(KeyBind.o):XLookupString is slightly broken by defining its
  #    own in thotlib/dialogue/lookup.c.  problem: if you're using static
  #    libraries instead of shared libraries, you can't link because you
  #    need to pull in libX11(KeyBind.o) for other stuff that *isn't*
  #    defined in thotlib/dialogue/lookup.c.  ULTRIX doesn't have shared
  #    libraries, so the problem always shows up.  it will probably show 
  #    up on other platforms as well for static binaries.  work around 
  #    this by adding a '#define XLookupString TtaXLookupString' to 
  #    input.c and '#if 0'ing the XLookupString in lookup.c.
  #  - cpp is in /lib under ULTRIX, and darn few people have /lib in 
  #    their PATH.  add this to the Makefiles (via Options).
  #  - the definition of CFLAGS makes the 'configure' in libwww fail.
  #    work around this by adding a shell script wrapper around 
  #    libwww/configure that clears CFLAGS.
  ../configure \
   --bindir=/usr/local/X11/bin --libdir=/usr/local/X11/lib \
   --x-includes=/usr/sww/X11R6/include --x-libraries=/usr/sww/X11R6/lib \
   --without-thot --with-amaya --disable-java --disable-plugin
  sed -e "s%^\(#define HAVE_MEMORY_H.*\)%/* \1 */%" < config.h > config.tmp
  mv config.tmp config.h
  sed \
    -e "s/^\(CFLAGS	=\) -g \(.*\)/\1 \2 '-Dstrdup(x)=(strcpy(malloc(strlen(x)+1),x))' -DHAVE_MEMCPY/" \
    -e "s%^\(MOTIF_INCLUDES=\)-I/usr/include/X11%\1%" \
    < Options.orig > Options
  echo 'SHELL=/bin/sh5' >> Options
  echo 'PATH:=${PATH}:/lib' >> Options

  Paul M. Aoki         | University of California at Berkeley
  aoki@CS.Berkeley.EDU | Dept. of EECS, Computer Science Division #1776
                       | Berkeley, CA 94720-1776

Received on Wednesday, 2 July 1997 09:52:55 UTC