#!/bin/sh
CC=$(${R_HOME}/bin/R CMD config CC)
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
  if $($CC -o test_libzmq src/util/test_libzmq.c $(pkg-config --cflags --libs libzmq) >/dev/null 2>&1); then
    echo "* system has libzmq -> linking system library"
    if $(./test_libzmq 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 test_libzmq
fi

if ! $($CXX -o test_cpp11 src/util/test_cpp11.cpp >/dev/null 2>&1); then
  echo "ERROR: compiler needs full c++11 support (gcc>=5, clang>=3.3) -> check 'cc --version'"
  exit 1
fi
rm -f test_cpp11

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/util/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
