|
1 | 1 | #!/usr/bin/env bash
|
2 |
| -# Anticonf (tm) script by Jeroen Ooms (2020) |
3 |
| -# This script will query 'pkg-config' for the required cflags and ldflags. |
4 |
| -# If pkg-config is unavailable or does not find the library, try setting |
5 |
| -# INCLUDE_DIR and LIB_DIR manually via e.g: |
6 |
| -# R CMD INSTALL --configure-vars='INCLUDE_DIR=/.../include LIB_DIR=/.../lib' |
7 |
| - |
8 |
| -# Library settings |
9 |
| -PKG_CONFIG_NAME="libzmq" |
10 |
| -PKG_DEB_NAME="libzmq3-dev" |
11 |
| -PKG_RPM_NAME="zeromq-devel" |
12 |
| -PKG_EPEL_NAME="zeromq3-devel" |
13 |
| -PKG_CSW_NAME="libzmq1_dev" |
14 |
| -PKG_BREW_NAME="zeromq" |
15 |
| -PKG_TEST_HEADER="<zmq.h>" |
16 |
| -PKG_LIBS="-lzmq" |
17 |
| - |
18 |
| -# Use pkg-config if available |
19 |
| -if [ $(command -v pkg-config) ]; then |
20 |
| - PKGCONFIG_CFLAGS=$(pkg-config --cflags --silence-errors ${PKG_CONFIG_NAME}) |
21 |
| - PKGCONFIG_LIBS=$(pkg-config --libs ${PKG_CONFIG_NAME}) |
22 |
| -fi |
23 |
| - |
24 |
| -# Check for custom locations |
25 |
| -if [ "$INCLUDE_DIR" ] || [ "$LIB_DIR" ]; then |
26 |
| - echo "Found INCLUDE_DIR and/or LIB_DIR!" |
27 |
| - PKG_CFLAGS="-I$INCLUDE_DIR $PKG_CFLAGS" |
28 |
| - PKG_LIBS="-L$LIB_DIR $PKG_LIBS" |
29 |
| -elif [ "$PKGCONFIG_CFLAGS" ] || [ "$PKGCONFIG_LIBS" ]; then |
30 |
| - echo "Found pkg-config cflags and libs!" |
31 |
| - PKG_CFLAGS=${PKGCONFIG_CFLAGS} |
32 |
| - PKG_LIBS=${PKGCONFIG_LIBS} |
33 |
| -elif [[ "$OSTYPE" == "darwin"* ]]; then |
34 |
| - if [ $(command -v brew) ]; then |
35 |
| - BREWDIR=$(brew --prefix) |
36 |
| - PKG_CFLAGS="-I$BREWDIR/opt/$PKG_BREW_NAME/include" |
37 |
| - PKG_LIBS="-L$BREWDIR/opt/$PKG_BREW_NAME/lib $PKG_LIBS" |
38 |
| - else |
39 |
| - curl -sfL "https://autobrew.github.io/scripts/$PKG_BREW_NAME" > autobrew |
40 |
| - source autobrew |
41 |
| - fi |
42 |
| -fi |
43 |
| - |
44 |
| -# For debugging |
45 |
| -echo "Using PKG_CFLAGS=$PKG_CFLAGS" |
46 |
| -echo "Using PKG_LIBS=$PKG_LIBS" |
47 |
| - |
48 |
| -# Find compiler |
49 | 2 | CXX=$(${R_HOME}/bin/R CMD config CXX)
|
50 | 3 | CXXFLAGS=$(${R_HOME}/bin/R CMD config CXXFLAGS)
|
51 | 4 | CPPFLAGS=$(${R_HOME}/bin/R CMD config CPPFLAGS)
|
52 | 5 |
|
53 |
| -# Test for libzmq |
54 |
| -echo "#include $PKG_TEST_HEADER" | ${CXX} -E ${CPPFLAGS} ${PKG_CFLAGS} ${CXXFLAGS} -xc++ - >/dev/null 2>configure.log |
| 6 | +PKG_LIBS=-lunwind |
55 | 7 |
|
56 |
| -if [ $? -ne 0 ]; then |
57 |
| - echo "------------------------------[ ANTICONF ]------------------------------" |
58 |
| - echo "Configuration failed because $PKG_CONFIG_NAME was not found. Try installing:" |
59 |
| - echo " * deb: $PKG_DEB_NAME (Debian, Ubuntu, etc)" |
60 |
| - echo " * rpm: $PKG_RPM_NAME (Fedora, CentOS 7)" |
61 |
| - echo " * rpm: $PKG_EPEL_NAME (RHEL 6, CentOS 6, from EPEL)" |
62 |
| - echo " * csw: $PKG_CSW_NAME (Solaris)" |
63 |
| - echo "If $PKG_CONFIG_NAME is already installed, check that 'pkg-config' is in your" |
64 |
| - echo "PATH and PKG_CONFIG_PATH contains a $PKG_CONFIG_NAME.pc file. If pkg-config" |
65 |
| - echo "is unavailable you can set INCLUDE_DIR and LIB_DIR manually via:" |
66 |
| - echo "R CMD INSTALL --configure-vars='INCLUDE_DIR=... LIB_DIR=...'" |
67 |
| - echo "---------------------------[ ERROR MESSAGE ]-----------------------------" |
68 |
| - cat configure.log |
69 |
| - echo "-------------------------------------------------------------------------" |
70 |
| - exit 1 |
| 8 | +cd src/libzmq |
| 9 | +if [ ! -f src/.libs/libzmq.a ]; then |
| 10 | + ./autogen.sh |
| 11 | + CXXFLAGS="$CXXFLAGS -fPIC" ./configure --enable-drafts --disable-libbsd --disable-curve |
| 12 | + make |
71 | 13 | fi
|
| 14 | +cd - |
72 | 15 |
|
73 |
| -# Write to Makevars |
74 | 16 | sed -e "s|@cflags@|$PKG_CFLAGS|" -e "s|@libs@|$PKG_LIBS|" src/Makevars.in > src/Makevars
|
75 |
| - |
76 |
| -# Success |
77 |
| -exit 0 |
0 commit comments