-
Notifications
You must be signed in to change notification settings - Fork 315
/
config
executable file
·173 lines (155 loc) · 6.04 KB
/
config
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
#! /bin/sh
## config -- Simple shell script to get the values of basic R configure
## variables, or the header and library flags necessary for linking
## against R.
##
## Usage:
## R CMD config [options] [VAR]
## Copyright (C) 2002 The R Core Development Team
##
## This document is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2, or (at your option)
## any later version.
##
## This program is distributed in the hope that it will be useful, but
## WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
## General Public License for more details.
##
## A copy of the GNU General Public License is available via WWW at
## http://www.gnu.org/copyleft/gpl.html. You can also obtain it by
## writing to the Free Software Foundation, Inc., 59 Temple Place,
## Suite 330, Boston, MA 02111-1307, U.S.A.
revision='$Revision: 1.2 $'
version=`set - ${revision}; echo ${2}`
version="R configuration information retrieval script ${version}
Copyright (C) 2002 The R Core Development Team.
This is free software; see the GNU General Public Licence version 2
or later for copying conditions. There is NO warranty."
usage="Usage: R CMD config [options] [VAR]
Get the value of a basic R configure variable VAR which must be among
those listed in the 'Variables' section below, or the header and
library flags necessary for linking against R.
Options:
-h, --help print short help message and exit
-v, --version print version info and exit
--cppflags print pre-processor flags required to compile
a program using R as a shared library
--ldflags print linker flags needed for linking against
the R shared library
Variables:
CC C compiler command
CFLAGS C compiler flags
CPICFLAGS special flags for compiling C code to be turned
into a shared library
CPP C preprocessor
CPPFLAGS C/C++ preprocessor flags, e.g. -I<dir> if you
have headers in a nonstandard directory <dir>
CXX C++ compiler command
CXXCPP C++ preprocessor
CXXFLAGS C++ compiler flags
CXXPICFLAGS special flags for compiling C++ code to be
turned into a shared library
F2C FORTRAN-to-C converter command
F77 Fortran 77 compiler command
FFLAGS Fortran 77 compiler flags
FLIBS linker flags needed to link FORTRAN code
FPICFLAGS special flags for compiling FORTRAN code to be
turned into a shared library
LDFLAGS linker flags, e.g. -L<dir> if you have libraries
in a nonstandard directory <dir>
MAKE Make command
SHLIB_CFLAGS additional CFLAGS used when building shared
libraries
SHLIB_CXXLD command for linking shared libraries which
contain object files from a C++ compiler
SHLIB_CXXLDFLAGS special flags used by SHLIB_CXXLD
SHLIB_FFLAGS additional FFLAGS used when building shared
libraries
SHLIB_LD command for linking shared libraries which
contain object files from a C or FORTRAN
compiler only
SHLIB_LDFLAGS special flags used by SHLIB_LD
BLAS_LIBS linker flags for the BLAS libraries used when
building R (empty if none were used)
TCLTK_CPPFLAGS flags needed for finding the tcl.h and tk.h headers
TCLTK_LIBS flags needed for linking against the Tcl and Tk
libraries
Report bugs to <r-bugs@r-project.org>."
## <NOTE>
## The variables are basically the precious configure variables (with
## the R_* and MAIN_* ones removed), plus FLIBS and BLAS_LIBS.
## One could use
## precious_configure_vars=`~/src/R/configure --help \
## | sed -n '/^Some influential/,/^[^ ]/p' \
## | sed '/^[^ ]/d' \
## | sed 's/^ //' \
## | cut -f1 -d ' ' \
## | sort \
## | uniq`
## to obtain the configure vars and hence create most of the above usage
## info as well as the list ok accepted variables below automatically.
makefiles="-f ${R_HOME}/etc/Makeconf -f ${R_HOME}/share/make/config.mk"
query="${MAKE} -s ${makefiles} print R_HOME=${R_HOME}"
LIBR=`eval $query VAR=LIBR`
var=
while test -n "${1}"; do
case "${1}" in
-h|--help)
echo "${usage}"; exit 0 ;;
-v|--version)
echo "${version}"; exit 0 ;;
--cppflags)
if test -z "${LIBR}"; then
echo "R was not built as a shared library" >&2
else
echo "-I${R_HOME}/include"
fi
exit 0
;;
--ldflags)
if test -z "${LIBR}"; then
echo "R was not built as a shared library" >&2
else
echo "${LIBR}"
fi
exit 0
;;
*)
if test -z "${var}"; then
var="${1}"
else
echo "ERROR: cannot query more than one variable" >&2
exit 1
fi
;;
esac
shift
done
ok_c_vars="CC CFLAGS CPICFLAGS CPP CPPFLAGS"
ok_cxx_vars="CXX CXXCPP CXXFLAGS CXXPICFLAGS"
ok_f77_vars="F2C F77 FFLAGS FPICFLAGS FLIBS"
ok_ld_vars="LDFLAGS"
ok_shlib_vars="SHLIB_CFLAGS SHLIB_CXXLD SHLIB_CXXLDFLAGS SHLIB_FFLAGS SHLIB_LD SHLIB_LDFLAGS"
ok_tcltk_vars="TCLTK_CPPFLAGS TCLTK_LIBS"
ok_other_vars="BLAS_LIBS MAKE"
## Can we do this elegantly using case?
var_ok=no
for v in ${ok_c_vars} ${ok_cxx_vars} ${ok_f77_vars} ${ok_ld_vars} \
${ok_shlib_vars} ${ok_tcltk_vars} ${ok_other_vars}; do
if test "${var}" = "${v}"; then
var_ok=yes
break
fi
done
if test "${var_ok}" = yes; then
eval "${query} VAR=${var}"
else
echo "ERROR: no information for variable '${var}'"
exit 1
fi
### Local Variables: ***
### mode: sh ***
### sh-indentation: 2 ***
### End: ***