#!/bin/sh
# Makes the wxWidgets RPMs

RPMBUILDARGS=
PLATFORM=
NORPMS=

doupdatecvs()
{
  cd $WXSRC
  echo Updating from CVS...
  cvswx update -d -P
}

dospinwxgtk()
{
  echo Making wxGTK RPMs...
  RPM_ROOT=$WXDEST/wxgtk/rpm-root

  if [ ! -d $WXDEST ]; then
    mkdir $WXDEST
  fi

  rm -f -r $WXDEST/wxgtk
  mkdir $WXDEST/wxgtk
  mkdir $WXDEST/wxgtk/release
  mkdir $RPM_ROOT

  cd $WXSRC
  cd locale
  make allmo
  cd $WXDEST/wxgtk/release
  echo Configuring...
  $WXSRC/configure --with-gtk --no-recursion
  echo Making...
  make -j1 dist bzip-dist-only

  mkdir $WXDEST/$PLATFORM

  if [ "$NORPMS" != "1" ]
  then

  echo Setting up RPM build dir $RPM_ROOT...
  rm -f -r $RPM_ROOT
  mkdir $RPM_ROOT
  mkdir $RPM_ROOT/BUILD
  mkdir $RPM_ROOT/RPMS
  mkdir $RPM_ROOT/RPMS/i386
  mkdir $RPM_ROOT/RPMS/i686
  mkdir $RPM_ROOT/RPMS/noarch
  mkdir $RPM_ROOT/SOURCES
  mkdir $RPM_ROOT/SPECS
  mkdir $RPM_ROOT/SRPMS

  echo %_topdir $RPM_ROOT > ~/.rpmmacros

  echo Copying wxGTK-$WXVER.tar.bz2 to $RPM_ROOT/SOURCES...
  cp wxGTK-$WXVER.tar.bz2 $RPM_ROOT/SOURCES
  echo Copying wxGTK.spec to $RPM_ROOT/SPECS...
  cp $WXSRC/wxGTK.spec $RPM_ROOT/SPECS

  echo Starting wxGTK RPM build, rpmbuild args=$RPMBUILDARGS...
  cd $RPM_ROOT
  rpmbuild -ba $RPMBUILDARGS SPECS/wxGTK.spec 2>&1 | tee wxGTK.out

  echo Finished wxGTK RPM build, in $RPM_ROOT.
  echo "SRPMS:"
  ls SRPMS
  echo "RPMS/i386:"
  ls RPMS/i386

  cp $RPM_ROOT/SRPMS/*.rpm $WXDEST/$PLATFORM
  cp $RPM_ROOT/RPMS/i386/*.rpm $WXDEST/$PLATFORM

  fi

  cp $WXDEST/wxgtk/release/*.tar.gz $WXDEST/$PLATFORM
  cp $WXDEST/wxgtk/release/*.tar.bz2 $WXDEST/$PLATFORM

#  rm -f -r $WXDEST/wxgtk

  echo Now try the RPMs with rpm -i.
}

dospinwxmgl()
{
  echo Making wxMGL RPMs...
  RPM_ROOT=$WXDEST/wxmgl/rpm-root

  if [ ! -d $WXDEST ]; then
    mkdir $WXDEST
  fi

  rm -f -r $WXDEST/wxmgl
  mkdir $WXDEST/wxmgl
  mkdir $WXDEST/wxmgl/release
  mkdir $RPM_ROOT

  cd $WXSRC
  cd locale
  make allmo
  cd $WXDEST/wxmgl/release
  echo Configuring...
  $WXSRC/configure --with-mgl --no-recursion
  echo Making...
  make -j1 dist bzip-dist-only

  if [ "$NORPMS" != "1" ]
  then

  echo Setting up RPM build dir $RPM_ROOT...
  rm -f -r $RPM_ROOT
  mkdir $RPM_ROOT
  mkdir $RPM_ROOT/BUILD
  mkdir $RPM_ROOT/RPMS
  mkdir $RPM_ROOT/RPMS/i386
  mkdir $RPM_ROOT/RPMS/i686
  mkdir $RPM_ROOT/RPMS/noarch
  mkdir $RPM_ROOT/SOURCES
  mkdir $RPM_ROOT/SPECS
  mkdir $RPM_ROOT/SRPMS

  echo %_topdir $RPM_ROOT > ~/.rpmmacros

  echo Copying wxMGL-$WXVER.tar.bz2 to $RPM_ROOT/SOURCES...
  cp wxMGL-$WXVER.tar.bz2 $RPM_ROOT/SOURCES
  echo Copying wxMGL.spec to $RPM_ROOT/SPECS...
  cp $WXSRC/wxMGL.spec $RPM_ROOT/SPECS

  echo Starting wxMGL RPM build...
  cd $RPM_ROOT
  rpmbuild -ba SPECS/wxMGL.spec 2>&1 | tee wxMGL.out

  echo Finished wxMGL RPM build, in $RPM_ROOT.
  echo "SRPMS:"
  ls SRPMS
  echo "RPMS/i386:"
  ls RPMS/i386

  cp $RPM_ROOT/SRPMS/*.rpm $WXDEST
  cp $RPM_ROOT/RPMS/i386/*.rpm $WXDEST

  fi

  cp $WXDEST/wxmgl/release/*.tar.gz $WXDEST
  cp $WXDEST/wxmgl/release/*.tar.bz2 $WXDEST

#  rm -f -r $WXDEST/wxmgl

  echo Now try the RPMs with rpm -i.
}

dospinwxmotif()
{
  echo Making wxMotif RPMs...
  RPM_ROOT=$WXDEST/wxmotif/rpm-root

  if [ ! -d $WXDEST ]; then
    mkdir $WXDEST
  fi

  rm -f -r $WXDEST/wxmotif
  mkdir $WXDEST/wxmotif
  mkdir $WXDEST/wxmotif/release
  mkdir $RPM_ROOT

  cd $WXSRC
  cd locale
  make allmo
  cd $WXDEST/wxmotif/release
  echo Configuring...
  $WXSRC/configure --with-motif --no-recursion
  echo Making...
  make -j1 dist bzip-dist-only

  if [ "$NORPMS" != "1" ]
  then

  echo Setting up RPM build dir $RPM_ROOT...
  rm -f -r $RPM_ROOT
  mkdir $RPM_ROOT
  mkdir $RPM_ROOT/BUILD
  mkdir $RPM_ROOT/RPMS
  mkdir $RPM_ROOT/RPMS/i386
  mkdir $RPM_ROOT/RPMS/i686
  mkdir $RPM_ROOT/RPMS/noarch
  mkdir $RPM_ROOT/SOURCES
  mkdir $RPM_ROOT/SPECS
  mkdir $RPM_ROOT/SRPMS

  echo %_topdir $RPM_ROOT > ~/.rpmmacros

  echo Copying wxMOTIF-$WXVER.tar.bz2 to $RPM_ROOT/SOURCES...
  cp wxMOTIF-$WXVER.tar.bz2 $RPM_ROOT/SOURCES
  echo Copying wxMotif.spec to $RPM_ROOT/SPECS...
  cp $WXSRC/wxMotif.spec $RPM_ROOT/SPECS

  echo Starting wxMotif RPM build...
  cd $RPM_ROOT
  rpmbuild -ba SPECS/wxMotif.spec 2>&1 | tee wxGTK.out

  echo Finished wxMotif RPM build, in $RPM_ROOT.
  echo "SRPMS:"
  ls SRPMS
  echo "RPMS/i386:"
  ls RPMS/i386

  cp $RPM_ROOT/SRPMS/*.rpm $WXDEST
  cp $RPM_ROOT/RPMS/i386/*.rpm $WXDEST

  fi

  cp $WXDEST/wxmotif/release/*.tar.gz $WXDEST
  cp $WXDEST/wxmotif/release/*.tar.bz2 $WXDEST

  echo Rearchiving wxMotif tarballs to change wxMOTIF to wxMotif...
  cd $WXDEST
  mkdir wxMotif.tmp
  cd wxMotif.tmp
  rm -f -r *
  tar xfz ../wxMOTIF-$WXVER.tar.gz
  mv wxMOTIF-$WXVER wxMotif-$WXVER
  rm -f ../wxMOTIF-$WXVER.tar.gz
  rm -f ../wxMOTIF-$WXVER.tar.bz2
  tar cf ../wxMotif-$WXVER.tar *
  gzip -c ../wxMotif-$WXVER.tar > ../wxMotif-$WXVER.tar.gz
  bzip2 -f9 ../wxMotif-$WXVER.tar
  cd ..
  rm -f -r wxMotif.tmp
#  rm -f -r $WXDEST/wxmotif

  echo Now try the RPMs with rpm -i.
}

dospinwxmac()
{
  echo Making wxMac tarballs...
  echo Note that this must be done on a Mac.
  if [ ! -d $WXDEST ]; then
    mkdir $WXDEST
  fi

  rm -f -r $WXDEST/wxmac
  mkdir $WXDEST/wxmac
  mkdir $WXDEST/wxmac/release

  cd $WXSRC
  cd locale
  make allmo
  cd $WXDEST/wxmac/release
  echo Configuring...
  $WXSRC/configure --with-mac --no-recursion
  echo Making...
  make -j1 dist bzip-dist-only

  cp $WXDEST/wxmac/release/*.tar.gz $WXDEST
  cp $WXDEST/wxmac/release/*.tar.bz2 $WXDEST

  echo Rearchiving wxMac tarballs to change wxMAC to wxMAC...
  cd $WXDEST
  mkdir wxMac.tmp
  cd wxMac.tmp
  rm -f -r *
  tar xfz ../wxMac-$WXVER.tar.gz
  mv wxMAC-$WXVER wxMac-$WXVER
  rm -f ../wxMAC-$WXVER.tar.gz
  rm -f ../wxMAC-$WXVER.tar.bz2
  tar cf ../wxMac-$WXVER.tar *
  gzip -c ../wxMac-$WXVER.tar > ../wxMac-$WXVER.tar.gz
  bzip2 -f9 ../wxMac-$WXVER.tar
  cd ..
  rm -f -r wxMac.tmp

  rm -f -r $WXDEST/wxmac
  echo Now try the RPMs with rpm -i.
}

dospinwxbase()
{
  echo Making wxBase RPMs...
  RPM_ROOT=$WXDEST/wxbase/rpm-root

  if [ ! -d $WXDEST ]; then
    mkdir $WXDEST
  fi

  rm -f -r $WXDEST/wxbase
  mkdir $WXDEST/wxbase
  mkdir $WXDEST/wxbase/release
  mkdir $RPM_ROOT

  cd $WXSRC
  cd locale
  make allmo
  cd $WXDEST/wxbase/release
  echo Configuring...
  $WXSRC/configure --disable-gui --no-recursion
  echo Making...
  make -j1 dist bzip-dist-only

  mkdir $WXDEST/$PLATFORM

  if [ "$NORPMS" != "1" ]
  then

  echo Setting up RPM build dir $RPM_ROOT...
  rm -f -r $RPM_ROOT
  mkdir $RPM_ROOT
  mkdir $RPM_ROOT/BUILD
  mkdir $RPM_ROOT/RPMS
  mkdir $RPM_ROOT/RPMS/i386
  mkdir $RPM_ROOT/RPMS/i686
  mkdir $RPM_ROOT/RPMS/noarch
  mkdir $RPM_ROOT/SOURCES
  mkdir $RPM_ROOT/SPECS
  mkdir $RPM_ROOT/SRPMS

  echo %_topdir $RPM_ROOT > ~/.rpmmacros

  echo Copying wxBase-$WXVER.tar.bz2 to $RPM_ROOT/SOURCES...
  cp wxBase-$WXVER.tar.bz2 $RPM_ROOT/SOURCES
  echo Copying wxBase.spec to $RPM_ROOT/SPECS...
  cp $WXSRC/wxBase.spec $RPM_ROOT/SPECS

  echo Starting wxBase RPM build, rpmbuild args=$RPMBUILDARGS...
  cd $RPM_ROOT
  rpmbuild -ba $RPMBUILDARGS SPECS/wxBase.spec 2>&1 | tee wxBase.out

  echo Finished wxBase RPM build, in $RPM_ROOT.
  echo "SRPMS:"
  ls SRPMS
  echo "RPMS/i386:"
  ls RPMS/i386

  cp $RPM_ROOT/SRPMS/*.rpm $WXDEST/$PLATFORM
  cp $RPM_ROOT/RPMS/i386/*.rpm $WXDEST/$PLATFORM

  fi

  cp $WXDEST/wxbase/release/*.tar.gz $WXDEST/$PLATFORM
  cp $WXDEST/wxbase/release/*.tar.bz2 $WXDEST/$PLATFORM

#  rm -f -r $WXDEST/wxbase
  echo Now try the RPMs with rpm -i.
}

dospinwxx11()
{
  echo Making wxX11 RPMs...
  RPM_ROOT=$WXDEST/wxx11/rpm-root

  if [ ! -d $WXDEST ]; then
    mkdir $WXDEST
  fi

  rm -f -r $WXDEST/wxx11
  mkdir $WXDEST/wxx11
  mkdir $WXDEST/wxx11/release
  mkdir $RPM_ROOT

  cd $WXSRC
  cd locale
  make allmo
  cd $WXDEST/wxx11/release
  echo Configuring...
  $WXSRC/configure --with-x11 --no-recursion
  echo Making...
  make -j1 dist bzip-dist-only

  if [ "$NORPMS" != "1" ]
  then

  echo Setting up RPM build dir $RPM_ROOT...
  rm -f -r $RPM_ROOT
  mkdir $RPM_ROOT
  mkdir $RPM_ROOT/BUILD
  mkdir $RPM_ROOT/RPMS
  mkdir $RPM_ROOT/RPMS/i386
  mkdir $RPM_ROOT/RPMS/i686
  mkdir $RPM_ROOT/RPMS/noarch
  mkdir $RPM_ROOT/SOURCES
  mkdir $RPM_ROOT/SPECS
  mkdir $RPM_ROOT/SRPMS

  echo %_topdir $RPM_ROOT > ~/.rpmmacros

  echo Copying wxX11-$WXVER.tar.bz2 to $RPM_ROOT/SOURCES...
  cp wxX11-$WXVER.tar.bz2 $RPM_ROOT/SOURCES
  echo Copying wxX11.spec to $RPM_ROOT/SPECS...
  cp $WXSRC/wxX11.spec $RPM_ROOT/SPECS

  echo Starting wxX11 RPM build...
  cd $RPM_ROOT
  rpmbuild -ba SPECS/wxX11.spec 2>&1 | tee wxX11.out

  echo Finished wxX11 RPM build, in $RPM_ROOT.
  echo "SRPMS:"
  ls SRPMS
  echo "RPMS/i386:"
  ls RPMS/i386

  cp $RPM_ROOT/SRPMS/*.rpm $WXDEST
  cp $RPM_ROOT/RPMS/i386/*.rpm $WXDEST

  fi

  cp $WXDEST/wxx11/release/*.tar.gz $WXDEST
  cp $WXDEST/wxx11/release/*.tar.bz2 $WXDEST

#  rm -f -r $WXDEST/wxx11
  echo Now try the RPMs with rpm -i.
}

PROGNAME=$0
WXSRC=$1
WXDEST=$2
WXVER=$3

SPINWXX11=0
SPINWXGTK1=0
SPINWXGTK2=0
SPINWXGTK2UNICODE=0
SPINWXMAC=0
SPINWXMOTIF=0
SPINWXBASE=0
SPINWXBASEUNICODE=0
SPINWXMGL=0
SPINEVERYTHING=0
UPDATECVS=0

usage()
{
    echo Usage: $PROGNAME "src-dir dest-dir version-number [ options ]"
    echo Options:
    echo "    --help          Display this help message"
    echo "    --wxgtk1        Spin wxGTK1 RPMs"
    echo "    --wxgtk2        Spin wxGTK2 RPMs"
    echo "    --wxgtk2unicode Spin wxGTK2 Unicode RPMs"
    echo "    --wxbase        Spin wxBase RPMs"
    echo "    --wxbaseunicode Spin wxBase Unicode RPMs"
    echo "    --wxx11         Spin wxX11 RPMs"
    echo "    --wxmotif       Spin wxMotif RPMs"
    echo "    --wxmgl         Spin wxMGL RPMs"
    echo "    --wxmac         Make wxMac tarball"
    echo "    --all           Spin EVERYTHING"
    echo "    --updatecvs     Update from CVS"
    echo "    --norpms        No RPMS, just tarballs"

    exit 1
}

init=""
if [ "$1" = "" ]
then
  usage
  exit
fi

if [ "$2" = "" ]
then
  usage
  exit
fi

if [ "$3" = "" ]
then
  usage
  exit
fi

# Process command line options.
shift 3
for i in "$@"; do
    case "$i" in
	--wxx11) SPINWXX11=1 ;;
	--wxgtk1) SPINWXGTK1=1 ;;
	--wxgtk2) SPINWXGTK2=1 ;;
	--wxgtk2unicode) SPINWXGTK2UNICODE=1 ;;
	--wxmotif) SPINWXMOTIF=1 ;;
	--wxmgl) SPINWXMGL=1 ;;
	--wxmac) SPINWXMAC=1 ;;
	--wxbase) SPINWXBASE=1 ;;
	--wxbaseunicode) SPINWXBASEUNICODE=1 ;;
	--all) SPINEVERYTHING=1 ;;
	--updatecvs) UPDATECVS=1 ;;
	--norpms) NORPMS=1 ;;
	*)
	    usage
	    exit
	    ;;
    esac
done

echo About to make wxWidgets RPMs:
echo   From    $WXSRC
echo   To      $WXDEST
echo   Version $WXVER
echo CTRL-C if this is not correct.
read dummy

if [ "$UPDATECVS" = "1" ]; then
  doupdatecvs
fi

if [ "$SPINWXX11" = "1" ] || [ "$SPINEVERYTHING" = "1" ]; then
  dospinwxx11
fi

if [ "$SPINWXGTK1" = "1" ] || [ "$SPINEVERYTHING" = "1" ]; then
  RPMBUILDARGS="--without gtk2"
  PLATFORM=gtk1
  dospinwxgtk
fi

if [ "$SPINWXGTK2" = "1" ] || [ "$SPINEVERYTHING" = "1" ]; then
  RPMBUILDARGS="--with gtk2"
  PLATFORM=gtk2
  dospinwxgtk
fi

if [ "$SPINWXGTK2UNICODE" = "1" ] || [ "$SPINEVERYTHING" = "1" ]; then
  RPMBUILDARGS="--with gtk2 --with unicode"
  PLATFORM=gtk2unicode
  dospinwxgtk
fi

if [ "$SPINWXBASE" = "1" ] || [ "$SPINEVERYTHING" = "1" ]; then
  PLATFORM=base
  dospinwxbase
fi

if [ "$SPINWXBASEUNICODE" = "1" ] || [ "$SPINEVERYTHING" = "1" ]; then
  RPMBUILDARGS="--with unicode"
  PLATFORM=baseunicode
  dospinwxbase
fi

if [ "$SPINWXMOTIF" = "1" ] || [ "$SPINEVERYTHING" = "1" ]; then
  dospinwxmotif
fi

if [ "$SPINWXMGL" = "1" ] || [ "$SPINEVERYTHING" = "1" ]; then
  dospinwxmgl
fi

if [ "$SPINWXMAC" = "1" ]; then
  dospinwxmac
fi