#!/bin/sh -x

prefix=/usr

version=`grep '^Version:' prc-tools.spec | sed 's/.*: //'`
cygpkgversion=1

cwd=`pwd`
basedir=`basename $cwd`


echo_generated () {
  case $1 in
    root)  cmd=echo cmdopts= ;;
    tree)  cmd=find cmdopts='-type f -print' ;;
  esac

  ls $prefix/bin/m68k-palmos-* | grep -v -- -coff-

  for prg in build-prc multigen obj-res stubgen; do
    ls $prefix/bin/$prg*
  done

  $cmd $prefix/m68k-palmos $cmdopts
  $cmd $prefix/lib/gcc-lib/m68k-palmos $cmdopts
  }

do_unpack () {
  if test ! -f configure; then
    autoconf
  fi

  for pkg in binutils-2.9.1 gcc-2.95.3 gdb-5.0; do
    basepkg=`echo $pkg | sed 's/-.*//'`
    rm -rf $basepkg $pkg
    tar xfz ../srcz/$pkg.tar.gz
    patch -p0 < $pkg.palmos.diff
    mv $pkg $basepkg
    canon -drq $basepkg
  done

  rm -rf gcc/texinfo
  }

do_build () {
  if test ! -d ../build-$basedir; then
    mkdir ../build-$basedir
  fi

  cd ../build-$basedir
  rm -rf *

  mkdir empty

  ../$basedir/configure \
    --prefix=$prefix \
    --target=m68k-palmos --enable-languages=c,c++ --with-headers=`pwd`/empty \
    --with-palmdev-prefix=/PalmDev --with-build-sdk=-palmos4

  make all-install

  cd ../$basedir
  }

do_strip () {
  echo_generated tree | grep '\.exe$' | xargs strip
  }

do_package () {
  #tarbase=$basedir-$version-$cygpkgversion
  tarbase=prc-tools-$version-cygwin
  rm -f $tarbase.tar
  echo_generated tree |
    fgrep -v sys-include |
    fgrep -v SYSCALLS.c.X |
    sed 's:^/::' | (cd / && tar cvf $cwd/$tarbase.tar -T -)
  rm -f $tarbase.tar.gz
  gzip -9 $tarbase.tar
  }

do_uninstall () {
  echo_generated root | xargs rm -rf
  }


for opt in $*; do
  case $opt in
    unpack)	do_unpack ;;
    build)	do_build ;;
    strip)	do_strip ;;
    tar)	do_package ;;
    all)	do_unpack; do_build; do_strip; do_package ;;
    uninstall)	do_uninstall ;;
  esac
done
