#!/bin/bash

# NOTES:
# Define STATICLIB (see declspec.h) to ensure windows doesn't turn it all
# into a dll.

set -eu

EXCLUSIONS="--exclude=upnpc.c --exclude=testigddescparse.c \
            --exclude=testminiwget.c --exclude=testminixml.c \
            --exclude=testupnpreplyparse.c --exclude=minixmlvalid.c \
            --exclude=wingenminiupnpcstrings.c \
            --exclude=miniupnpcmodule.c"

mkdir -p libraries/miniupnpc
pushd libraries/miniupnpc

if [ "$#" -ne "1" ]
then
        echo usage: $0 \<miniupnpc_source_tarball\> >&2
        exit 1
fi
tar xvzf "$1" ${EXCLUSIONS} miniupnpc-1.*/*.h miniupnpc-1.*/*.c

rsync -av miniupnpc-1*/* .
rm -rf miniupnpc-1*

STRING_HDR="miniupnpcstrings.h"

echo -e "#ifndef __MINIUPNPCSTRINGS_H__" >> ${STRING_HDR}_tmp
echo -e "#define __MINIUPNPCSTRINGS_H__" >> ${STRING_HDR}_tmp
echo -e "#define OS_STRING \"CYPHESIS\"" >> ${STRING_HDR}_tmp
echo -e "#define MINIUPNPC_VERSION_STRING \"1.4\"" >> ${STRING_HDR}_tmp
echo -e "#endif /* __MINIUPNPCSTRINGS_H__ */" >> ${STRING_HDR}_tmp

if [ ! -f ${STRING_HDR} ] || ! cmp ${STRING_HDR}_tmp ${STRING_HDR}
then
    mv -f ${STRING_HDR}_tmp ${STRING_HDR}
else
    echo ${STRING_HDR} unchanged.
    rm -f ${STRING_HDR}_tmp
fi

SOURCES=""
MAKEFILE="Makefile.am"

for entry in *.c *.h
do
    if [ ${entry: -2:2} == ".c" -o ${entry: -2:2} == ".h" ]
    then
        SOURCES="${SOURCES} ${entry}"
    fi
done

echo > ${MAKEFILE}_tmp

if [ -n "${SOURCES}" ]
then
    echo -e "noinst_LIBRARIES = libminiupnpc.a\n" >> ${MAKEFILE}_tmp
    echo -e "INCLUDES = -I\$(top_srcdir)/libraries/miniupnpc\n" >> ${MAKEFILE}_tmp
    echo -e "libminiupnpc_a_SOURCES = ${SOURCES}\n" >> ${MAKEFILE}_tmp
fi

# If Makefile.am is new or changed, move it to the right name.
if [ ! -f ${MAKEFILE} ] || ! cmp ${MAKEFILE}_tmp ${MAKEFILE}
then
    mv -f ${MAKEFILE}_tmp ${MAKEFILE}
else
    echo ${MAKEFILE} unchanged.
    rm -f ${MAKEFILE}_tmp
fi

echo Check libraries/miniupnpc/Makefile.am is in configure.ac
