#!/bin/sh

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

set -e

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

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

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

mkdir $TMP
cd $TMP

cvs export -D now -d "$DIR" hostap

cd "$DIR"

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

cd ..
mkdir -p $RELDIR

# New style tarballs
mv $DIR/wpa_supplicant wpa_supplicant-$VER
cp $DIR/COPYING wpa_supplicant-$VER
cp $DIR/hostapd/{eloop*.[ch],common.[ch],md5.[ch],md4.c,rc4.[ch],sha1.[ch],sha256.[ch],aes_wrap.[ch],aes.[ch],des.c,radius.[ch],radius_client.[ch],ip_addr.[ch],os*[ch],includes.h,build_config.h,wpa_common.[ch],state_machine.h,ieee802_11_defs.h} wpa_supplicant-$VER
cp $DIR/utils/wireless_copy.h wpa_supplicant-$VER
cd wpa_supplicant-$VER
cat Makefile | sed "s%../hostapd/%%g" > Makefile.tmp
mv -f Makefile.tmp Makefile
cat wpa_gui/wpa_gui.pro | sed "s%../hostapd/%%g" > wpa_gui.pro.tmp
mv -f wpa_gui.pro.tmp wpa_gui/wpa_gui.pro
cat wpa_gui-qt4/wpa_gui.pro | sed "s%../hostapd/%%g" > wpa_gui.pro.tmp
mv -f wpa_gui.pro.tmp wpa_gui-qt4/wpa_gui.pro
cd doc/docbook
make man
rm -f manpage.links manpage.refs
cd ../../..
tar czf $RELDIR/wpa_supplicant-$VER.tar.gz wpa_supplicant-$VER

mv $DIR/hostapd hostapd-$VER
cp wpa_supplicant-$VER/l2_packet*.[ch] hostapd-$VER
cp wpa_supplicant-$VER/{,eap_}defs.h hostapd-$VER
cp wpa_supplicant-$VER/{tls.h,tls_openssl.c,tls_gnutls.c,tls_none.c} hostapd-$VER
cp wpa_supplicant-$VER/ms_funcs.[ch] hostapd-$VER
cp wpa_supplicant-$VER/crypto.[ch] hostapd-$VER
cp wpa_supplicant-$VER/eap_common.[ch] hostapd-$VER
cp wpa_supplicant-$VER/eap_ttls.h hostapd-$VER
cp wpa_supplicant-$VER/eap_sim_common.[ch] hostapd-$VER
cp wpa_supplicant-$VER/eap_pax_common.[ch] hostapd-$VER
cp wpa_supplicant-$VER/eap_psk_common.[ch] hostapd-$VER
cp wpa_supplicant-$VER/eap_sake_common.[ch] hostapd-$VER
cp wpa_supplicant-$VER/eap_gpsk_common.[ch] hostapd-$VER
cp wpa_supplicant-$VER/version.h hostapd-$VER
cp wpa_supplicant-$VER/wpa_ctrl.[ch] hostapd-$VER
cp $DIR/COPYING hostapd-$VER
cp $DIR/utils/wireless_copy.h hostapd-$VER
cd hostapd-$VER
cat Makefile | sed "s%\(DIR_WPA_SUPPLICANT=\).*%\1.%" > Makefile.tmp
mv -f Makefile.tmp Makefile
cd ..
tar czf $RELDIR/hostapd-$VER.tar.gz hostapd-$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"
    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_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 README README-Windows.txt wpa_supplicant.conf; do
	unix2dos < $i > ../"$WDIR"/$i
    done
    mv *.exe ../"$WDIR"
    cp win_example.reg ../"$WDIR"

    cd wpa_gui
    PATH=$QT4HOSTBIN:$PATH:$WINCROSS ./setup-mingw-cross-compiling
    PATH=$QT4HOSTBIN:$PATH:$WINCROSS make
    cp release/wpa_gui.exe ../../"$WDIR"
    cd ..

    cd ..
    rm -rf "$PDIR"
    zip "$WDIR.zip" "$WDIR"/*
    rm -rf "$WDIR"

    popd
fi

ls -l $RELDIR/*$VER*


exit 0
