# Based on davidgohel/gdtools package source with minimal modifications:
# https://github.com/davidgohel/gdtools/blob/master/configure

# Anticonf script by Jeroen Ooms (2020)
# The script will try 'pkg-config' to find required cflags and ldflags.
# Make sure this executable is in PATH when installing the package.
# Alternatively, you can set INCLUDE_DIR and LIB_DIR manually:
# R CMD INSTALL --configure-vars='INCLUDE_DIR=/.../include LIB_DIR=/.../lib'

# Library settings
PKG_CONFIG_NAME="cairo freetype2"
PKG_DEB_NAME="libcairo2-dev"
PKG_RPM_NAME="cairo-devel"
PKG_CSW_NAME="libcairo_dev"
PKG_BREW_NAME="cairo"
PKG_LIBS="-lcairo -lfreetype"
PKG_TEST_FILE="src/tests/sysdeps.c"

# Prefer static linking on MacOS
if [ `uname` = "Darwin" ]; then
PKG_CONFIG_NAME="--static $PKG_CONFIG_NAME"
  if [ `arch` = "i386" ]; then
    export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/opt/libffi/lib/pkgconfig"
  fi
fi

# Use pkg-config if available
if [ `command -v pkg-config` ]; then
  PKGCONFIG_CFLAGS=`pkg-config --cflags ${PKG_CONFIG_NAME}`
  PKGCONFIG_LIBS=`pkg-config --libs ${PKG_CONFIG_NAME}`
fi

# On CRAN do not use pkgconfig cairo (which depends on XQuartz)
if [ -d "/Builds/CRAN-QA-Simon" ] || [ -d "/Volumes/Builds" ]; then
  unset PKGCONFIG_CFLAGS
  unset PKGCONFIG_LIBS
fi

# Note that cflags may be empty in case of success
if [ "$INCLUDE_DIR" ] || [ "$LIB_DIR" ]; then
  echo "Found INCLUDE_DIR and/or LIB_DIR!"
  PKG_CFLAGS="-I$INCLUDE_DIR $PKG_CFLAGS"
  PKG_LIBS="-L$LIB_DIR $PKG_LIBS"
elif [ "$PKGCONFIG_CFLAGS" ] || [ "$PKGCONFIG_LIBS" ]; then
  echo "Found pkg-config cflags and libs!"
  PKG_CFLAGS=${PKGCONFIG_CFLAGS}
  PKG_LIBS=${PKGCONFIG_LIBS}
elif [ `uname` = "Darwin" ]; then
  brew --version 2>/dev/null
  if [ $? -eq 0 ]; then
    BREWDIR=`brew --prefix`
    PKG_CFLAGS="-I$BREWDIR/include/cairo -I$BREWDIR/include/fontconfig -I$BREWDIR/include/freetype2"
    PKG_LIBS="-L$BREWDIR/lib $PKG_LIBS"
  else
    curl -sfL "https://autobrew.github.io/scripts/cairo" > autobrew
    . autobrew
  fi
fi

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

# For debugging
echo "Using PKG_CFLAGS=$PKG_CFLAGS"
echo "Using PKG_LIBS=$PKG_LIBS"

# Test configuration
${CC} ${CPPFLAGS} ${PKG_CFLAGS} ${CFLAGS} -E ${PKG_TEST_FILE} >/dev/null 2>configure.log
if [ $? -ne 0 ]; then
  echo "------------------------------[ CAIRO ]---------------------------------"
  echo "Info: Configuration failed to find cairo system library."
  echo "httpgd is fully functional without cairo, but some plot file formats"
  echo "will not be available."
  echo "If you want to install cairo see below error for troubleshooting."
  echo "-----------------------------[ ANTICONF ]-------------------------------"
  echo "Configuration failed to find libraries. Try installing:"
  echo " * deb: $PKG_DEB_NAME (Debian, Ubuntu)"
  echo " * rpm: $PKG_RPM_NAME (Fedora, CentOS, RHEL)"
  echo " * csw: $PKG_CSW_NAME (Solaris)"
  echo " * brew: $PKG_BREW_NAME (OSX)"
  echo "If $PKG_CONFIG_NAME are already installed, check that 'pkg-config' is in your"
  echo "PATH and PKG_CONFIG_PATH contains a $PKG_CONFIG_NAME.pc file. If pkg-config"
  echo "is unavailable you can set INCLUDE_DIR and LIB_DIR manually via:"
  echo "R CMD INSTALL --configure-vars='INCLUDE_DIR=... LIB_DIR=...'"
  echo "---------------------------[ ERROR MESSAGE ]----------------------------"
  cat configure.log
  echo "------------------------------------------------------------------------"
  PKG_CFLAGS="-DHTTPGD_NO_CAIRO"
  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
