blob: eb121f6e8ae0a3f90d0f187f4ae6449d910aaa89 [file] [log] [blame]
#
# ${R_HOME}/bin/COMPILE
# @configure_input@
revision='$Rev$'
version=`set - ${revision}; echo ${2}`
version="R compilation front end: ${R_VERSION} (r${version})
Copyright (C) 2000-2018 The R Core Team.
This is free software; see the GNU General Public License version 2 or
later for copying conditions. There is NO warranty."
usage="Usage: R CMD COMPILE [options] files
Compile the specified files for subsequent collection into a shared
library using 'R CMD SHLIB' or an executable program using 'R CMD
LINK'. Currently, the following languages with associated source file
extensions are supported (provided that the respective compilers are
available and R was configured to use these): C ('.c'), C++ ('.cc' or
'.cpp'), fixed-form Fortran ('.f'), free-form Fortran ('.f90' or'.f95'),
Objective C ('.m'), and Objective C++ ('.M' or '.mm').
Options:
-h, --help print short help message and exit
-v, --version print version info and exit
Other options of the form '-DMACRO' or 'VAR=VALUE' are passed on to the
compilation.
Report bugs at <https://bugs.R-project.org>."
makefiles="-f \"${R_HOME}/etc${R_ARCH}/Makeconf\""
if test -r "${HOME}/.R/Makevars-${R_PLATFORM}"; then
makefiles="${makefiles} -f \"${HOME}/.R/Makevars-${R_PLATFORM}\""
elif test -r "${HOME}/.R/Makevars"; then
makefiles="${makefiles} -f \"${HOME}/.R/Makevars\""
fi
if test -r Makevars; then
makefiles="-f Makevars ${makefiles}"
fi
objs=
while test -n "${1}"; do
case ${1} in
-h|--help)
echo "${usage}"; exit 0 ;;
-v|--version)
echo "${version}"; exit 0 ;;
*.[cfmM]|*.cc|*.cpp|*.f90|*.f95|*.mm)
objs="${objs} `echo ${1} | sed 's/\.[^\.][^\.]*$/.o/'`" ;;
-D*)
MAKEFLAGS="${MAKEFLAGS} ${1}" ;;
*=*)
argn=`echo "${1}" | sed -e 's/=.*//'`
argv=`echo "${1}" | \
sed -e 's/[^=]*=//; s/^\\"//; s/\\"$//; s/\\"/\\\\"/g'`
MAKEFLAGS="${MAKEFLAGS} ${argn}=\"${argv}\""
;;
*)
echo "ERROR: don't know how to compile '${1}'"
exit 1
;;
esac
shift
done
eval "${MAKE} ${makefiles} ${MAKEFLAGS} ${objs}"
### Local Variables: ***
### mode: sh ***
### sh-indentation: 2 ***
### End: ***