#!/bin/sh
CXX=$(${R_HOME}/bin/R CMD config CXX)
CXXFLAGS=$(${R_HOME}/bin/R CMD config CXXFLAGS)
CPPFLAGS=$(${R_HOME}/bin/R CMD config CPPFLAGS)

if [ -z "$CLUSTERMQ_USE_SYSTEM_LIBZMQ" ]; then
cat <<EOF >libzmq_test.c
#include <zmq.h>
int main() {
    #if defined(ZMQ_BUILD_DRAFT_API) && ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 3, 0)
    return 0;
    #endif
    return 1;
}
EOF

  if $(cc -o libzmq_test libzmq_test.c $(pkg-config --cflags --libs libzmq) >/dev/null 2>&1); then
    echo "* system has libzmq -> linking system library"
    if $(./libzmq_test 2>/dev/null); then
      echo "* libzmq has DRAFT API -> enabling crash monitor feature"
      CLUSTERMQ_USE_SYSTEM_LIBZMQ=1
    else
      echo "* libzmq without DRAFT API found -> disabling crash monitor feature"
      CLUSTERMQ_USE_SYSTEM_LIBZMQ=1
    fi
  else
    echo "* no system libzmq found -> using bundled libzmq"
    CLUSTERMQ_USE_SYSTEM_LIBZMQ=0
  fi
  rm -f libzmq_test.c libzmq_test
fi

if [ "$CLUSTERMQ_USE_SYSTEM_LIBZMQ" -eq "0" ]; then
  PKG_CFLAGS="-DZMQ_STATIC -DZMQ_BUILD_DRAFT_API=1 -fPIC -Ilibzmq/include -Icppzmq"
  PKG_LIBS="libzmq/src/.libs/libzmq.a"

  ./src/patch_libzmq.sh

  if [ ! -f src/libzmq/src/.libs/libzmq.a ]; then
    cd src/libzmq

    CXX="$CXX" CXXFLAGS="$CXXFLAGS -fPIC" CPPFLAGS="$CPPFLAGS" ./configure \
        --enable-drafts \
        --enable-static \
        --disable-shared \
        --disable-maintainer-mode \
        --disable-Werror \
        --disable-libbsd \
        --disable-libunwind \
        --disable-perf \
        --disable-curve \
        --disable-curve-keygen \
        --disable-ws \
        --disable-radix-tree
    make || exit 1
    cd -
  fi
else
  PKG_CFLAGS="$(pkg-config --cflags libzmq) -fPIC -Icppzmq"
  PKG_LIBS="$(pkg-config --libs libzmq)"
fi

sed -e "s|@cflags@|$PKG_CFLAGS|" -e "s|@libs@|$PKG_LIBS|" src/Makevars.in > src/Makevars
