#!/bin/sh
rm -rf gc
gunzip -c gc4.13alpha3.tar.gz | tar xf -
rm -f gc/Makefile.new
sed -f gc-Makefile.sed gc/Makefile >gc/Makefile.new
mv -f gc/Makefile.new gc/Makefile
rm -f gc/os_dep.new
sed -f gc-os_dep.sed gc/os_dep.c >gc/os_dep.new
mv -f gc/os_dep.new gc/os_dep.c
case `uname -m`/`uname -s` in
  i[3456]86/Linux)
    gcc -o stack-bottom stack-bottom.c
    case `./stack-bottom` in
      0)
        rm -f gc/gcconfig.new
        sed -f gc-gcconfig.sed gc/gcconfig.h >gc/gcconfig.new
        mv -f gc/gcconfig.new gc/gcconfig.h;;
      *);;
      esac
    rm -f stack-bottom;;
  esac
case `uname -s`/`uname -r` in
  IRIX*/*)   RANLIB=touch;;
  SunOS/5.*) RANLIB=touch;;
  *)         RANLIB=ranlib;;
  esac
cd gc
make test
cd ..
cp -f gc/gc.h include/gc.h
cp -f gc/gc.a include/libgc.a
$RANLIB include/libgc.a
rm -rf gc
cd include
rm -f libstalin.a
# egcs can be used when it is available
#egcs -c -O2 -fomit-frame-pointer -freg-struct-return xlib-c.c
gcc -c -O2 -fomit-frame-pointer -freg-struct-return xlib-c.c
ar rc libstalin.a xlib-c.o
$RANLIB libstalin.a
rm xlib-c.o
cd ..
case `uname -m`/`uname -s` in
  i[3456]86/*)
    cp -f stalin-32.c stalin.c;;
  sun4*/*)
    cp -f stalin-32.c stalin.c;;
  IP*/IRIX*)
    cp -f stalin-32.c stalin.c;;
  alpha/*)
    cp -f stalin-alpha.c stalin.c;;
  *)
    echo "Cannot (yet) run Stalin on this architecture"
    exit 1;;
  esac
exec make
