#!/bin/sh

# Library version
LIB_VER="722bf46"

# Initialise
PKG_CFLAGS=""
PKG_LIBS="-lnng"
TLS_SUP=0

# Find compiler
CC=`${R_HOME}/bin/R CMD config CC`
CFLAGS=`${R_HOME}/bin/R CMD config CFLAGS`

# Detect mbedtls
if [ -d "/usr/local/include/mbedtls" ] || [ -d "/usr/include/mbedtls" ] || [ -d "/usr/local/opt/mbedtls" ]
then
  echo "Found mbedtls... proceeding with TLS support"
  PKG_LIBS="$PKG_LIBS -lmbedtls -lmbedx509 -lmbedcrypto"
  TLS_SUP=1
elif [ "$NANONEXT_TLS" ]
then
  echo "TLS flag set... proceeding with TLS support"
  PKG_LIBS="$PKG_LIBS -lmbedtls -lmbedx509 -lmbedcrypto"
  TLS_SUP=1
fi

# Detect -latomic linker flag for ARM architectures (Raspberry Pi etc.)
echo "#include <stdint.h>
uint64_t v;
int main() {
    return (int)__atomic_load_n(&v, __ATOMIC_ACQUIRE);
}" | ${CC} -x c - -o /dev/null > /dev/null 2>&1
if [ $? -ne 0 ]
then
  echo "Adding -latomic linker flag"
  PKG_LIBS="$PKG_LIBS -latomic"
fi

# Use system lib or download and compile from source (default)
if [ "$NANONEXT_SYS" ]
then
  echo "System flag set... using libnng installation in /usr/local"
  PKG_CFLAGS="-I/usr/local/include $PKG_CFLAGS"
  PKG_LIBS="-L/usr/local/lib $PKG_LIBS"
else
  echo "Downloading libnng source..."
  curl -s -L https://api.github.com/repos/nanomsg/nng/tarball/$LIB_VER -o nng.tar.gz
  gzip -dc nng.tar.gz | tar -xf -
  rm -f nng.tar.gz
  cd nanomsg-nng-$LIB_VER
  mkdir build
  cd build
  echo "Compiling using cmake..."
  which cmake
  if [ $? -ne 0 ]
  then
    export PATH=$PATH:/Applications/CMake.app/Contents/bin
  fi
  if [ "$TLS_SUP" -ne 0 ]
  then
    cmake -DCMAKE_POSITION_INDEPENDENT_CODE=1 -DCMAKE_COLOR_MAKEFILE=0 -DNNG_ENABLE_TLS=1 -DNNG_ELIDE_DEPRECATED=1 -DNNG_TESTS=0 -DNNG_TOOLS=0 ..
  else
    cmake -DCMAKE_POSITION_INDEPENDENT_CODE=1 -DCMAKE_COLOR_MAKEFILE=0 -DNNG_ELIDE_DEPRECATED=1 -DNNG_TESTS=0 -DNNG_TOOLS=0 ..
  fi
  cmake --build .
  cd ../..
  mkdir lib
  mv -f nanomsg-nng-$LIB_VER/build/libnng.a lib
  mv -f nanomsg-nng-$LIB_VER/include ./
  rm -rf nanomsg-nng-$LIB_VER
  PKG_CFLAGS="-I`pwd`/include $PKG_CFLAGS"
  PKG_LIBS="-L`pwd`/lib $PKG_LIBS"
fi

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

# Success
exit 0

