#!/bin/sh

# Path to the Windows cross compiler (mingw)
WINCROSS=/opt/xmingw/bin
WINLOCAL=/home/jm/H-win/local

set -e

if [ -z "$1" ]; then
    echo "build_release <version> [nobin]"
    exit 1
fi

TMP=tmp.build_release
RELDIR=`pwd`/Release
VER=$1
NOW=`date +%Y-%m-%d`

echo "Version: $VER - $NOW"

DATEw=`head -n 3 wpa_supplicant/ChangeLog | tail -n 1 | sed "s/ .*//"`
DATEh=`head -n 3 hostapd/ChangeLog | tail -n 1 | sed "s/ .*//"`

if [ "$DATEw" != "$NOW" -o "$DATEh" != "$NOW" ]; then
    echo "NOTE! Date mismatch in ChangeLog: wpa_supplicant $DATEw hostapd $DATEh != $NOW"
fi

if [ -r $TMP ]; then
    echo "Temporary directory '$TMP' exists. Remove it before running this."
    exit 1
fi

mkdir $TMP
mkdir -p $RELDIR

git-archive --format=tar --prefix=wpa-$VER/ HEAD \
	README COPYING patches src wpa_supplicant hostapd |
	gzip > $RELDIR/wpa-$VER.tar.gz
git-archive --format=tar --prefix=hostapd-$VER/ HEAD \
	README COPYING patches src hostapd |
	gzip > $RELDIR/hostapd-$VER.tar.gz
git-archive --format=tar --prefix=wpa_supplicant-$VER/ HEAD \
	README COPYING patches src wpa_supplicant |
	tar --directory=$TMP -xf -

cd $TMP
make -C wpa_supplicant-$VER/wpa_supplicant/doc/docbook man
rm -f wpa_supplicant-$VER/wpa_supplicant/doc/docbook/manpage.{links,refs}
tar czf $RELDIR/wpa_supplicant-$VER.tar.gz wpa_supplicant-$VER
cd ..
rm -r $TMP

if [ "$2" == "nobin" ]; then
    exit 0
fi

if [ -d $WINCROSS ]; then
    pushd $RELDIR

    PDIR=wpa_supplicant-$VER
    WDIR=wpa_supplicant-windows-bin-$VER
    tar xzf $PDIR.tar.gz
    mkdir "$WDIR"
    cd "$PDIR/wpa_supplicant"
    cat > .config <<EOF
CONFIG_DRIVER_NDIS=y
CONFIG_NATIVE_WINDOWS=y

CFLAGS += -I/opt/xmingw/i386-mingw32msvc/include/ddk
CC=i386-mingw32msvc-gcc
STRIP=i386-mingw32msvc-strip
PLATFORMSDKLIB=$WINLOCAL/lib
CONFIG_NDIS_EVENTS_INTEGRATED=y

CFLAGS += -I$WINLOCAL/include
LIBS += -L$WINLOCAL/lib
LIBS_w += -L$WINLOCAL/lib
LIBS_p += -L$WINLOCAL/lib

CONFIG_EAP_SIM=y
CONFIG_EAP_AKA=y
CONFIG_EAP_LEAP=y
CONFIG_EAP_FAST=y
CONFIG_EAP_TLS=y

CONFIG_CTRL_IFACE=y
CONFIG_EAP_FAST=y
CONFIG_EAP_MSCHAPV2=y
CONFIG_EAP_TTLS=y
CONFIG_EAP_PEAP=y
CONFIG_EAP_MD5=y
CONFIG_EAP_GTC=y
CONFIG_EAP_OTP=y
CONFIG_EAP_PAX=y
CONFIG_EAP_SAKE=y
CONFIG_EAP_PSK=y
CONFIG_EAP_TNC=y
CONFIG_PKCS12=y
CONFIG_PCSC=y

CONFIG_L2_PACKET=winpcap
CONFIG_MAIN=main_winsvc
CONFIG_BACKEND=winreg
CONFIG_ELOOP=eloop_win
CFLAGS += -DCONFIG_DEBUG_FILE
EOF

    # First, build the Windows service & registry version and rename it
    PATH=$PATH:$WINCROSS make windows-bin
    mv wpa_supplicant.exe wpasvc.exe

    # Then, build "the standard" wpa_supplicant.exe
    cat >> .config <<EOF
CONFIG_MAIN=main
CONFIG_BACKEND=file
EOF

    PATH=$PATH:$WINCROSS make windows-bin

    for i in COPYING; do
	unix2dos < ../$i > ../../"$WDIR"/$i
    done
    for i in README README-Windows.txt wpa_supplicant.conf; do
	unix2dos < $i > ../../"$WDIR"/$i
    done
    mv *.exe ../../"$WDIR"
    cp win_example.reg ../../"$WDIR"

    cd wpa_gui-qt4
    PATH=$PATH:$WINCROSS ./setup-mingw-cross-compiling
    PATH=$PATH:$WINCROSS make
    cp release/wpa_gui.exe ../../../"$WDIR"
    cd ../../..
    rm -rf "$PDIR"
    zip "$WDIR.zip" "$WDIR"/*
    rm -rf "$WDIR"

    popd
fi

ls -l $RELDIR/*$VER*

exit 0