blob: 83cda6bcf8fa62abeca79fcb5a1a5431ad526055 [file] [log] [blame]
% File src/library/utils/man/COMPILE.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2018 R Core Team
% Distributed under GPL 2 or later
\name{COMPILE}
\alias{COMPILE}
\title{Compile Files for Use with R on Unix-alikes}
\description{
Compile given source files so that they can subsequently be collected
into a shared object using \command{R CMD SHLIB} or an executable
program using \command{R CMD LINK}. Not available on Windows.
}
\usage{
\special{R CMD COMPILE [options] srcfiles}
}
\arguments{
\item{srcfiles}{A list of the names of source files to be compiled.
Currently, C, C++, Objective C, Objective C++ and Fortran are
supported; the corresponding files should have the extensions
\file{.c}, \file{.cc} (or \file{.cpp}), \file{.m},
\file{.mm} (or \file{.M}), \file{.f} and \file{.f90} or \file{.f95},
respectively.}
\item{options}{A list of compile-relevant settings, or for obtaining
information about usage and version of the utility.}
}
\details{
\command{R CMD SHLIB} can both compile and link files into a
shared object: since it knows what run-time libraries are needed
when passed C++, Fortran and Objective C(++) sources, passing source
files to \command{R CMD SHLIB} is more reliable.
Objective C and Objective C++ support is optional and will work only
if the corresponding compilers were available at \R configure time:
their main usage is on macOS.
Compilation arranges to include the paths to the \R public C/C++ headers.
As this compiles code suitable for incorporation into a shared object,
it generates PIC code: that might occasionally be undesirable for the
main code of an executable program.
This is a \command{make}-based facility, so will not compile a source file
if a newer corresponding \file{.o} file is present.
}
\note{
Some binary distributions of \R have \code{COMPILE} in a separate
bundle, e.g.\sspace{}an \code{R-devel} RPM.
This is not available on Windows.
}
\seealso{
\code{\link{LINK}}, \code{\link{SHLIB}}, \code{\link{dyn.load}};
the section on \dQuote{Customizing compilation under Unix} in
\dQuote{R Administration and Installation}
(see the \file{doc/manual} subdirectory of the \R source tree).
}
\keyword{utilities}