#! /bin/sh

# show executed commands
# set -x

# stop on errors
set -e

BD=`pwd`

build=0
build_debug=0
skip_linux=0

# parse arguments
for arg do
  case "$arg" in
    --build) build=1 ;;
    --build-debug) build_debug=1 ;;
    --skip-linux) skip_linux=1 ;;
    *) echo "$0: unrecognized option: $arg" ;;
  esac
done

# run the auto tools
autotools()
{
  for package in $BD $BD/innobase
  do
    echo "cd $package"
    cd $package
    rm -f config.cache
    echo "aclocal"
    aclocal
    echo "autoheader"
    autoheader
    echo "libtoolize --force"
    libtoolize --force
    echo "aclocal"
    aclocal
    echo "automake --add-missing --force-missing"
    automake --add-missing --force-missing
    echo "autoconf"
    autoconf
  done

  cd $BD
}

# check the source direcotry
echo "looking for \"$BD/sql/mysqld.cc\"..."
if test ! -r ./sql/mysqld.cc
then
  echo "./netware/nwbootstrap must be started from the top source directory"
  exit 1
fi

# clean
# make -j 2 -k distclean
rm -f NEW-RPMS/*
rm -f */.deps/*.P

# make files writeable
chmod -R u+rw,g+rw .

# skip linux?
if test $skip_linux -ne 1
then
  echo "starting linux build..."

  echo "autotools..."
  autotools

  echo "configuring for linux..."
  ./configure --without-docs --without-innodb

  echo "building for linux..."
  make clean all

  echo "copying required linux binaries..."
  rm -f */*.linux
  cp extra/comp_err extra/comp_err.linux
  cp libmysql/conf_to_src libmysql/conf_to_src.linux
  cp libmysql/conf_to_src libmysql_r/conf_to_src.linux
  cp sql/gen_lex_hash sql/gen_lex_hash.linux
  cp strings/conf_to_src strings/conf_to_src.linux

  echo "cleaning linux build..."
  make clean distclean
fi

echo "starting netware build..."

# remove stale Makefile.in.bk files
rm -rf Makefile.in.bk

# start mw enviornment
chmod +x ./netware/nwconfigure
chmod +x ./netware/mw/mwenv
chmod +x ./netware/mw/mwasmnlm
chmod +x ./netware/mw/mwccnlm
chmod +x ./netware/mw/mwldnlm

. ./netware/mw/mwenv

# link nwconfigure
rm -f ./nwconfigure
ln ./netware/nwconfigure ./nwconfigure

# save old builds from previous run
if test -e *.tar.gz
then
  rm -f *.tar.gz.old
  rename .tar.gz .tar.gz.old *.tar.gz
fi

echo "autotools..."
autotools

# debug build
if test $build_debug -eq 1
then
  echo "configuring for netware (debug)..."
  ./nwconfigure --with-debug=full

  echo "building for netware (debug)..."
  make clean bin-dist

  # mark the debug build
  rename .tar.gz -debug.tar.gz *.tar.gz
fi

# release build
if test $build -eq 1
then
  echo "configuring for netware..."
  ./nwconfigure

  echo "building for netware..."
  make clean bin-dist
fi

echo "done"