Repository navigation
Expand file tree
/
Copy pathconfigure
More file actions
executable file
·93 lines (83 loc) · 3.45 KB
/
Copy pathconfigure
File metadata and controls
executable file
·93 lines (83 loc) · 3.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/bin/bash
# Anticonf (tm) script by Jeroen Ooms & Murat Tasan (2017)
# This script will prefer cflags (specifically includefile dirs) and lib dirs
# in the following order of precedence:
# (1) INCLUDE_DIR or LIB_DIR entered explicitly on the command line, e.g.
# R CMD INSTALL --configure-vars='INCLUDE_DIR=/.../include LIB_DIR=/.../lib'
# (2) Values found via 'pkg-config' for the libpq package.
# (3) Values found via 'pg_config' given a PostgreSQL installation.
# Library settings
PKG_CONFIG_NAME="libpq"
PKG_DEB_NAME="libpq-dev"
PKG_RPM_NAME="postgresql-devel"
PKG_AMZ_RPM_NAMES="postgreql8-devel, psstgresql92-devel, postgresql93-devel, or postgresql94-devel"
PKG_CSW_NAME="postgresql_dev"
PKG_BREW_NAME="postgresql"
PKG_TEST_HEADER="<libpq-fe.h>"
PKG_LIBS="-lpq"
PKG_LIBS_STATIC="-lpq -lssl -lcrypto -lldap"
# pkg-config values (if available)
if [ $(command -v pkg-config) ]; then
PKGCONFIG_CFLAGS=$(pkg-config --cflags --silence-errors ${PKG_CONFIG_NAME})
PKGCONFIG_LIBS=$(pkg-config --libs --silence-errors ${PKG_CONFIG_NAME})
fi
# pg_config vlaues (if available)
if [ $(command -v pg_config) ]; then
PG_INC_DIR=$(pg_config --includedir)
PG_LIB_DIR=$(pg_config --libdir)
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 "Using pkg-config cflags and libs!"
PKG_CFLAGS=${PKGCONFIG_CFLAGS}
PKG_LIBS=${PKGCONFIG_LIBS}
elif [ "$PG_INC_DIR" ] || [ "$PG_LIB_DIR" ]; then
echo "Using pg_config includedir and libdir!"
PKG_CFLAGS="-I${PG_INC_DIR}"
PKG_LIBS="-L${PG_LIB_DIR} ${PKG_LIBS}"
elif [[ "$OSTYPE" == "darwin"* ]]; then
if [ $(command -v brew) ]; then
BREWDIR=$(brew --prefix)
else
curl -sfL "https://jeroen.github.io/autobrew/$PKG_BREW_NAME" > autobrew
source autobrew
fi
PKG_CFLAGS="-I$BREWDIR/opt/postgresql/include"
PKG_LIBS="-L$BREWDIR/opt/{openssl,postgresql}/lib $PKG_LIBS"
fi
# For debugging
echo "Using PKG_CFLAGS=$PKG_CFLAGS"
echo "Using PKG_LIBS=$PKG_LIBS"
# 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)
# 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, EPEL)"
echo " * rpm: $PKG_AMZ_RPM_NAMES (Amazon Linux)"
echo " * csw: $PKG_CSW_NAME (Solaris)"
echo " * brew: $PKG_BREW_NAME (OSX)"
echo "If $PKG_CONFIG_NAME is already installed, check that either:"
echo "(i) 'pkg-config' is in your PATH AND PKG_CONFIG_PATH contains"
echo " a $PKG_CONFIG_NAME.pc file; or"
echo "(ii) 'pg_config' is in your PATH."
echo "If neither can detect $PGK_CONFIG_NAME, you can set INCLUDE_DIR"
echo "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