#!/bin/bash -e

# NOTE: should be invoked as either:
#    ./msys-build-texinfo  texinfo-VER.tar.bz2
#    which will unpack the "pristine" source distribution, patch it, 
#    and begin the build,
# OR, as
#    ../msys-build-texinfo
#    where the current working directory is the unpacked and patched
#    source distribution.


if [ "x" != "x$1" ]; then
  if [ -d "$1" ]; then
    savedir="$PWD"
    cd "$1"
    srcdir="$PWD"
  elif [ -f "$1" ]; then
    case "$1" in
    *.tar.bz2 ) srcdir=`echo $1 | sed -e 's/\.tar\.bz2$//'`
                unpack=tbz
                savedir="$PWD" ;;
    *.tar.gz  ) srcdir=`echo $1 | sed -e 's/\.tar\.gz$//'`
                unpack=tgz
                savedir="$PWD" ;;
    *.zip     ) srcdir=`echo $1 | sed -e 's/\.zip$//'`
                unpack=zip
                savedir="$PWD" ;;
    * ) echo "Bad src directory specified: $1" 
        exit 1 ;;
    esac
  else
    echo "Bad src directory specified: $1"
    exit 1
  fi
else
  savedir="$PWD"
  srcdir="$PWD"
fi

if [ -n "$unpack" ] ; then
  case "$unpack" in
  tbz ) tar xvjf $1 ;;
  tgz ) tar xvzf $1 ;;
  zip ) unzip $1 ;;
  * ) echo "unknown pack format"
      exit 1 ;;
  esac
  if [ ! -d "$srcdir" ]; then
    echo "src package $1 does not unpack into assumed srcdir $srcdir"
    exit 1
  fi
  if [ -e ${srcdir}.patch ] ; then
    cd ${srcdir}
    if ! patch -p2 < ../${srcdir}.patch ; then
      echo "unable to apply patch!"
      exit 1
    fi
    cd ${savedir}
  fi
  srcdir=`cd $srcdir; pwd`
fi


abovedir=`cd ${srcdir}/..; pwd`
export PKG=`basename $srcdir`
export PATH=`pwd`:/bin:/usr/local/bin:/mingw/bin

opt_flags="-fnative-struct -O3 -s -mcpu=pentium"
export CFLAGS=${CFLAGS:-"${opt_flags}"};
export CPPFLAGS="${CPPFLAGS} -D__CYGWIN__" 
export CXXFLAGS=${CXXFLAGS:-"${opt_flags}"};
export F77FLAGS=${F77FLAGS:-"${opt_flags}"};
export GCJFLAGS=${GCJFLAGS:-"${opt_flags}"};
export LDFLAGS="${LDFLAGS} -Wl,--enable-auto-import";

### this is an msysCORE package, so it can not use libiconv/libintl
confargs="--prefix=/usr --disable-nls --disable-rpath"

mkdir -p ${abovedir}/_build
builddir=${abovedir}/_build
mkdir -p ${abovedir}/_inst
instdir=${abovedir}/_inst


cd ${srcdir}
autoreconf -f -v -i
unix2dos makeinfo/tests/xref-cr.txi

cd ${builddir}
${srcdir}/configure --srcdir=${srcdir} ${confargs} \
   CFLAGS="${CFLAGS}" \
   CPPFLAGS="${CPPFLAGS}" \
   CXXFLAGS="${CXXFLAGS}" \
   LDFLAGS="${LDFLAGS}"

make

### stupid Vista. Bad Vista. No cookie.
cd ${builddir}/util
cat <<EOF > install-info.manifest
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="4.11.0.0"
     processorArchitecture="X86"
     name="install-info.exe"
     type="win32"/>

  <!-- Identify the application security requirements. -->
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="asInvoker"
          uiAccess="false"/>
        </requestedPrivileges>
       </security>
  </trustInfo>
</assembly>
EOF

cat <<EOF > install-info.rc
1 24 MOVEABLE PURE "install-info.manifest"
EOF

windres install-info.rc install-info.rc.o
gcc  -fnative-struct -O3 -s -mcpu=pentium  -Wl,--enable-auto-import -o ginstall-info.exe install-info.o install-info.rc.o ../lib/libtxi.a ../gnulib/lib/libgnu.a
cd ${builddir}


### the first group of 24 tests all pass
### the second group has failures, because tex is missing
make check || /bin/true
make install DESTDIR=${instdir}
rm -f ${instdir}/usr/share/info/dir
rm -f ${instdir}/usr/lib/charset.alias
rmdir ${instdir}/usr/lib



cd ${instdir}/usr
rm -f share/info/dir
tar cvjf ${abovedir}/${PKG}-MSYS-1.0.11-1.tar.bz2 *


cd ${abovedir}
tar cvjf ./${PKG}-MSYS-1.0.11-1-src.tar.bz2 \
  ${PKG}.tar.bz2 \
  ${PKG}.patch \
  msys-build-texinfo

cd "$savedir"

