-
Notifications
You must be signed in to change notification settings - Fork 997
/
Copy pathconfigure
executable file
·86 lines (78 loc) · 3.64 KB
/
configure
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
#!/bin/sh
# Let's keep this simple. If pkg-config is available, use it. Otherwise print
# the helpful message to aid user if compilation does fail. Note 25 of R-exts:
# "[pkg-config] is available on the machines used to produce the CRAN binary packages"
# This script should pass `checkbashisms` for portability; e.g. CRAN's Solaris 10,
# and R-exts note 24 now suggests 'checkbashisms' as we proposed.
msg=0
pkg-config --version >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "*** pkg-config is not installed."
msg=1
else
pkg-config --exists zlib
if [ $? -ne 0 ]; then
echo "*** pkg-config is installed but 'pkg-config --exists zlib' did not return 0."
msg=1
else
lib=`pkg-config --libs zlib`
expr "$lib" : ".*-lz$" >/dev/null
if [ $? -ne 0 ]; then
expr "$lib" : ".*-lz " >/dev/null
# would use \b in one expr but MacOS does not support \b
if [ $? -ne 0 ]; then
echo "*** pkg-config is installed and 'pkg-config --exists zlib' succeeds but"
echo "*** 'pkg-config --libs zlib' returns '${lib}' which does not include the standard -lz."
msg=1
fi
fi
fi
fi
if [ $msg -ne 0 ]; then
echo "*** Compilation will now be attempted and if it works you can ignore this message. However,"
echo "*** if compilation fails, try 'locate zlib.h zconf.h' and ensure the zlib development library"
echo "*** is installed :"
echo "*** deb: zlib1g-dev (Debian, Ubuntu, ...)"
echo "*** rpm: zlib-devel (Fedora, EPEL, ...)"
echo "*** brew: zlib (OSX)"
echo "*** Note that zlib is required to compile R itself so you may find the advice in the R-admin"
echo "*** guide helpful regarding zlib. On Debian/Ubuntu, zlib1g-dev is a dependency of r-base as"
echo "*** shown by 'apt-cache showsrc r-base | grep ^Build-Depends | grep zlib', and therefore"
echo "*** 'sudo apt-get build-dep r-base' should be sufficient too."
echo "*** To silence this message, please ensure that :"
echo "*** 1) 'pkg-config --exists zlib' succeeds (i.e. \$? -eq 0)"
echo "*** 2) 'pkg-config --libs zlib' contains -lz"
echo "*** Compilation will now be attempted ..."
exit 0
fi
version=`pkg-config --modversion zlib`
echo "zlib ${version} is available ok"
# Find R compilers
CC=`${R_HOME}/bin/R CMD config CC`
CFLAGS=`${R_HOME}/bin/R CMD config CFLAGS`
# Test if we have a OPENMP compatible compiler
# Aside: ${SHLIB_OPENMP_CFLAGS} does not appear to be defined at this point according to Matt's testing on
# Linux, and R CMD config SHLIB_OPENMP_CFLAGS also returns 'no information for variable'. That's not
# inconsistent with R-exts$1.2.1.1, though, which states it's 'available for use in Makevars' (so not
# necessarily here in configure). Hence use -fopenmp directly for this detection step.
# printf not echo to pass checkbashisms w.r.t. to the \n
printf "#include <omp.h>\nint main () { return omp_get_num_threads(); }" | ${CC} ${CFLAGS} -fopenmp -xc - >/dev/null 2>&1 || R_NO_OPENMP=1;
rm a.out >/dev/null 2>&1
# Write to Makevars
if [ $R_NO_OPENMP ]; then
echo "*** OpenMP not supported! data.table uses OpenMP to automatically"
echo "*** parallelize operations like sorting, grouping, file reading, etc."
echo "*** For details on how to install the necessary toolchains on your OS see:"
echo "*** https://github.com/Rdatatable/data.table/wiki/Installation"
echo "*** Continuing installation without OpenMP support..."
sed -e "s|@openmp_cflags@||" src/Makevars.in > src/Makevars
else
echo "OpenMP supported"
sed -e "s|@openmp_cflags@|\$(SHLIB_OPENMP_CFLAGS)|" src/Makevars.in > src/Makevars
fi
# compiler info to output #3291
if [ "$CC"=~"gcc" ]; then
GCCV=`${CC} -dumpfullversion -dumpversion`
echo "$CC $GCCV"
fi
exit 0