#!/bin/bash
# ---------------------------------------------------------------------------
# Build wxWidgets and wxPython on a Windows box.  This is normally called 
# from build-all but it should be able to be used standalone too...
# 
# The command line must have the following parameters:
#
#    1. the path to the base of the wx source tree
#    2. the path of where to put the resulting installers
#    3. skipclean flag (yes|no)
#    4. the VERSION
#    5. the remaining args are the versions of Python to build for
#
# ---------------------------------------------------------------------------

set -o errexit
#set -o xtrace

echo "-=-=-=-  Hello from $HOSTNAME  -=-=-=-"

if [ $# -lt 6 ]; then
    echo "Usage: $0 WXDIR DESTDIR SKIPCLEAN VERSION PYVER CHARTYPE"
    exit 1
fi

WXDIR=$1
DESTDIR=$2
SKIPCLEAN=$3
VERSION=$4
PYVER=$5
CHARTYPE=$6
CPU=$7

# WXDIR is the cygwin path, WXWIN is the DOS path
WXWIN=`cygpath -w $WXDIR`
export WXWIN
export WXDIR
export TOOLS=/cygdrive/c/TOOLS
export CPU


# setup the environment for the right compiler
if [ $PYVER = 2.3 ]; then
    echo "Using MSVC ver 6"
    . msvcset local 6

elif [ $PYVER = 2.4 -o $PYVER = 2.5 ]; then    
    if [ "$CPU" = "AMD64" ]; then
	echo "Using MSVC ver 7x64"
	. msvcset local 7x64
    else
	echo "Using MSVC ver 7"
	. msvcset local 7
    fi

else # Python 2.6 or later
    if [ "$CPU" = "AMD64" ]; then
	echo "Using MSVC ver 9x64"
	. msvcset local 9x64
    else
	echo "Using MSVC ver 9"
	. msvcset local 9
    fi
fi 
echo "Using compiler located at:" `which cl.exe`
echo "INCLUDE=" $INCLUDE
echo "LIB=" $LIB

# untar the source 
echo "Unarchiving wxPython-src-$VERSION.tar.bz2"
cd $DESTDIR
tar xjf wxPython-src-$VERSION.tar.bz2
rm wxPython-src-$VERSION.tar.bz2


# Fix line endings
echo "Converting wxPython line endings to CRLF..."
cd $WXDIR
names=`find wxPython -name "*.py" -o -name "*.txt" -o -name "*.htm*" -o -name "*.css" -o -name "*.xml" `
unix2dos $names

. $WXDIR/wxPython/distrib/all/functions.inc

# change to the right spot in the source tree and copy our build scripts
echo "Setting up for the build..."
cd $WXDIR/build/msw
cp $WXDIR/wxPython/distrib/msw/.m* .
chmod +x .m*

update_setup_h $WXDIR/include/wx/msw

echo "Building the wx DLLs..."
if [ "$CPU" != "AMD64" ]; then
    if [ $CHARTYPE = both -o $CHARTYPE = ansi ]; then
	.make hybrid USE_GDIPLUS=1
    fi
fi
if [ $CHARTYPE = both -o $CHARTYPE = unicode ]; then
    .make hybrid-uni USE_GDIPLUS=1
fi


# echo "Building tex2rtf..."
# cd $WXDIR/utils/tex2rtf/src
# $WXDIR/build/msw/.mymake hybrid 
# cp vc_mswhdll/tex2rtf.exe $WXDIR/lib/vc_dll/tex2rtf.exe

# echo "Translating docs to html..."
# DOCDIR=$WXDIR/docs
# cd $DOCDIR/latex/wx
# mkdir -p $DOCDIR/html/wx
# cp *.gif $DOCDIR/html/wx
# cp *.css $DOCDIR/html/wx
# DOCSRC=`cygpath -w $DOCDIR/latex/wx/manual.tex`
# DOCDEST=`cygpath -w $DOCDIR/html/wx/wx.htm` 
# DOCINI=`cygpath -w $DOCDIR/latex/wx/tex2rtf_css.ini`

# $WXDIR/lib/vc_dll/tex2rtf.exe $DOCSRC $DOCDEST -twice -html -macros $DOCINI


# echo "Extracting html docs..."
# mkdir -p $WXDIR/docs/html/wx
# cd $WXDIR/docs/html/wx
# rm -rf *
# tar xjf $DESTDIR/wxPython-docs-$VERSION.tar.bz2
# rm $DESTDIR/wxPython-docs-$VERSION.tar.bz2
# unzip wxPython-$VERSION/docs/wx.zip


echo "Building the HTMLHelp file..."
cd $WXDIR/docs/html/wx
##cp $DOCDIR/latex/wx/wx.css .
$TOOLS/HTMLHelpWorkshop/hhc.exe wx.hhp || true
mkdir -p ../../htmlhelp
mv wx.chm ../../htmlhelp


echo "Building wxPython and installers..."
cd $WXDIR/wxPython

case $PYVER in
    21 | 2.1) VER=21; shift ;;
    22 | 2.2) VER=22; shift ;;
    23 | 2.3) VER=23; shift ;;
    24 | 2.4) VER=24; shift ;;
    25 | 2.5) VER=25; shift ;;
    26 | 2.6) VER=26; shift ;;
    27 | 2.7) VER=27; shift ;;

    *) 	VER=25
esac

# export DISTUTILS_DEBUG=1

PYTHON=$TOOLS/python$VER/python.exe
if [ "$CPU" == "AMD64" -a -d $TOOLS/amd64 ]; then
    PYTHON=$TOOLS/amd64/python$VER/python.exe
fi

mkdir -p dist
if [ "$CPU" != "AMD64" ]; then
    if [ $CHARTYPE = both -o $CHARTYPE = ansi ]; then
	rm -f wx/*.pyd
	$PYTHON setup.py HYBRID=1 build_ext --inplace UNICODE=0 EP_ADD_OPTS=1
	$PYTHON -u distrib/make_installer.py UNICODE=0
    fi
fi
if [ $CHARTYPE = both -o $CHARTYPE = unicode ]; then
    rm -f wx/*.pyd
    $PYTHON setup.py HYBRID=1 build_ext --inplace UNICODE=1 EP_ADD_OPTS=1
    $PYTHON -u distrib/make_installer.py UNICODE=1
fi


echo "Building the developer package..."
WXWIN=`cygpath -w $WXDIR`
export WXWIN
export CPU
$TOOLS/4dos/4nt.exe /c distrib/makedev.bat $VERSION


echo "Copying installers to $DESTDIR..."
mv dist/wxPython* $DESTDIR
cd $DESTDIR


if [ $SKIPCLEAN != yes ]; then 
    echo "Cleaning up..."
    rm -fr $WXDIR || true
fi

echo "-=-=-=-  Goodbye!  -=-=-=-"
