From 3b32d3c1f6aac4b10e0accf4da8936992b793811 Mon Sep 17 00:00:00 2001 From: hrbrmstr Date: Mon, 10 Sep 2018 13:49:38 -0400 Subject: [PATCH] anticonf but no windows version since no libs for there yet --- cleanup | 2 ++ configure | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++ man/suffix_extract2.Rd | 2 +- src/Makevars | 9 +++++-- src/Makevars.in | 8 ++++++ 5 files changed, 86 insertions(+), 3 deletions(-) create mode 100755 cleanup create mode 100755 configure create mode 100644 src/Makevars.in diff --git a/cleanup b/cleanup new file mode 100755 index 0000000..3c020d3 --- /dev/null +++ b/cleanup @@ -0,0 +1,2 @@ +#!/bin/sh +rm -f src/Makevars diff --git a/configure b/configure new file mode 100755 index 0000000..9ca0db4 --- /dev/null +++ b/configure @@ -0,0 +1,68 @@ +# Anticonf (tm) script inspired by Jeroen Ooms (2015) +# This script will query 'pkg-config' for the required cflags and ldflags. +# If pkg-config is unavailable or does not find the library, try setting +# INCLUDE_DIR and LIB_DIR manually via e.g: +# R CMD INSTALL --configure-vars='INCLUDE_DIR=/.../include LIB_DIR=/.../lib' + +# Library settings +PKG_CONFIG_NAME="libpsl" +PKG_DEB_NAME="libpsl-dev" +PKG_RPM_NAME="libpsl-devel" +PKG_CSW_NAME="libpsl_dev" +PKG_TEST_HEADER="" +PKG_LIBS="-lpsl" +PKG_CFLAGS="" + +# Use pkg-config if available +pkg-config --version >/dev/null 2>&1 +if [ $? -eq 0 ]; then + PKGCONFIG_CFLAGS=`pkg-config --cflags ${PKG_CONFIG_NAME}` + case "$PKGCONFIG_CFLAGS" in + *PSL_STATICLIB*) PKGCONFIG_LIBS=`pkg-config --libs --static ${PKG_CONFIG_NAME}`;; + *) PKGCONFIG_LIBS=`pkg-config --libs ${PKG_CONFIG_NAME}`;; + esac +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} +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 +echo "#include $PKG_TEST_HEADER" | ${CC} ${CPPFLAGS} ${PKG_CFLAGS} ${CFLAGS} -E -xc - >/dev/null 2>&1 || R_CONFIG_ERROR=1; + +# Customize the error +if [ $R_CONFIG_ERROR ]; then + echo "------------------------- ANTICONF ERROR ---------------------------" + echo "Configuration failed because $PKG_CONFIG_NAME was not found. Try installing:" + echo " * deb: $PKG_DEB_NAME (Debian, Ubuntu, etc)" + echo " * rpm: $PKG_RPM_NAME (Fedora, CentOS, RHEL)" + echo " * csw: $PKG_CSW_NAME (Solaris)" + echo "If $PKG_CONFIG_NAME is 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 "--------------------------------------------------------------------" + exit 1; +fi + +# Write to Makevars +sed -e "s|@cflags@|$PKG_CFLAGS|" -e "s|@libs@|$PKG_LIBS|" src/Makevars.in > src/Makevars + +# Success +exit 0 diff --git a/man/suffix_extract2.Rd b/man/suffix_extract2.Rd index 0bfcfe9..cff1ac3 100644 --- a/man/suffix_extract2.Rd +++ b/man/suffix_extract2.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/RcppExports.R \name{suffix_extract2} \alias{suffix_extract2} -\title{Separate a domain into component parts} +\title{Separate a domain into component parts (\code{urltools} compatibility function)} \usage{ suffix_extract2(domains) } diff --git a/src/Makevars b/src/Makevars index 617bda5..2e8ecaa 100644 --- a/src/Makevars +++ b/src/Makevars @@ -1,3 +1,8 @@ CXX_STD = CXX11 -PKG_CXXFLAGS = -PKG_LIBS = -L. -lpsl \ No newline at end of file +PKG_CXXFLAGS=-I/usr/local/include +PKG_LIBS=-L/usr/local/lib -lpsl + +all: clean + +clean: + rm -f $(SHLIB) $(OBJECTS) diff --git a/src/Makevars.in b/src/Makevars.in new file mode 100644 index 0000000..1f514b2 --- /dev/null +++ b/src/Makevars.in @@ -0,0 +1,8 @@ +CXX_STD = CXX11 +PKG_CXXFLAGS=@cflags@ +PKG_LIBS=@libs@ + +all: clean + +clean: + rm -f $(SHLIB) $(OBJECTS)