#!/bin/bash

set -e

MINGW=x86_64-w64-mingw32
MINGW_PATH=/opt/mingw64

JOBS="-j 4"

if [ ! -f Makefile ]; then
  cd ../..
fi

export PATH=`pwd`/data/windows:$MINGW_PATH/bin:$MINGW_PATH/$MINGW/bin:$PATH
export AR=$MINGW-ar
export CC=$MINGW-gcc
export CXX=$MINGW-g++
export MOC=$MINGW-moc
export RCC=$MINGW-rcc
export UIC=$MINGW-uic
export STRIP=$MINGW-strip
export WINDRES=$MINGW-windres

export WINEPREFIX=~/.winepy3_x64

export PYTHON_EXE="C:\\\\Python33\\\\python.exe"

export CXFREEZE="wine $PYTHON_EXE C:\\\\Python33\\\\Scripts\\\\cxfreeze"
export PYUIC="wine $PYTHON_EXE C:\\\\Python33\\\\Lib\\\\site-packages\\\\PyQt4\\\\uic\\\\pyuic.py"
export PYRCC="wine C:\\\\Python33\\\\Lib\\\\site-packages\\\\PyQt4\\\\pyrcc4.exe -py3"

export CFLAGS="-DPTW32_STATIC_LIB -I$MINGW_PATH/include"
export CXXFLAGS="-DPTW32_STATIC_LIB -DWIN32 -I$MINGW_PATH/include"

# Clean build
make clean

# Build PyQt4 resources
make $JOBS UI RES

# Build C++ tools
make $JOBS -C c++/jackmeter    cadence-jackmeter.exe
make $JOBS -C c++/xycontroller cadence-xycontroller.exe
mv c++/*/*.exe data/windows

rm -rf ./data/windows/Catarina
rm -rf ./data/windows/Catia
cp ./src/catarina.py ./src/catarina.pyw
cp ./src/catia.py ./src/catia.pyw
$CXFREEZE --include-modules=re --target-dir=".\\data\\windows\\Catarina" ".\\src\\catarina.pyw"
$CXFREEZE --include-modules=re --target-dir=".\\data\\windows\\Catia" ".\\src\\catia.pyw"
rm -f ./src/catarina.pyw
rm -f ./src/catia.pyw

cd data/windows
mv cadence-jackmeter.exe    Cadence-JackMeter.exe
mv cadence-xycontroller.exe Cadence-XYController.exe

cp $WINEPREFIX/drive_c/windows/syswow64/python33.dll Catarina/
cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtCore4.dll   Catarina/
cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtGui4.dll    Catarina/
cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtOpenGL4.dll Catarina/
cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtSvg4.dll    Catarina/
cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtXml4.dll    Catarina/
cp -r $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/plugins/imageformats/ Catarina/
cp -r $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/plugins/iconengines/  Catarina/

cp $WINEPREFIX/drive_c/windows/syswow64/python33.dll Catia/
cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtCore4.dll   Catia/
cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtGui4.dll    Catia/
cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtOpenGL4.dll Catia/
cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtSvg4.dll    Catia/
cp -r $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/plugins/imageformats/ Catia/
cp -r $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/plugins/iconengines/  Catia/

rm -rf ./includes/
rm -rf ./lib/

# Build unzipfx
make -C unzipfx-catarina -f Makefile.win32
make -C unzipfx-catia -f Makefile.win32

# Create static build
rm -f Catarina.zip Catia.zip
zip -r -9 Catarina.zip Catarina
zip -r -9 Catia.zip Catia

rm -f Catarina.exe Catia.exe
cat unzipfx-catarina/unzipfx2cat.exe Catarina.zip > Catarina.exe
cat unzipfx-catia/unzipfx2cat.exe Catia.zip > Catia.exe
chmod +x Catarina.exe
chmod +x Catia.exe

# Cleanup
make -C unzipfx-catarina -f Makefile.win32 clean
make -C unzipfx-catia -f Makefile.win32 clean
rm -f Catarina.zip Catia.zip
rm -f unzipfx-*/*.exe

# Final Zip
rm -rf Cadence-0.8-beta2
mkdir -p Cadence-0.8-beta2
cp *.exe Cadence-0.8-beta2
cp README Cadence-0.8-beta2
zip -r -9 Cadence-0.8-beta2-win64.zip Cadence-0.8-beta2

# Testing:
echo "export WINEPREFIX=~/.winepy3_x64"
echo "wine $PYTHON_EXE ../../src/catia.py"
