### configure.ac -*- Autoconf -*-
###
### Process this file with autoconf to produce a configure script.
###
### Copyright (C) 1998-2006 R Core Team
###
### This file is part of R.
###
### R 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 of the License, or (at your
### option) any later version.
###
### R 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.
###
### You should have received a copy of the GNU General Public License
### along with R; if not, you can obtain it via the World Wide Web at
### 'http://www.gnu.org/copyleft/gpl.html', or by writing to the Free
### Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
### Boston, MA 02110-1301, USA
AC_PREREQ(2.59)
## We want to get the version number from file 'VERSION' (rather than
## specifying the version info in 'configure.ac'. Hence, we need a bit
## of M4 magic. Note that M4 esyscmd has a trailing newline because the
## shell command output has one, hence the patsubst() trick.
m4_define([R_VERSION],
m4_bpatsubst(m4_esyscmd([cat VERSION]),
[\([0-9.]*\)\(\w\|\W\)*],
[\1]))
AC_INIT([R], R_VERSION, [r-bugs@R-project.org], [R])
AC_CONFIG_SRCDIR([src/include/Defn.h])
AC_CONFIG_AUX_DIR([tools])
### * Information on the package.
dnl ## Automake initialization.
dnl Not needed, and possibly resulting in non-portable configure scripts
dnl with hard-wired Automake API numbers (aclocal-1.x) ...
dnl AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
dnl Nevertheless, we need to provide PACKAGE and VERSION ...
PACKAGE=[${PACKAGE_NAME}]
AC_DEFINE_UNQUOTED(PACKAGE, "${PACKAGE}", [Name of package])
AC_SUBST(PACKAGE)
VERSION=[${PACKAGE_VERSION}]
AC_DEFINE_UNQUOTED(VERSION, "${VERSION}", [Version number of package])
AC_SUBST(VERSION)
## Autoheader initialization.
AH_TOP([#ifndef R_CONFIG_H
#define R_CONFIG_H])
AH_BOTTOM([
#endif /* not R_CONFIG_H */])
### ** Platform.
AC_CANONICAL_HOST
AC_DEFINE_UNQUOTED(R_PLATFORM, "${host}",
[Define this to be the canonical name (cpu-vendor-os) of your system.])
AC_DEFINE_UNQUOTED(R_CPU, "${host_cpu}",
[Define this to be the name of the CPU of your system.])
AC_DEFINE_UNQUOTED(R_VENDOR, "${host_vendor}",
[Define this to be the name of the vendor of your system.])
AC_DEFINE_UNQUOTED(R_OS, "${host_os}",
[Define this to be the name of the OS of your system.])
R_PLATFORM="${host}"
AC_SUBST(R_PLATFORM)
case "${host_os}" in
cygwin*|mingw*|windows*|winnt)
AC_DEFINE(Win32, 1,
[Define according to your operating system type.])
R_OSTYPE="windows"
;;
*)
AC_DEFINE(Unix, 1,
[Define according to your operating system type.])
R_OSTYPE="unix"
;;
esac
AC_SUBST(R_OSTYPE)
### ** Defaults.
cfile="${srcdir}/config.site"
if test -r "${cfile}"; then
echo "loading site script '${cfile}'"
. "${cfile}"
fi
cfile="${HOME}/.Rconfig"
if test -r "${cfile}"; then
echo "loading user script '${cfile}'"
. "${cfile}"
##
## Remove support for ~/.Rconf eventually.
else
cfile="${HOME}/.Rconf"
if test -r "${cfile}"; then
echo "loading user script '${cfile}'"
. "${cfile}"
fi
##
fi
cfile="./config.site"
if test -r "${cfile}"; then
echo "loading build specific script '${cfile}'"
. "${cfile}"
fi
## We need to establish suitable defaults for a 64-bit OS
libnn=lib
case "${host_os}" in
linux*)
case "${host_cpu}" in
x86_64|mips64|ppc64|sparc64|s390x)
libnn=lib64
;;
esac
;;
solaris*)
## libnn=lib/sparcv9 ## on 64-bit only, but that's compiler-specific
;;
esac
: ${LIBnn=$libnn}
## We provide these defaults so that headers and libraries in
## '/usr/local' are found (by the native tools, mostly).
if test -f "/sw/etc/fink.conf"; then
: ${CPPFLAGS="-I/sw/include -I/usr/local/include"}
: ${LDFLAGS="-L/sw/lib -L/usr/local/lib"}
else
: ${CPPFLAGS="-I/usr/local/include"}
: ${LDFLAGS="-L/usr/local/${LIBnn}"}
fi
AC_SUBST(LIBnn)
## take care not to override the command-line setting
if test "${libdir}" = '${exec_prefix}/lib'; then
libdir='${exec_prefix}/${LIBnn}'
fi
## R installation directories
m4_divert_once([HELP_BEGIN], [
R installation directories:
--libdir=DIR R files to R_HOME=DIR/R @<:@EPREFIX/$LIBnn@:>@
rdocdir=DIR R doc files to DIR @<:@R_HOME/doc@:>@
rincludedir=DIR R include files to DIR @<:@R_HOME/include@:>@
rsharedir=DIR R share files to DIR @<:@R_HOME/share@:>@])dnl
if test -z "${rdocdir}"; then
rdocdir='${rhome}/doc'
fi
AC_SUBST([rdocdir])
if test -z "${rincludedir}"; then
rincludedir='${rhome}/include'
fi
AC_SUBST([rincludedir])
if test -z "${rsharedir}"; then
rsharedir='${rhome}/share'
fi
AC_SUBST([rsharedir])
### ** Handle arguments to configure.
config_opts="${ac_configure_args}"
AC_SUBST(config_opts)
### ** Optional features.
## Allow the user to specify support for R profiling.
AC_ARG_ENABLE([R-profiling],
[AC_HELP_STRING([--enable-R-profiling],
[attempt to compile support for Rprof() @<:@yes@:>@])],
[if test "${enableval}" = no; then
want_R_profiling=no
elif test "${enableval}" = yes; then
want_R_profiling=yes
else
want_R_profiling=yes
fi],
[want_R_profiling=yes])
## Allow the user to specify support for memory profiling.
AC_ARG_ENABLE([memory-profiling],
[AC_HELP_STRING([--enable-memory-profiling],
[attempt to compile support for Rmemprof(), tracemem() @<:@yes@:>@])],
[if test "${enableval}" = no; then
want_memory_profiling=no
elif test "${enableval}" = yes; then
want_memory_profiling=yes
else
want_memory_profiling=no
fi],
[want_memory_profiling=no])
## Allow the user to specify building an R framework (Darwin).
AC_ARG_ENABLE([R-framework],
[AC_HELP_STRING([--enable-R-framework@<:@=DIR@:>@],
[MacOS X only: build R framework (if possible), and specify
its installation prefix @<:@yes, /Library/Frameworks@:>@])],
[want_R_framework="${enableval}"],
[want_R_framework=yes])
## Can only build frameworks on Darwin.
if test "${want_R_framework}" != no; then
case "${host_os}" in
darwin*)
if test "${want_R_framework}" = yes; then
## If we build a framework and 'prefix' was not given, we need
## to set it to '/Library/Frameworks' rather than '/usr/local'.
## Note that Autoconf sets things up so that by default, prefix
## and exec_prefix are set to 'NONE'. Let's hope for no change.
if test "x${prefix}" = xNONE; then
prefix="/Library/Frameworks"
fi
else
prefix="${want_R_framework}"
want_R_framework=yes
fi
## FW_VERSION is the sub-directory name used in R.framework/Version
## By default it's the a.b form of the full a.b.c version to simplify
## binary updates.
: ${FW_VERSION=`echo "${PACKAGE_VERSION}" | sed -e "s/[[\.]][[0-9]]$//"`}
;;
*)
want_R_framework=no
;;
esac
fi
AM_CONDITIONAL(WANT_R_FRAMEWORK, [test "x${want_R_framework}" = xyes])
## Allow the user to specify building R shared libraries.
##
## Building a framework implies building R shared libraries, hence the
## strange default.
## We might want to warn about the case where '--disable-R-shlib' was
## given explicitly ...
##
AC_ARG_ENABLE([R-shlib],
[AC_HELP_STRING([--enable-R-shlib],
[build the shared/dynamic library 'libR' @<:@no@:>@])],
[want_R_shlib="${enableval}"],
[want_R_shlib="${want_R_framework}"])
AM_CONDITIONAL(WANT_R_SHLIB, [test "x${want_R_shlib}" = xyes])
## Build separate shared library containing R's BLAS if desired
AC_ARG_ENABLE([BLAS-shlib],
[AC_HELP_STRING([--enable-BLAS-shlib],
[build BLAS into a shared library @<:@perhaps@:>@])],
[use_blas_shlib="${enableval}"],
[use_blas_shlib="unset"])
if test "${want_R_shlib}" = yes; then
LIBR="-L\$(R_HOME)/lib\$(R_ARCH) -lR"
else
LIBR=
fi
## Enable maintainer-specific portions of Makefiles.
AC_ARG_ENABLE([maintainer-mode],
[AC_HELP_STRING([--enable-maintainer-mode],
[enable make rules and dependencies not useful (and
maybe confusing) to the casual installer @<:@no@:>@])],
[use_maintainer_mode="${enableval}"],
[use_maintainer_mode=no])
AM_CONDITIONAL(MAINTAINER_MODE, [test "x${use_maintainer_mode}" = xyes])
## Enable testing the write barrier.
AC_ARG_ENABLE([strict-barrier],
[AC_HELP_STRING([--enable-strict-barrier],
[provoke compile error on write barrier violation
@<:@no@:>@])],
[use_strict_barrier="${enableval}"],
[use_strict_barrier=no])
if test x"${use_strict_barrier}" = xyes; then
AC_DEFINE(TESTING_WRITE_BARRIER, 1,
[Define to enable provoking compile errors on write barrier
violation.])
fi
AC_ARG_ENABLE([mbcs],
[AC_HELP_STRING([--enable-mbcs],
[enable support for UTF-8 and other MBCS locales @<:@yes@:>@])],
[want_mbcs_support="${enableval}"],
[want_mbcs_support=yes])
### ** Optional packages.
## BLAS.
AC_ARG_WITH([blas],
[AC_HELP_STRING([--with-blas],
[use BLAS library, or specify it @<:@no@:>@])],
[R_ARG_USE(blas)],
[use_blas=unset])
# default is "no" except on MacOS X
## LAPACK.
AC_ARG_WITH([lapack],
[AC_HELP_STRING([--with-lapack],
[use LAPACK library, or specify it @<:@no@:>@])],
[R_ARG_USE(lapack)],
[use_lapack=unset])
# default is "no" except on MacOS X
## Readline.
AC_ARG_WITH([readline],
[AC_HELP_STRING([--with-readline],
[use readline library (if available) @<:@yes@:>@])],
[R_ARG_USE(readline)],
[use_readline=yes])
## Aqua.
AC_ARG_WITH([aqua],
[AC_HELP_STRING([--with-aqua],
[MacOS X only: use Aqua (if available) @<:@yes@:>@])],
[if test "${withval}" = no; then
want_aqua=no
else
want_aqua=yes
fi],
[want_aqua=yes])
## Tcl/Tk.
AC_ARG_WITH([tcltk],
[AC_HELP_STRING([--with-tcltk],
[use Tcl/Tk, or specify its library dir @<:@yes@:>@])],
[if test "${withval}" = no; then
want_tcltk=no
elif test "${withval}" = yes; then
want_tcltk=yes
else
want_tcltk=yes
LDFLAGS="${LDFLAGS} -L${withval}"
tcltk_prefix="${withval}"
fi],
[want_tcltk=yes])
AC_ARG_WITH([tcl-config],
[AC_HELP_STRING([--with-tcl-config=TCL_CONFIG],
[specify location of tclConfig.sh @<:@@:>@])],
[TCL_CONFIG="${withval}"],
[TCL_CONFIG=""])
AC_ARG_WITH([tk-config],
[AC_HELP_STRING([--with-tk-config=TK_CONFIG],
[specify location of tkConfig.sh @<:@@:>@])],
[TK_CONFIG="${withval}"],
[TK_CONFIG=""])
## other libraries
AC_ARG_WITH([libpng],
[AC_HELP_STRING([--with-libpng],
[use libpng library (if available) @<:@yes@:>@])],
[R_ARG_USE(libpng)],
[use_libpng=yes])
AC_ARG_WITH([jpeglib],
[AC_HELP_STRING([--with-jpeglib],
[use jpeglib library (if available) @<:@yes@:>@])],
[R_ARG_USE(jpeglib)],
[use_jpeglib=yes])
AC_ARG_WITH([system-zlib],
[AC_HELP_STRING([--with-system-zlib],
[use system zlib library (if available) @<:@no@:>@])],
[R_ARG_USE_SYSTEM(zlib)],
[use_system_zlib=no])
AC_ARG_WITH([system-bzlib],
[AC_HELP_STRING([--with-system-bzlib],
[use system bzlib library (if available) @<:@no@:>@])],
[R_ARG_USE_SYSTEM(bzlib)],
[use_system_bzlib=no])
AC_ARG_WITH([system-pcre],
[AC_HELP_STRING([--with-system-pcre],
[use system PCRE library (if available) @<:@no@:>@])],
[R_ARG_USE_SYSTEM(pcre)],
[use_system_pcre=no])
## Valgrind instrumentation
AC_ARG_WITH([valgrind-instrumentation],
[AC_HELP_STRING([--with-valgrind-instrumentation],
[Level of additional instrumentation for Valgrind (0/1/2) @<:@0@:>@])],
[valgrind_level=${withval}],
[valgrind_level=0])
##
## Completely disable using libtool for building shlibs until libtool
## fully supports Fortran and C++.
## AC_ARG_WITH([libtool],
## [AC_HELP_STRING([--with-libtool],
## [use libtool for building shared libraries @<:@yes@:>@])],
## [use_libtool="${withval}"],
## [use_libtool=yes])
##
AM_CONDITIONAL(USE_LIBTOOL, [test "x${use_libtool}" = xyes])
## Recommended R packages.
AC_ARG_WITH([recommended-packages],
[AC_HELP_STRING([--with-recommended-packages],
[use/install recommended R packages (if available)
@<:@yes@:>@])],
[R_ARG_USE(recommended_packages)],
[use_recommended_packages=yes])
### ** Precious variables.
AC_ARG_VAR([R_PRINTCMD],
[command used to spool PostScript files to the printer])
AC_ARG_VAR([R_PAPERSIZE],
[paper size for the local (PostScript) printer])
AC_ARG_VAR([R_BATCHSAVE],
[set default behavior of R when ending a session])
AC_ARG_VAR([MAIN_CFLAGS],
[additional CFLAGS used when compiling the main binary])
AC_ARG_VAR([SHLIB_CFLAGS],
[additional CFLAGS used when building shared libraries])
AC_ARG_VAR([MAIN_FFLAGS],
[additional FFLAGS used when compiling the main binary])
AC_ARG_VAR([SHLIB_FFLAGS],
[additional FFLAGS used when building shared libraries])
AC_ARG_VAR([MAIN_LD],
[command used to link the main binary])
AC_ARG_VAR([MAIN_LDFLAGS],
[flags which are necessary for loading a main program which
will load shared library modules (DLLs) at runtime])
AC_ARG_VAR([CPICFLAGS],
[special flags for compiling C code to be turned into a
shared library.])
AC_ARG_VAR([FPICFLAGS],
[special flags for compiling Fortran code to be turned into a
shared library.])
AC_ARG_VAR([FCPICFLAGS],
[special flags for compiling Fortran 95 code to be turned into a
shared library.])
AC_ARG_VAR([SHLIB_LD],
[command for linking shared libraries which contain object
files from a C or Fortran compiler only])
AC_ARG_VAR([SHLIB_LDFLAGS],
[special flags used by SHLIB_LD])
AC_ARG_VAR([DYLIB_LD],
[command for linking dynamic libraries which contain object
files from a C or Fortran compiler only])
AC_ARG_VAR([DYLIB_LDFLAGS],
[special flags used for make a dynamic library])
AC_ARG_VAR([CXXPICFLAGS],
[special flags for compiling C++ code to be turned into a
shared library])
AC_ARG_VAR([SHLIB_CXXLD],
[command for linking shared libraries which contain object
files from a C++ compiler])
AC_ARG_VAR([SHLIB_CXXLDFLAGS],
[special flags used by SHLIB_CXXLD])
AC_ARG_VAR([SHLIB_FCD],
[command for linking shared libraries which contain object
files from the Fortran 95 compiler])
AC_ARG_VAR([SHLIB_FCLDFLAGS],
[special flags used by SHLIB_FCLD])
AC_ARG_VAR([TCLTK_LIBS],
[flags needed for linking against the Tcl and Tk libraries])
AC_ARG_VAR([TCLTK_CPPFLAGS],
[flags needed for finding the tcl.h and tk.h headers])
AC_ARG_VAR([MAKE], [Make command])
AC_ARG_VAR([R_BROWSER], [default browser])
AC_ARG_VAR([BLAS_LIBS],
[flags needed for linking against external BLAS libraries])
AC_ARG_VAR([LAPACK_LIBS],
[flags needed for linking against external LAPACK libraries])
AC_ARG_VAR([LIBnn], ['lib' or 'lib64' for dynamic libraries])
AC_ARG_VAR([SAFE_FFLAGS],
[Safe Fortran 77 compiler flags for e.g. dlamc.f])
AC_ARG_VAR([r_arch],
[Use architecture-dependent subdirs with this name])
AC_ARG_VAR([DEFS], [C defines for use when compiling R])
if test -z "${r_arch}"; then
R_ARCH=
else
R_ARCH="/${r_arch}"
fi
AC_DEFINE_UNQUOTED(R_ARCH, "${r_arch}",
[Define this to use architecture-dependent subdirectories of this name.])
AC_SUBST([R_ARCH])
### ** Check whether we build in srcdir.
AC_PATH_PROG(GETWD, pwd, pwd)
AC_MSG_CHECKING([whether builddir is srcdir])
if test "`cd ${srcdir} && ${GETWD}`" = "`${GETWD}`"; then
BUILDDIR_IS_SRCDIR=yes
else
BUILDDIR_IS_SRCDIR=no
fi
AC_SUBST(BUILDDIR_IS_SRCDIR)
AC_MSG_RESULT([${BUILDDIR_IS_SRCDIR}])
### * Checks for programs.
R_MISSING_PROG(ACLOCAL, aclocal)
R_MISSING_PROG(AUTOCONF, autoconf)
R_MISSING_PROG(AUTOMAKE, automake)
R_MISSING_PROG(AUTOHEADER, autoheader)
R_MISSING_PROG(MAKEINFO, makeinfo)
AC_PROG_AWK
AC_PROG_EGREP
AC_PROG_LN_S
AC_PROG_RANLIB
AC_PROG_YACC
R_PROG_AR
R_PROG_INSTALL
## we would like a POSIX sed, and need one on Solaris
AC_PATH_PROGS(SED, sed, /bin/sed, [/usr/xpg4/bin:$PATH])
## Make
: ${MAKE=make}
AC_SUBST(MAKE)
## Pager
R_PROG_PAGER
## Perl
R_PROG_PERL
## Tar
: ${TAR=tar}
AC_SUBST(TAR)
## TeXMF stuff
R_PROG_TEXMF
## Unzip && zip && gzip
AC_PATH_PROGS(R_UNZIPCMD, [${UNZIP} unzip], "")
AC_PATH_PROGS(R_ZIPCMD, [${ZIP} zip], "")
AC_PATH_PROGS(R_GZIPCMD, [${GZIP} gzip], true)
## Browser
R_PROG_BROWSER
## PDF viewer
R_PROG_PDFVIEWER
AC_PROG_CC
AC_PROG_GCC_TRADITIONAL
AC_PROG_CPP
R_PROG_CPP_CPPFLAGS
R_PROG_F77
AC_PROG_CXX
AC_PROG_CXXCPP
R_GCC4_VISIBILITY
## This has to be R_DEFS as autoconf overrrides DEFS
R_DEFS=${DEFS}
AC_SUBST(R_DEFS)
## Libtool.
## (Run this after R_PROG_F77, as AC_PROG_LIBTOOL checks for a
## Fortran 77 compiler and sets F77 accordingly.)
AC_DISABLE_STATIC
AC_PROG_LIBTOOL
AC_SUBST(LIBTOOL_DEPS)
## Makeinfo
R_PROG_MAKEINFO
### * Checks for libraries.
## Set up LD_LIBRARY_PATH or equivalent.
##
## What is this doing *HERE*?
## Should be needed for tests using AC_RUN_IFELSE()?
## Make sure that non-standard directories specified via '-L' are really
## searched in the tests.
## Note: earlier versions used LIBS rather than LDFLAGS.
case "${host_os}" in
darwin*)
## Darwin provides a full path in the ID of each library such
## that the linker can add library's path to the binary at link time.
## This allows the dyld to find libraries even without xx_LIBRARY_PATH.
## No paths should be added to R_LD_LIBRARY_PATH (which in turn
## changes DYLD_LIBRARY_PATH), because they override the system
## look-up sequence. Such automatic override has proven to break things
## like system frameworks (e.g. ImageIO or OpenGL framework).
;;
*)
for arg in ${LDFLAGS}; do
case "${arg}" in
-L*)
lib=`echo ${arg} | sed "s/^-L//"`
R_SH_VAR_ADD(R_LD_LIBRARY_PATH, [${lib}], [${PATH_SEPARATOR}])
;;
esac
done
;;
esac
##
## Record name of environment variable which tells the dynamic linker
## where to find shlibs (typically, 'LD_LIBRARY_PATH').
ltout=`./libtool --config | grep '^shlibpath_var='`
eval "${ltout}"
AC_SUBST(shlibpath_var)
## Export LD_LIBRARY_PATH or equivalent.
if eval "test -z \"\${${shlibpath_var}}\""; then
eval "${shlibpath_var}=\"${R_LD_LIBRARY_PATH}\""
else
eval "${shlibpath_var}=\"${R_LD_LIBRARY_PATH}${PATH_SEPARATOR}\${${shlibpath_var}}\""
fi
eval "export ${shlibpath_var}"
## Yes, we already need this at configure time ...
case "${host_os}" in
aix*)
LIBS="-lc ${LIBS}"
;;
esac
##
## This actually comes from libtool.m4.
AC_CHECK_LIBM
AC_SUBST(LIBM)
##
## AC_CHECK_LIBM computes LIBM but does not add to LIBS, hence we do
## the following as well.
AC_CHECK_LIB(m, sin)
case "${host_os}" in
darwin*)
## MacOS <= 10.2 doesn't have dlcompat, >= 10.3 include it in libSystem
## since R 2.3 we don't provide a work-around for missing dl anymore
AC_SEARCH_LIBS(dlopen, dl,,[AC_MSG_ERROR([Please install dlcompat or update to a more recent OS X.])])
## SI says we want '-lcc_dynamic' on Darwin, although currently
## http://developer.apple.com/documentation/MacOSX/ has nothing
## official. Bill Northcott points out
## that it is only needed to GCC 3.x (and earlier) ...
if test "${GCC}" = yes; then
case "${CC_VERSION}" in
2.*|3.*)
AC_CHECK_LIB(cc_dynamic, main) ;;
esac
fi
;;
*)
AC_CHECK_LIB(dl, dlopen)
;;
esac
## Readline.
if test "${use_readline}" = yes; then
AC_CHECK_HEADERS(readline/history.h readline/readline.h)
r_save_LIBS="${LIBS}"
LIBS=
## don't use the cached value as we need to rebuild LIBS
unset ac_cv_lib_readline_rl_callback_read_char
AC_CHECK_LIB(readline, rl_callback_read_char)
use_readline="${ac_cv_lib_readline_rl_callback_read_char}"
if test "${use_readline}" = no; then
## only need ncurses if libreadline is not statically linked against it
unset ac_cv_lib_readline_rl_callback_read_char
AC_CHECK_LIB(ncurses, main, [],
AC_CHECK_LIB(termcap, main, [],
AC_CHECK_LIB(termlib, main)))
AC_CHECK_LIB(readline, rl_callback_read_char)
use_readline="${ac_cv_lib_readline_rl_callback_read_char}"
fi
## the NetBSD version as used in MacOS X does not have this
AC_CHECK_FUNCS(history_truncate_file)
READLINE_LIBS="${LIBS}"
LIBS="${r_save_LIBS}"
if test "${use_readline}" = no; then
AC_MSG_ERROR([--with-readline=yes (default) and headers/libs are not available])
fi
fi
AC_SUBST(READLINE_LIBS)
### * Checks for header files.
AC_HEADER_STDC
AC_HEADER_TIME
AC_HEADER_DIRENT
AC_HEADER_SYS_WAIT
##
## Some of these are also checked for when Autoconf computes the default
## includes.
AC_CHECK_HEADERS(arpa/inet.h dl.h dlfcn.h elf.h fcntl.h floatingpoint.h \
fpu_control.h grp.h ieee754.h ieeefp.h limits.h locale.h \
netdb.h netinet/in.h pwd.h strings.h \
sys/param.h sys/select.h sys/socket.h sys/stat.h sys/resource.h \
sys/time.h sys/times.h sys/utsname.h time.h unistd.h)
##
##
## These are ANSI C headers but some C code (written to work also
## without assuming ANSI C) may need the corresponding conditionals.
AC_CHECK_HEADERS(errno.h inttypes.h stdarg.h stdint.h string.h)
##
##
## src/main/regex.c uses HAVE_LIBINTL_H.
## But then we want full gettext support and AM_GNU_GETTEXT.
## AC_CHECK_HEADERS(libintl.h)
##
case "${host_os}" in
sunos4*)
AC_DEFINE(SunOS4, 1,
[Define if your system is SunOS4, which is famous for
broken header files.])
;;
esac
R_HEADER_SETJMP
R_HEADER_GLIBC2
### * Checks for types.
AC_TYPE_SIGNAL
AC_TYPE_PID_T
AC_TYPE_SIZE_T
R_SIZE_MAX
AC_CHECK_TYPE(blkcnt_t, long)
AH_TEMPLATE([blkcnt_t],
[Define to 'long' if does not define.
Apparently necessary to fix a GCC bug on AIX?])
R_TYPE_SOCKLEN
AC_CHECK_TYPES([stack_t], , , [#include ])
## These are optional C99 types, which we typedef in Defn.h if absent.
## There seems some confusion as to where they should be defined:
## the standard says stdint.h but drafts and Solaris 8 have inttypes.h.
## It seems all systems having stdint.h include it in inttypes.h, and
## POSIX requires that. But we will make sure.
AC_CHECK_TYPES([intptr_t, uintptr_t], , , [#ifdef HAVE_INTTYPES_H
#include
#endif
#ifdef HAVE_STDINT_H
#include
#endif])
### * Checks for compiler characteristics.
### ** Generic tests for the C, Fortran 77 and C++ compilers.
### *** C compiler.
AC_C_BIGENDIAN
AC_C_CONST
R_C_INLINE
if test "${cross_compiling}" = yes; then
warn_xcompile_sizeof_int="assuming C ints are 4 byte on ${host}"
AC_MSG_WARN([${warn_xcompile_sizeof_int}])
fi
AC_CHECK_SIZEOF(int, 4)
if test "${ac_cv_sizeof_int}" = 4; then
AC_DEFINE(INT_32_BITS, 1, [Define if you have 32 bit ints.])
fi
if test "${cross_compiling}" = yes; then
warn_xcompile_sizeof_long="assuming C longs are 4 byte on ${host}"
AC_MSG_WARN([${warn_xcompile_sizeof_long}])
fi
AC_CHECK_SIZEOF(long, 4)
AC_CHECK_SIZEOF(long long, 0)
AC_CHECK_SIZEOF(long double, 0)
if test "$ac_test_CFLAGS" != set; then
if test "$GCC" = yes; then
R_PROG_CC_FLAG([-std=gnu99], R_SH_VAR_ADD(CFLAGS, [-std=gnu99]))
fi
fi
R_PROG_CC_MAKEFRAG
R_PROG_CC_LO_MAKEFRAG
### *** Fortran 77 compiler.
R_PROG_F77_FLIBS
R_PROG_F77_APPEND_UNDERSCORE
R_PROG_F77_CAN_RUN
R_PROG_F77_CC_COMPAT
R_PROG_F77_CC_COMPAT_COMPLEX
AM_CONDITIONAL(COMPILE_FORTRAN_DOUBLE_COMPLEX,
[test "x${HAVE_FORTRAN_DOUBLE_COMPLEX}" != x])
### *** C++ compiler.
R_PROG_CXX_MAKEFRAG
### ** Platform-specific overrides for the C, Fortran 77 and C++ compilers.
case "${host_cpu}" in
i*86|x86_64)
R_PROG_CC_FLAG_D__NO_MATH_INLINES
## We used to add -mieee-fp here, but it seems it is really a
## linker flag for old Linuxen adding -lieee to a non-shared link.
;;
alpha*)
##
## * IEEE math
## We really need to use @option{-ieee_with_inexact} (called
## @option{-mieee-with-inexact} for GCC) for the C compiler:
## @option{-ieee} (or @option{-mieee}) are not enough.
## According to and Luke Tierney
## , @option{-fpe3} is what we want for the
## native Fortran 77 compiler: seems that not all versions map
## @option{-ieee} to @option{-fpe3}.
## What about the C++ compilers?
if test "${GCC}" = yes; then
R_PROG_CC_FLAG([-mieee-with-inexact],
R_SH_VAR_ADD(R_XTRA_CFLAGS, [-mieee-with-inexact]))
else
R_PROG_CC_FLAG([-ieee_with_inexact],
R_SH_VAR_ADD(R_XTRA_CFLAGS, [-ieee_with_inexact]))
fi
if test "${G77}" = yes; then
R_PROG_F77_FLAG([-mieee],
R_SH_VAR_ADD(R_XTRA_FFLAGS, [-mieee]))
else
R_PROG_F77_FLAG([-fpe3],
R_SH_VAR_ADD(R_XTRA_FFLAGS, [-fpe3]))
fi
if test "${GXX}" = yes; then
R_PROG_CXX_FLAG([-mieee],
R_SH_VAR_ADD(R_XTRA_CXXFLAGS, [-mieee]))
else
R_PROG_CXX_FLAG([-ieee],
R_SH_VAR_ADD(R_XTRA_CXXFLAGS, [-ieee]))
fi
##
;;
esac
AH_TEMPLATE([HAVE_NO_SYMBOL_UNDERSCORE],
[Define if module-loading does not need an underscore to
be prepended to external names.])
case "${host_os}" in
aix*)
AC_DEFINE(HAVE_NO_SYMBOL_UNDERSCORE)
if test "${GCC}" = yes; then
R_PROG_CC_FLAG([-mno-fp-in-toc],
R_SH_VAR_ADD(R_XTRA_CFLAGS, [-mno-fp-in-toc]))
fi
## need /lib/crt0_64.o on 64-bit AIX: see comments in R-admin.
if test "x${OBJECT_MODE}" = "x64"; then
R_SH_VAR_ADD(R_XTRA_LIBS, [/lib/crt0_64.o])
else
R_SH_VAR_ADD(R_XTRA_LIBS, [/lib/crt0.o])
fi
;;
cygwin*|mingw*|windows*|winnt)
AC_DEFINE(HAVE_NO_SYMBOL_UNDERSCORE)
;;
darwin*)
## This is needed for Apple's dlsym included in >= 10.3
## and so we've changed dlfcn-darwin.c for 2.1.0
AC_DEFINE(HAVE_NO_SYMBOL_UNDERSCORE)
## Need '-no-cpp-precomp' say J de Leeuw and
## http://fink.sourceforge.net/doc/porting/basics.php.
if test "${GCC}" = yes; then
## only Apple build of gcc supports (and needs?) -no-cpp-precomp
${CC} --version|grep Apple >/dev/null 2>/dev/null
if test $? == 0; then
R_SH_VAR_ADD(R_XTRA_CPPFLAGS, [-no-cpp-precomp])
fi
fi
;;
hpux*)
AC_DEFINE(HAVE_NO_SYMBOL_UNDERSCORE)
AC_DEFINE(USE_BUILTIN_RINT, 1,
[Define if your rint() is broken on your system.
Apparently needed on HPUX.])
case "${CC}" in
cc|c89)
## Luke Tierney says we also need '-Wp,-H16000' which tells the
## pre-processor to increase the size of an internal table. It
## seems that src/modules/vfonts/g_her_glyph.c contains a line
## that is too long for the pre-processor without this flag.
R_SH_VAR_ADD(R_XTRA_CPPFLAGS, [-Wp,-H16000])
;;
esac
AC_CHECK_LIB(dld, shl_load, [R_XTRA_LIBS="-ldld ${R_XTRA_LIBS}"])
;;
irix*)
R_C_OPTIEEE
##
## We really should test explictly whether the Fortran and C++
## compilers *need* '-OPT:IEEE_NaN_inf=ON'. Currently, all we do is
## check whether the non-GNU tools *accept* the flag.
if test "${G77}" != yes; then
R_PROG_F77_FLAG([-OPT:IEEE_NaN_inf=ON],
R_SH_VAR_ADD(R_XTRA_FFLAGS, [-OPT:IEEE_NaN_inf=ON]))
fi
if test "${GXX}" != yes; then
R_PROG_CXX_FLAG([-OPT:IEEE_NaN_inf=ON],
R_SH_VAR_ADD(R_XTRA_CXXFLAGS, [-OPT:IEEE_NaN_inf=ON]))
fi
##
;;
linux*)
case "${CC}" in
## Intel compiler
*icc)
## icc declares __GNUC__, so it picks up CFLAGS intended for gcc.
if test "$ac_test_CFLAGS" != set; then
if test $ac_cv_prog_cc_g = yes; then
case "${host_cpu}" in
x86_64)
CFLAGS="-g -O2 -std=c99"
;;
*)
## on ix86 optimization fails
CFLAGS="-g -std=c99"
;;
esac
else
case "${host_cpu}" in
x86_64)
CFLAGS="-O2 -std=c99"
;;
*)
CFLAGS="-std=c99"
;;
esac
fi
fi
## -mp is the preferred form of -mieee-fp
R_PROG_CC_FLAG([-mp],
R_SH_VAR_ADD(R_XTRA_CFLAGS, [-mp]))
;;
esac
case "${F77}" in
## Intel compilers
*ifc|*ifort)
if test "$ac_test_FFLAGS" != set; then
if test $ac_cv_prog_f77_g = yes; then
case "${host_cpu}" in
x86_64)
FFLAGS="-g -O2"
;;
*)
FFLAGS="-g"
;;
esac
else
case "${host_cpu}" in
x86_64)
FFLAGS="-O2"
;;
*)
## on ix86 optimization of dlamc.f fails
FFLAGS=
;;
esac
fi
fi
R_PROG_CC_FLAG([-mp],
R_SH_VAR_ADD(R_XTRA_FFLAGS, [-mp]))
;;
esac
case "${CXX}" in
## Intel compilers
*icpc|*icc)
if test "$ac_test_CXXFLAGS" != set; then
if test $ac_cv_prog_cxx_g = yes; then
case "${host_cpu}" in
x86_64)
CXXFLAGS="-g -O2"
;;
*)
CXXFLAGS="-g"
;;
esac
else
case "${host_cpu}" in
x86_64)
CXXFLAGS="-O2"
;;
*)
CXXFLAGS=
;;
esac
fi
fi
R_PROG_CC_FLAG([-mp],
R_SH_VAR_ADD(R_XTRA_CXXFLAGS, [-mp]))
;;
esac
;;
openbsd*)
if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
AC_DEFINE(HAVE_NO_SYMBOL_UNDERSCORE)
fi
;;
osf*)
AC_DEFINE(HAVE_NO_SYMBOL_UNDERSCORE)
;;
esac
if test "${SAFE_FFLAGS+set}" != set; then
if test "x${ac_cv_f77_compiler_gnu}" = xyes; then
SAFE_FFLAGS="${FFLAGS} -ffloat-store"
else
SAFE_FFLAGS=${FFLAGS}
fi
fi
AC_SUBST(CFLAGS)
AC_SUBST(MAIN_CFLAGS)
AC_SUBST(SHLIB_CFLAGS)
AC_SUBST(CXXFLAGS)
AC_SUBST(SHLIB_CXXFLAGS)
AC_SUBST(FFLAGS)
AC_SUBST(SAFE_FFLAGS)
AC_SUBST(MAIN_FFLAGS)
AC_SUBST(SHLIB_FFLAGS)
AC_SUBST(R_XTRA_CFLAGS)
AC_SUBST(R_XTRA_CPPFLAGS)
AC_SUBST(R_XTRA_CXXFLAGS)
AC_SUBST(R_XTRA_FFLAGS)
AC_SUBST(R_XTRA_LIBS)
### ** DLL stuff.
## We need to determine the following:
##
## MAIN_LD, MAINLD_FLAGS
## command and flags for loading the main binary so that it will load
## shared libraries (DLLs) at runtime, also for profiling.
## CPICFLAGS, CXXPICFLAGS, FPICFLAGS, FCPICFLAGS
## flags for compiling C, C++, and Fortran library code.
## SHLIB_LD, SHLIB_LDFLAGS
## command and flags for creating DLLs (which contain object files
## from a C or Fortran compiler).
## DYLIB_LD, DYLIB_LDFLAGS
## ditto for dynamic libraries (where different.)
## SHLIB_CXXLD, SHLIB_CXXLDFLAGS
## command and flags for creating DLLs which contain object files from
## a C++ compiler. According to Autoconf, the C++ compiler/linker
## must be used for linking in this case (since special C++-ish things
## need to happen at link time like calling global constructors,
## instantiating templates, enabling exception support, etc.).
##
## The procedure is as follows.
##
## * We use applicable values from imake in case its CC is ours.
## * Irrespective of that, we think we know what to do with GNU tools
## (GNU C, Fortran, and C++ compilers).
## * Then, use platform specific overrides.
## * As a final safeguard, values from the environment (as specified in
## one of the configuration files or at the configure command line)
## override anything we figure out in the case of compiler flags; for
## linker flags (*LDFLAGS), environment settings override our results
## if the corresponding *LD variable was set, and add otherwise.
##
## NOTE: We do not provide defaults for the *LDFLAGS, taking a defensive
## approach. In case we cannot figure out {MAIN,SHLIB}_LDFLAGS and the
## user did not provide defaults, an error results. A warning is given
## if nothing was obtained for SHLIB_CXXLDFLAGS.
##
## Note also that some systems (formerly AIX) do not allow for unresolved
## symbols at link time. For such systems, we link against -lm (in case
## it exists) when building a shlib module via SHLIB_LIBADD.
main_ld="${CC}"
shlib_ld="${CC}"
shlib_cxxld="${CXX}"
SHLIB_EXT=".so"
SHLIB_LIBADD=
use_exportfiles=no
## Step 1. Ask imake.
##
## Earlier versions had fpicflags=${cpicflags}. As this really amounts
## to hoping rather than knowing, we no longer do this.
##
r_xtra_path="${PATH}"
for dir in /usr/bin/X11 /usr/X11R6/bin /usr/openwin/bin; do
r_xtra_path="${r_xtra_path}${PATH_SEPARATOR}${dir}"
done
AC_PATH_PROG(XMKMF, xmkmf, [], [${r_xtra_path}])
if test -n "${XMKMF}"; then
echo > Imakefile
${XMKMF} > /dev/null 2>&1 || echo > Makefile
cc=`${srcdir}/tools/GETMAKEVAL CC`
cc=`echo ${cc} | sed "s/ .*//"`
## Paul Gilbert reported on R-devel 2006-04-13 a system with cc=""
if test -n "${cc}" ; then
if test "`which ${cc}`" = "`which ${CC}`"; then
shlib_ldflags=`${srcdir}/tools/GETMAKEVAL SHLIBLDFLAGS`
cpicflags=`${srcdir}/tools/GETMAKEVAL PICFLAGS`
fi
fi
cxx=`${srcdir}/tools/GETMAKEVAL CXX`
cxx=`echo ${cxx} | sed "s/ .*//"`
if test -n "${cxx}" ; then
if test "`which ${cxx}`" = "`which ${CXX}`"; then
cxxpicflags=`${srcdir}/tools/GETMAKEVAL CXXPICFLAGS`
fi
fi
rm -f Imakefile Makefile
fi
## Step 2. GNU compilers.
if test "${GCC}" = yes; then
case "${host_cpu}" in
## Sparc has only an 8k global object table, 1024 entries on 64-bit.
## PowerPC has 32k, not enough on ppc64 for the ca6200 entries in libR.so
## The only other platform where this is said to matter is m68k, which
## has 32k and so can use -fpic.
## However, although the gcc docs do not mention it, it seems s390/s390x
## also supports and needs -fPIC
sparc*|ppc64|s390*)
cpicflags="-fPIC"
;;
*)
cpicflags="-fpic"
;;
esac
shlib_ldflags="-shared"
fi
if test "${G77}" = yes; then
case "${host_cpu}" in
sparc*|ppc64|s390*)
fpicflags="-fPIC"
;;
*)
fpicflags="-fpic"
;;
esac
fi
if test "${GXX}" = yes; then
case "${host_cpu}" in
sparc*|ppc64|s390*)
cxxpicflags="-fPIC"
;;
*)
cxxpicflags="-fpic"
;;
esac
shlib_cxxldflags="-shared"
fi
## Step 3. Individual platform overrides.
dylib_undefined_allowed=yes
case "${host_os}" in
aix[123]*|aix4.[01]*)
## These need a form of linking we no longer support
AC_MSG_ERROR([AIX prior to 4.2 is not supported])
;;
aix*)
## now use run-time linking
# use_exportfiles=yes
## All AIX code is PIC.
cpicflags=
cxxpicflags=
fpicflags=
## not clear if this is correct for native compilers
wl="-Wl,"
## libtool suggests that ia64 needs -Bexport and not -brtl
## but we have no confirmation.
main_ldflags="${wl}-brtl ${wl}-bexpall"
shlib_ldflags="${wl}-G ${wl}-bexpall ${wl}-bnoentry"
# main_ldflags="${wl}-bdynamic ${wl}-bE:\$(top_builddir)/etc/R.exp ${wl}-bM:SRE"
# shlib_ldflags="${wl}-bM:SRE ${wl}-H512 ${wl}-T512 ${wl}-bnoentry ${wl}-bexpall ${wl}-bI:\$(R_HOME)/etc/R.exp"
SHLIB_LIBADD="\$(LIBM)"
;;
darwin*)
darwin_pic="-fPIC"
dylib_undefined_allowed=no
darwin_dylib_ldflags="-dynamiclib"
## Used to need this for GUI and quartz device, but neither are in
## R or libR.dylib any longer (2.1.0).
## main_ldflags="-framework Carbon"
## Want '-mdynamic-no-pic' for GCC 3, says Jan de Leeuw.
if test "${GCC}" = yes; then
case "${CC_VERSION}" in
3.*)
R_SH_VAR_ADD(main_ldflags, [-mdynamic-no-pic]) ;;
esac
fi
case "${host_os}" in
## According to Jan de Leeuw, OS X 10.1 is darwin 5, OS X 10.2 is
## darwin 6, and the real difference is between darwin < and >= 5.
## It would be nice to use R.bin (or libR.dylib) as bundle_loader
## together with '-undefined suppress' for darwin 5 or better, but
## the paths to these change when installing.
## The Darwin 1.[012] special casing is from libtool and could be
## eliminated ('-flat_namespace' is the default if available).
## FIXME: Rblas is entirely untested and possibly doesn't work
## for any darwin before darwin7!
darwin1.[[012]]*)
shlib_ldflags="-bundle -undefined suppress"
darwin_pic="${darwin_pic} -fno-common"
;;
## although OS X 10.3 (Panther = Darwin 7) has some useful features,
## dlopen doesn't work with dylibs and RTLD_LOCAL, so we can't use them.
darwin[[567]]*)
shlib_ldflags="-flat_namespace -bundle -undefined suppress"
darwin_pic="${darwin_pic} -fno-common"
;;
## * recent ld has -single_module so it doesn't need -fno-common
## we have to use dylib instead of a bundle
## * dylib+single_module+flat_namespace=pretty much what other platforms call .so
## but there can be no multiple symbols (due to flat namespace)
## * since 10.3 we can also use -undefined dynamic_lookup which allows us to
## use two-level namespace and still have undefined symbols
*)
## FIXME: strictly speaking it should be "yes" but libRblas still
## needs -lgfortran because the sharing is a one-way street
## dylib_undefined_allowed=yes
AC_MSG_CHECKING([whether linker supports dynamic lookup])
shlib_ldflags="-dynamiclib -Wl,-macosx_version_min -Wl,10.3 -undefined dynamic_lookup -single_module -multiply_defined suppress"
AC_CACHE_VAL([r_cv_has_dynlookup],[
[cat > conftest.c <&AS_MESSAGE_LOG_FD
if ${CC} ${CFLAGS} conftest.c ${shlib_ldflags} -o libconftest${DYLIB_EXT} ${LIBS} 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
r_cv_has_dynlookup=yes
AC_MSG_RESULT([yes])
else
r_cv_has_dynlookup=no
AC_MSG_RESULT([no])
AC_MSG_WARN([*** Please consider updating your Xcode tools. ***])
fi
rm -f libconftest${DYLIB_EXT} conftest.c
])
if test -n "${FORCE_FLAT_NAMESPACE}"; then
AC_MSG_WARN([Use of flat namespace is requested by user.])
r_cv_has_dynlookup=forced-no
fi
if test "${r_cv_has_dynlookup}" != "yes"; then
shlib_ldflags="-dynamiclib -flat_namespace -undefined suppress -single_module -multiply_defined suppress"
dylib_undefined_allowed=yes
fi
## we use the same method for shlib and dylib now
darwin_dylib_ldflags="${shlib_ldflags}"
## side note: we could use flat namespace instead, but there is an exception:
## * libRblas must be 2-level, dyn lookup because of xerbla which is undefined
;;
esac
cpicflags="${darwin_pic}"
cxxpicflags="${darwin_pic}"
fpicflags="${darwin_pic}"
shlib_cxxldflags="${shlib_ldflags}"
if test "${ac_cv_lib_cc_dynamic_main}" = yes; then
## Could also try grepping LIBS for '-lcc_dynamic' ...
SHLIB_LIBADD="-lcc_dynamic"
fi
;;
freebsd*)
## Only sure for FreeBSD 3 and above.
main_ldflags="-export-dynamic"
shlib_ldflags="-shared"
;;
gnu*) # GNU Hurd
main_ldflags="-export-dynamic"
;;
hpux*)
SHLIB_EXT=".sl"
case "${CC}" in
cc|c89)
cpicflags="+Z"
;;
esac
case "${F77}" in
f77|fort77|f90)
fpicflags="+Z"
;;
esac
main_ldflags="-Wl,-E"
if test "${GCC}" = yes; then
shlib_ldflags="-shared -fPIC -Wl,-Bsymbolic"
else
##
## Native cc insists on tacking on crt0.o when it calls ld, and
## crt0.o is not built with PIC. As there seems to be no obvious
## way to tell cc not to do this, we use ld for linking shlibs.
shlib_ld=ld
shlib_ldflags="-b -Bsymbolic"
##
fi
if test "${GXX}" = yes; then
shlib_cxxldflags="-shared -fPIC"
fi
;;
irix*)
cpicflags=
cxxpicflags=
fpicflags=
shlib_ldflags="-shared"
shlib_cxxldflags="-shared"
;;
linux*aout) # GNU Linux/aout
sed '/HAVE_ELF_H/d' confdefs.h > tmp.h ; mv tmp.h confdefs.h
;;
linux*) # GNU Linux/ELF
case "${CC}" in
## Intel compiler
*icc)
cpicflags="-fpic"
;;
## Portland Group
*pgcc)
cpicflags="-fpic"
;;
esac
case "${F77}" in
## Intel compilers
*ifc|*ifort)
fpicflags="-fpic"
;;
## Portland Group
*pgf77|*pgf90|*pgf95)
fpicflags="-fpic"
;;
esac
case "${CXX}" in
## Intel compilers
*icpc|*icc)
cxxpicflags="-fpic"
;;
## Portland Group
*pgCC)
cxxpicflags="-fpic"
;;
esac
## Luke Tierney says that just '-export-dynamic' does not work for
## Intel compilers (icc).
main_ldflags="-Wl,--export-dynamic"
;;
mingw*)
SHLIB_EXT=".dll"
cpicflags=
cxxpicflags=
fpicflags=
;;
netbsd*)
if ${CPP} - -dM < /dev/null | grep __ELF__ >/dev/null ; then
main_ldflags="-export-dynamic"
shlib_ldflags="-shared"
else
shlib_ldflags="-Bshareable"
fi
;;
openbsd*)
## looks like ${wl} is not defined here. Perhaps in libtool code?
if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
main_ldflags="${wl}-export-dynamic"
shlib_ldflags="-shared -fPIC"
fi
;;
osf*)
cpicflags=
cxxpicflags=
fpicflags=
shlib_ldflags="-shared"
;;
solaris*)
## SPARC has only an 8k global object table, 1024 entries on 64-bit,
## so need PIC not pic. They are the same on other Solaris platforms.
shlib_ldflags="-G"
shlib_cxxldflags="-G"
if test "${GCC}" = yes; then
ld=`${CC} -print-prog-name=ld`
ldoutput=`${ld} -v 2>&1 | grep GNU`
if test -n "${ldoutput}"; then
main_ldflags="-Wl,-export-dynamic"
shlib_ldflags="-shared"
fi
else
cpicflags="-KPIC"
if test "`basename ${CXX}`" = "CC" ; then
## Forte version 7 needs -lCstd: Forte 6 does not.
ver=`${CXX} -V 2>&1 | sed 2d | grep 'Forte Developer 7 C++'`
if test -n "${ver}" ; then
shlib_cxxldflags="-G -lCstd"
fi
fi
fi
if test "${G77}" != yes; then
fpicflags="-PIC"
fi
if test "${GXX}" = yes; then
ld=`${CXX} -print-prog-name=ld`
ldoutput=`${ld} -v 2>&1 | grep GNU`
if test -n "${ldoutput}"; then
shlib_cxxldflags="-shared"
fi
else
cxxpicflags="-KPIC"
fi
;;
esac
##
## Completely disable using libtool for building shlibs until libtool
## fully supports at least Fortran and C++.
## ## Step 4. In case we use libtool ...
## if test "${use_libtool}" = yes; then
## case "${host_os}" in
## *)
## ;;
## esac
## fi
##
## Step 5. Overrides from the environment and error checking.
if test -z "${MAIN_LD}"; then
MAIN_LD="${main_ld}"
R_SH_VAR_ADD(MAIN_LDFLAGS, [${main_ldflags}])
fi
: ${CPICFLAGS="${cpicflags}"}
if test -z "${CPICFLAGS}"; then
case "${host_os}" in
aix*|irix*|mingw*|osf*)
;;
*)
AC_MSG_WARN([I could not determine CPICFLAGS.])
AC_MSG_ERROR([See the file doc/html/R-admin.html for more information.])
;;
esac
fi
: ${FPICFLAGS="${fpicflags}"}
if test -z "${FPICFLAGS}"; then
case "${host_os}" in
aix*|irix*|mingw*|osf*)
;;
*)
AC_MSG_WARN([I could not determine FPICFLAGS.])
AC_MSG_ERROR([See the file doc/html/R-admin.html for more information.])
;;
esac
fi
: ${CXXPICFLAGS="${cxxpicflags}"}
if test -z "${CXXPICFLAGS}"; then
case "${host_os}" in
aix*|irix*|mingw*|osf*)
;;
*)
warn_cxxpicflags="I could not determine CXXPICFLAGS."
AC_MSG_WARN([${warn_cxxpicflags}])
;;
esac
fi
if test -z "${SHLIB_LD}"; then
SHLIB_LD="${shlib_ld}"
R_SH_VAR_ADD(SHLIB_LDFLAGS, [${shlib_ldflags}])
fi
if test -z "${SHLIB_LDFLAGS}"; then
AC_MSG_WARN([I could not determine SHLIB_LDFLAGS.])
AC_MSG_ERROR([See the file doc/html/R-admin.html for more information.])
fi
if test -z "${SHLIB_CXXLD}"; then
SHLIB_CXXLD="${shlib_cxxld}"
R_SH_VAR_ADD(SHLIB_CXXLDFLAGS, [${shlib_cxxldflags}])
fi
if test -z "${SHLIB_CXXLDFLAGS}"; then
warn_shlib_cxxldflags="I could not determine SHLIB_CXXLDFLAGS"
AC_MSG_WARN([${warn_shlib_cxxldflags}])
fi
## Step 6. We may need flags different from SHLIB_LDFLAGS and SHLIB_EXT
## for building R as a shared library to link against (the SHLIB_* vars
## just determined are really for loadable modules). On ELF there is no
## difference, but e.g. on Mach-O for Darwin there is.
##
## Also need flags to build the Rlapack shared library on some platforms.
DYLIB_EXT="${SHLIB_EXT}"
dylib_ldflags="${SHLIB_LDFLAGS}"
LIBR_LDFLAGS=""
RLAPACK_LDFLAGS=""
RBLAS_LDFLAGS=""
case "${host_os}" in
aix*)
## Not needed for -brtl linking
# RLAPACK_LDFLAGS="${wl}-bE:\$(top_builddir)/etc/Rlapack.exp"
# LAPACK_LDFLAGS="${wl}-bI:\$(R_HOME)/etc/Rlapack.exp"
;;
darwin*)
DYLIB_EXT=".dylib"
dylib_ldflags="${darwin_dylib_ldflags}"
MAJR_VERSION=`echo "${PACKAGE_VERSION}" | sed -e "s/[[\.]][[1-9]]$/.0/"`
LIBR_LDFLAGS="-install_name libR.dylib -compatibility_version ${MAJR_VERSION} -current_version ${PACKAGE_VERSION} -headerpad_max_install_names"
RLAPACK_LDFLAGS="-install_name libRlapack.dylib -compatibility_version ${MAJR_VERSION} -current_version ${PACKAGE_VERSION} -headerpad_max_install_names"
## don't use version in libRblas so we can replace it with any BLAS implementation
RBLAS_LDFLAGS="-install_name libRblas.dylib -headerpad_max_install_names"
;;
hpux*)
## Needs to avoid embedding a relative path ../../../bin.
## See the above code for shlib_ldflags for reasons why we currently
## cannot always use '-Wl,+s'.
if test "${GCC}" = yes; then
LAPACK_LDFLAGS="-Wl,+s"
else
LAPACK_LDFLAGS="+s"
fi
;;
openbsd*)
PACKAGE_VERSION_MAJOR=`echo "${PACKAGE_VERSION}" | \
sed -e "s/\.//" -e "s/\..*$//"`
PACKAGE_VERSION_MINOR=`echo "${PACKAGE_VERSION}" | \
sed -e "s/.*\.\([[^.]][[^.]]*$\)/\1/"`
DYLIB_EXT=".so.${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}"
;;
esac
if test -z "${DYLIB_LD}"; then
DYLIB_LD="${SHLIB_LD}"
R_SH_VAR_ADD(DYLIB_LDFLAGS, [${dylib_ldflags}])
else
if test -z "${DYLIB_LDFLAGS}"; then
DYLIB_LDFLAGS="${dylib_ldflags}"
fi
fi
AM_CONDITIONAL(DYLIB_UNDEFINED_ALLOWED, [test "x${dylib_undefined_allowed}" = xyes])
AC_SUBST(MAIN_LD)
AC_SUBST(MAIN_LDFLAGS)
AC_SUBST(CPICFLAGS)
AC_SUBST(CXXPICFLAGS)
AC_SUBST(DYLIB_LD)
AC_SUBST(DYLIB_LDFLAGS)
AC_SUBST(FCPICFLAGS)
AC_SUBST(FPICFLAGS)
AC_SUBST(SHLIB_CXXLD)
AC_SUBST(SHLIB_CXXLDFLAGS)
AC_SUBST(SHLIB_LD)
AC_SUBST(SHLIB_LDFLAGS)
AC_SUBST(SHLIB_LIBADD)
AC_SUBST(SHLIB_EXT)
AC_DEFINE_UNQUOTED(SHLIB_EXT, "${SHLIB_EXT}",
[Define this to be the extension used for shared libraries on your
system.])
AM_CONDITIONAL(USE_EXPORTFILES, [test "x${use_exportfiles}" = xyes])
AC_SUBST(DYLIB_EXT)
AC_SUBST(LIBR_LDFLAGS)
AC_SUBST(RBLAS_LDFLAGS)
AC_SUBST(RLAPACK_LDFLAGS)
AC_SUBST(LAPACK_LDFLAGS)
AC_SUBST(FW_VERSION)
### Now we have found all the flags, we need to use them to test appropriately.
### We don't currently have any C++ tests, but future-proof.
### In principle we should do this before testing for C-Fortran compatibility.
CPPFLAGS_KEEP=${CPPFLAGS}
CFLAGS_KEEP=${CFLAGS}
FFLAGS_KEEP=${FFLAGS}
CXXFLAGS_KEEP=${CXXFLAGS}
CPPFLAGS="${CPPFLAGS} ${R_XTRA_CPPFLAGS}"
if test "${want_R_shlib}" = yes; then
CFLAGS="${CFLAGS} ${CPICFLAGS} ${R_XTRA_CFLAGS}"
FFLAGS="${FFLAGS} ${FPICFLAGS} ${R_XTRA_FFLAGS}"
CXXFLAGS="${CXXFLAGS} ${CXXPICFLAGS} ${R_XTRA_CXXFLAGS}"
else
CFLAGS="${CFLAGS} ${R_XTRA_CFLAGS}"
FFLAGS="${FFLAGS} ${R_XTRA_FFLAGS}"
CXXFLAGS="${CXXFLAGS} ${R_XTRA_CXXFLAGS}"
fi
### * Checks for library functions.
AC_CHECK_TYPES([off_t])
AC_FUNC_ALLOCA
AC_CHECK_DECLS([alloca], , ,
[#ifdef HAVE_ALLOCA_H
# include
#endif])
## fseeko/ftello may be macros, matherr is redefined
AC_CHECK_FUNCS(fseeko ftello isblank matherr)
R_CHECK_FUNCS([fcntl], [#include ])
R_CHECK_FUNCS([getgrgid], [#include ])
R_CHECK_FUNCS([expm1 hypot log1p log2 log10 rint], [#include ])
R_CHECK_FUNCS([getpwuid], [#include ])
R_CHECK_FUNCS([sigaction sigaltstack sigemptyset], [#include ])
R_CHECK_FUNCS([va_copy __va_copy], [#include ])
R_CHECK_FUNCS([fdopen popen], [#include ])
R_CHECK_FUNCS([setenv system unsetenv], [#include ])
R_CHECK_FUNCS([strcoll strerror], [#include ])
R_CHECK_FUNCS([getrlimit getrusage], [#include ])
R_CHECK_FUNCS([mkfifo stat], [#include ])
R_CHECK_FUNCS([gettimeofday], [#include ])
R_CHECK_FUNCS([times], [#include ])
R_CHECK_FUNCS([access chdir ftruncate getcwd getuid symlink sysconf],
[#ifdef HAVE_UNISTD_H
# include
#endif])
## We really need putenv, and make check fails without it so it seems
## everyone has it, possibly not declared.
AC_CHECK_FUNCS(putenv)
AC_CHECK_DECLS([putenv], , , [#include ])
## this is a GNU extension so usually hidden
AC_CHECK_FUNCS(vasprintf)
AC_CHECK_DECLS([vasprintf], , , [#include ])
## this is a BSD extension. Some systems have it in unistd.h.
AC_CHECK_FUNCS(realpath)
AC_CHECK_DECLS([realpath], , , [#include
#include ])
##
## No need checking for bcopy bzero memcpy mempcpy even though ifnames
## might report corresponding HAVE_FOO conditionals.
##
if test $ac_cv_type_off_t=yes -a $ac_cv_func_fseeko=yes -a $ac_cv_func_ftello=yes; then
AC_DEFINE(HAVE_OFF_T, 1,
[Define if you have off_t, fseeko and ftello.])
fi
## IEEE 754. We rely on this in e.g. the working log test.
R_IEEE_754
## check whether nl_langinfo(CODESET) is in langinfo.h
## defines HAVE_LANGINFO_CODESET if it's there
AM_LANGINFO_CODESET
## Used to build src/include/Rmath.h.
##
## we don't use AC_CONFIG_HEADERS on Rmath.h.in because
## a) that would comment out #undef statements in Rmath.h.in and
## b) Rmath.h should be a self-contained file for standalone Rmath use.
##
if test "${ac_cv_have_decl_expm1}" = yes; then
RMATH_HAVE_EXPM1="# define HAVE_EXPM1 1"
else
RMATH_HAVE_EXPM1="# undef HAVE_EXPM1"
fi
AC_SUBST(RMATH_HAVE_EXPM1)
if test "${ac_cv_have_decl_log1p}" = yes; then
RMATH_HAVE_LOG1P="# define HAVE_LOG1P 1"
else
RMATH_HAVE_LOG1P="# undef HAVE_LOG1P"
fi
AC_SUBST(RMATH_HAVE_LOG1P)
## Do we need substitutes?
AC_REPLACE_FUNCS(acosh asinh atanh mkdtemp snprintf strdup strncasecmp vsnprintf)
## Enable declarations in Defn.h?
AC_CHECK_DECLS([acosh, asinh, atanh], , , [#include ])
AC_CHECK_DECLS([mkdtemp, snprintf, strdup, strncasecmp, vsnprintf])
AC_SEARCH_LIBS(connect, [socket])
AC_SEARCH_LIBS(gethostbyname, [nsl socket])
AC_SEARCH_LIBS(xdr_string, [nsl])
R_FUNC___SETFPUCW
R_FUNC_CALLOC
if test "${ac_cv_func_finite}" = "yes"; then
R_FUNC_FINITE
fi
if test "${ac_cv_have_decl_isfinite}" = "yes"; then
R_FUNC_ISFINITE
fi
R_FUNC_LOG
R_FUNC_LOG1P
R_FUNC_FTELL
R_C99_COMPLEX
## check for vecLib framework (potentially to be used for BLAS)
## in theory vecLib is platform-independent, in practice only
## Apple's Mac OS X is known to provide it
R_CHECK_FRAMEWORK(cblas_cdotu_sub, vecLib)
## BLAS.
##
## This has to come *after* checking for Fortran 77 compiler/converter
## characteristics (notably name mangling and FLIBS).
##
if test "${use_blas}" = yes; then
## may acx_blas_ok to yes
R_BLAS_LIBS
fi
if test "${acx_blas_ok}" != "yes"; then
case "${host_os}" in
darwin[[1-7]]*|aix*)
;;
*)
if test "${use_blas_shlib}" = "unset"; then
use_blas_shlib="yes"
fi
;;
esac
fi
AM_CONDITIONAL(BLAS_SHLIB, [test "x${use_blas_shlib}" = xyes])
case "${host_os}" in
darwin*)
## In order to allow the R build to be relocatable, we strip paths
## from all shlibs and rely on DYLD_LIBRARY_PATH. Unfortunately
## Darwin linker ignores it at build-time and doesn't use -L to
## resolve dylib dependencies, so libRblas will not be found unless
## we tell ld where it lives. I don't know of any more elegant solution :/
if test "x${use_blas_shlib}" = xyes; then
LIBR="${LIBR} -dylib_file libRblas.dylib:\$(R_HOME)/lib\$(R_ARCH)/libRblas.dylib"
fi
;;
esac
AC_SUBST(LIBR)
## This version is used to build a shared BLAS lib
BLAS_LIBS0=${BLAS_LIBS}
## external BLAS + shared BLAS lib = we need to pass symbols through
## this may require some magic
if test "${acx_blas_ok}" = yes -a "${use_blas_shlib}" = yes; then
case "${host_os}" in
darwin*)
## test whether we can see symbols through the proxy BLAS library
## this test could be modified to not be Darwin-specific,
## however the fix is darwin-specific
if test "${r_cv_prog_f77_append_underscore}" = yes; then
dgemm=dgemm_
xerbla=xerbla_
else
dgemm=dgemm
xerbla=xerbla
fi
AC_MSG_CHECKING([whether external BLAS is visible through libRblas])
AC_CACHE_VAL([r_cv_blas0_passthrough],[
[cat > conftestl.c <&AS_MESSAGE_LOG_FD
${CC} ${CFLAGS} conftestl.c ${SHLIB_LDFLAGS} -o libconftest${DYLIB_EXT} ${LIBS} ${BLAS_LIBS} 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
[cat > conftest.c <&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
if ${CC} ${LDFLAGS} -o conftest${ac_exeext} \
conftest.${ac_objext} -L. -lconftest \
1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD;
then
## redirect error messages to config.log
output=`./conftest${ac_exeext} 2>&AS_MESSAGE_LOG_FD`
if test ${?} = 0; then
r_cv_blas0_passthrough=yes
fi
fi
fi
])
if test -n "${r_cv_blas0_passthrough}"; then
r_cv_blas0_passthrough=yes
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
AC_MSG_CHECKING([can it be fixed by using -sub_umbrella])
ac_test_BLAS_LIBS=`echo "${BLAS_LIBS}"|sed -e s/-framework/-sub_umbrella/`
rm -f libconftest.dylib
echo "${CC} ${CFLAGS} conftestl.c ${SHLIB_LDFLAGS} -o libconftest${DYLIB_EXT} ${LIBS} ${BLAS_LIBS} ${ac_test_BLAS_LIBS}" >&AS_MESSAGE_LOG_FD
${CC} ${CFLAGS} conftestl.c ${SHLIB_LDFLAGS} -o libconftest${DYLIB_EXT} ${LIBS} ${BLAS_LIBS} ${ac_test_BLAS_LIBS} 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
if ${CC} ${CFLAGS} -c conftest.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
if ${CC} ${LDFLAGS} -o conftest${ac_exeext} \
conftest.${ac_objext} -L. -lconftest \
1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD;
then
## redirect error messages to config.log
output=`./conftest${ac_exeext} 2>&AS_MESSAGE_LOG_FD`
if test ${?} = 0; then
r_cv_blas0_passthrough=yes
fi
fi
fi
if test -n "${r_cv_blas0_passthrough}"; then
r_cv_blas0_passthrough=yes
AC_MSG_RESULT([yes])
BLAS_LIBS0="${BLAS_LIBS} ${ac_test_BLAS_LIBS}"
else
AC_MSG_RESULT([no])
AC_MSG_ERROR([Cannot build Rblas shared library such that it makes external BLAS visible.
An alternative is to use internal BLAS instead and replace
libRblas.dylib with the external BLAS library after R is built.])
fi
fi
rm -f conftest.c conftest.o conftestl.c libconftest.dylib
;;
esac
fi
AC_SUBST(BLAS_LIBS0)
if test "${use_blas_shlib}" = yes; then
## set BLAS_LIBS to point at local version
BLAS_LIBS="-L\$(R_HOME)/lib\$(R_ARCH) -lRblas"
fi
AM_CONDITIONAL(USE_VECLIB_G95FIX, [test "x${use_veclib_g95fix}" = xyes])
AM_CONDITIONAL(USE_EXTERNAL_BLAS, [test "${acx_blas_ok}" = "yes"])
## LAPACK.
## The default has already been set on MacOS X: otherwise it is "no"
## and so this test fails.
if test "${use_lapack}" = "yes"; then
R_LAPACK_LIBS
fi
if test "${acx_lapack_ok}" != "yes"; then
LAPACK_LIBS="-L\$(R_HOME)/lib\$(R_ARCH) -lRlapack"
fi
AC_SUBST(LAPACK_LIBS)
AM_CONDITIONAL(USE_EXTERNAL_LAPACK, [test "${acx_lapack_ok}" = "yes"])
### * Checks for system services.
AC_SUBST(R_MODULES)
## iconv headers and function.
R_ICONV
## support for MBCS
case "${host_os}" in
mingw*)
r_cv_iconv_latin1=yes
;;
esac
R_MBCS
## X11.
R_X11
if test "${use_X11}" = yes; then
R_MODULES=X11
else
R_MODULES=
fi
## check if X11 typedefs KeySym
R_TYPE_KEYSYM
## check for CoreFoundation framework (chances are much higher
## that we can build AQUA if this one is present)
R_CHECK_FRAMEWORK(CFStringGetSystemEncoding, CoreFoundation)
## Aqua
R_AQUA
AM_CONDITIONAL(BUILD_AQUA, [test "x${use_aqua}" = xyes])
AC_SUBST(use_aqua)
## Tcl/Tk.
R_TCLTK
## BSD networking.
R_BSD_NETWORKING
## Bitmap headers and libraries.
R_BITMAPS
## XDR headers and library routines.
R_XDR
## zlib headers and libraries.
R_ZLIB
## bzlib headers and libraries.
R_BZLIB
## PCRE headers and libraries.
R_PCRE
## POSIX times.
R_SYS_POSIX_LEAPSECONDS
## R profiling.
if test "${want_R_profiling}" = yes; then
AC_CHECK_FUNCS(setitimer,
[AC_DEFINE(R_PROFILING, 1,
[Define this to enable R-level profiling.])],
[want_R_profiling="no"])
fi
AC_SUBST(R_PROFILING)
## R profiling.
if test "${want_memory_profiling}" = yes; then
AC_DEFINE(R_MEMORY_PROFILING, 1, [Define this to enable memory profiling.])
fi
## Large-file-support
AC_SYS_LARGEFILE
AC_FUNC_FSEEKO
## Valgrind instrumentation
if test ${valgrind_level} -eq 0; then
AC_DEFINE(NVALGRIND, 1, [Define to disable Valgrind instrumentation])
fi
AC_DEFINE_UNQUOTED(VALGRIND_LEVEL, ${valgrind_level}, [Define as 1 or 2 to specify levels of Valgrind instrumentation])
## KERN_USRSTACK support (BSD, Darwin, ...)
R_KERN_USRSTACK
## check for visible __libc_stack_end on Linux
case "${host_os}" in
linux*)
AC_CACHE_CHECK([for visible __lib_stack_end],
[r_cv_libc_stack_end],
[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include "confdefs.h"
#include
extern void * __libc_stack_end;
int main () {
exit(0);
}
]])], [r_cv_libc_stack_end=yes], [r_cv_libc_stack_end=no],
[r_cv_libc_stack_end=no])])
if test "${r_cv_libc_stack_end}" = yes; then
AC_DEFINE(HAVE_LIBC_STACK_END, 1, [Define if __libc_stack_end is visible.])
fi
esac
### * Miscellaneous.
## Printing.
## We look to see whether we have 'lpr' or 'lp'. Some platforms
## provide both (SunOS and HPUX), and in those cases we choose lpr.
if test -z "${R_PRINTCMD}"; then
AC_CHECK_PROGS(R_PRINTCMD, [lpr lp])
fi
AC_DEFINE_UNQUOTED(R_PRINTCMD, "${R_PRINTCMD}",
[Define this to be printing command on your system.])
## Default paper size.
AC_PATH_PROG(PAPERCONF, paperconf, false)
: ${PAPERSIZE=a4}
papersize=`${PAPERCONF}`
test -z "${papersize}" && papersize="${PAPERSIZE}"
: ${R_PAPERSIZE="${papersize}"}
AC_SUBST(R_PAPERSIZE)
## Saving.
AC_SUBST(R_BATCHSAVE)
## Java support
R_JAVA
## F90/F95 support
AC_PROG_FC()
AC_LANG_PUSH(Fortran)
AC_FC_SRCEXT(f90, [dummy=1], [dummy=0])
AC_FC_SRCEXT(f95, [dummy=1], [dummy=0])
AC_LANG_POP()
: ${SHLIB_FCLD="${FC}"}
: ${SHLIB_FCLDFLAGS="${SHLIB_LDFLAGS}"}
AC_SUBST(SHLIB_FCLD)
AC_SUBST(SHLIB_FCLDFLAGS)
## Look for FCPICFLAGS
## Debian in their wisdom have f95 as a link to gfortran, so
## use this to pick out gfortran (even though it is unreliable).
if test "${ac_cv_fc_compiler_gnu}" = yes; then
case "${host_cpu}" in
sparc*|ppc64|s390*)
fcpicflags="-fPIC"
;;
*)
fcpicflags="-fpic"
;;
esac
fi
case "${host_os}" in
darwin*)
fcpicflags="-fno-common"
;;
hpux*)
case "${FC}" in
f90)
fcpicflags="+Z"
;;
esac
;;
linux*)
case "${FC}" in
## Intel compilers: probably get identified as GNU, but make sure.
*ifc|*ifort)
fcpicflags="-fpic"
;;
## Portland Group
*pgf95|*pgf90)
fcpicflags="-fpic"
;;
esac
;;
solaris*)
if test "${ac_cv_fc_compiler_gnu}" = yes; then
fcpicflags="-fPIC"
else
fcpicflags="-PIC"
fi
;;
esac
: ${FCPICFLAGS="${fcpicflags}"}
if test -z "${FCPICFLAGS}"; then
case "${host_os}" in
aix*|irix*|mingw*|osf*)
;;
*)
AC_MSG_WARN([I could not determine FCPICFLAGS.])
;;
esac
fi
## Make sure -L terms come first in LIBS.
LIBS1=""
LIBS2=""
for arg in ${LIBS}; do
case "${arg}" in
-L*)
R_SH_VAR_ADD(LIBS1, [${arg}])
;;
*)
R_SH_VAR_ADD(LIBS2, [${arg}])
;;
esac
done
LIBS="${LIBS1} ${LIBS2}"
## R_LD_LIBRARY_PATH.
##
## This should not be necessary when using libtool for linking.
## In any case, is this really good enough?
## On Linux, do not add the ld.so system directories '/lib' and
## '/usr/lib', so that the entries from '/etc/ld.so.conf' are not
## shadowed (otherwise, e.g. optimized ATLAS libs would not be used).
## On OS X (Darwin) /usr/X11R6/lib shadows OpenGL framework and is not
## needed in DYLD_LIBRARY_PATH.
case "${host_os}" in
linux*)
r_ld_library_defaults="/usr/lib64:/lib64:/usr/lib:/lib"
;;
solaris*)
r_ld_library_defaults="/usr/lib:/lib"
;;
darwin*)
r_ld_library_defaults="/usr/X11R6/lib"
;;
*)
r_ld_library_defaults=
;;
esac
for arg in ${LDFLAGS} ${FLIBS} ${BLAS_LIBS} ${LAPACK_LIBS} ${X_LIBS} \
${TCLTK_LIBS}; do
case "${arg}" in
-L*)
lib=`echo ${arg} | sed "s/^-L//"`
r_want_lib=true
## don't add anything for Darwin
case "${host_os}" in darwin*) r_want_lib=false ;; esac
## Do not add non-existent directories.
test -d "${lib}" || r_want_lib=false
if test x"${r_want_lib}" = xtrue; then
## Canonicalize (/usr/lib/gcc-lib/i486-linux/3.3.4/../../..).
lib=`cd "${lib}" && ${GETWD}`
## Do not add something twice, or default paths.
r_save_IFS="${IFS}"; IFS="${PATH_SEPARATOR}"
for dir in ${R_LD_LIBRARY_PATH}${IFS}${r_ld_library_defaults}; do
if test x"${dir}" = x"${lib}"; then
r_want_lib=false
break
fi
done
IFS="${r_save_IFS}"
if test x"${r_want_lib}" = xtrue; then
R_SH_VAR_ADD(R_LD_LIBRARY_PATH, [${lib}], [${PATH_SEPARATOR}])
fi
fi
;;
esac
done
## Handle JAVA_LIBS specially so that users can conveniently set just
## R_JAVA_LD_LIBRARY_PATH in their environment.
for arg in ${JAVA_LIBS}; do
case "${arg}" in
-L*)
lib=`echo ${arg} | sed "s/^-L//"`
r_want_lib=true
## don't add anything for Darwin
case "${host_os}" in darwin*) r_want_lib=false ;; esac
## Do not add non-existent directories.
test -d "${lib}" || r_want_lib=false
if test x"${r_want_lib}" = xtrue; then
## Canonicalize (/usr/lib/j2sdk1.5-sun/jre/../lib/i386).
lib=`cd "${lib}" && ${GETWD}`
## Do not add something twice, or something already in
## R_LD_LIBRARY_PATH or the defaults.
r_save_IFS="${IFS}"; IFS="${PATH_SEPARATOR}"
for dir in ${R_JAVA_LD_LIBRARY_PATH}${IFS}${R_LD_LIBRARY_PATH}${IFS}${r_ld_library_defaults}; do
if test x"${dir}" = x"${lib}"; then
r_want_lib=false
break
fi
done
IFS="${r_save_IFS}"
if test x"${r_want_lib}" = xtrue; then
R_SH_VAR_ADD(R_JAVA_LD_LIBRARY_PATH, [${lib}], [${PATH_SEPARATOR}])
fi
fi
;;
esac
done
##
AC_SUBST(R_LD_LIBRARY_PATH)
AC_SUBST(R_JAVA_LD_LIBRARY_PATH)
## Recommended packages.
if test "${use_recommended_packages}" = yes; then
R_RECOMMENDED_PACKAGES
fi
AM_CONDITIONAL(USE_RECOMMENDED_PACKAGES,
[test "x${use_recommended_packages}" = xyes])
# i18n support. To update to a new version of gettext, run (untested):
# gettextize -f -c --intl
AM_NLS
if test "${USE_NLS}" = "yes"; then
AM_GNU_GETTEXT_VERSION(0.14.5)
AM_GNU_GETTEXT(, [need-ngettext], [../extra/intl])
if test -n "$INTL_MACOSX_LIBS"; then
XTRA_INTL_CPPFLAGS=-I/System/Library/Frameworks/CoreFoundation.framework/Headers
fi
else
USE_INCLUDED_LIBINTL=no
fi
AC_SUBST(XTRA_INTL_CPPFLAGS)
AM_CONDITIONAL(USE_NLS, [test "x${USE_NLS}" = xyes])
AM_CONDITIONAL(BUILD_LIBINTL, [test "x${USE_INCLUDED_LIBINTL}" = xyes])
### * Win32 overrides
case "${host_os}" in
mingw*)
AC_DEFINE(HAVE_ICONV, 1)
AC_DEFINE(HAVE_ICONVLIST, 1)
AC_DEFINE(HAVE_ICONV_H, 1)
AC_DEFINE(HAVE_INTERNET, 1)
AC_DEFINE(HAVE_JPEG, 1)
AC_DEFINE(HAVE_PNG, 1)
AC_DEFINE(HAVE_POSIX_SETJMP, 1)
AC_DEFINE(HAVE_SOCKETS, 1)
AC_DEFINE(HAVE_TCLTK, 1)
AC_DEFINE(HAVE_TIMES, 1)
AC_DEFINE(ICONV_LATIN1, 1)
want_R_profiling=yes
AC_DEFINE(R_PROFILING, 1)
AC_DEFINE(SUPPORT_LIBXML, 1)
;;
esac
### * Output.
AC_CONFIG_HEADERS([src/include/config.h])
AC_CONFIG_FILES(
[Makeconf
Makefile
doc/Makefile
doc/html/Makefile
doc/html/search/Makefile
doc/manual/Makefile
etc/Makefile
etc/Makeconf
etc/Renviron
etc/ldpaths
m4/Makefile
po/Makefile.in
share/Makefile
src/Makefile
src/appl/Makefile
src/extra/Makefile
src/extra/blas/Makefile
src/extra/bzip2/Makefile
src/extra/intl/Makefile
src/extra/pcre/Makefile
src/extra/xdr/Makefile
src/extra/zlib/Makefile
src/include/Makefile
src/include/Rmath.h0
src/include/R_ext/Makefile
src/library/Recommended/Makefile
src/library/Makefile
src/library/base/DESCRIPTION
src/library/base/Makefile
src/library/datasets/DESCRIPTION
src/library/datasets/Makefile
src/library/graphics/DESCRIPTION
src/library/graphics/Makefile
src/library/grDevices/DESCRIPTION
src/library/grDevices/Makefile
src/library/grDevices/src/Makefile
src/library/grid/DESCRIPTION
src/library/grid/Makefile
src/library/grid/src/Makefile
src/library/methods/DESCRIPTION
src/library/methods/Makefile
src/library/methods/src/Makefile
src/library/profile/Makefile
src/library/stats/DESCRIPTION
src/library/stats/Makefile
src/library/stats/src/Makefile
src/library/stats4/DESCRIPTION
src/library/stats4/Makefile
src/library/splines/DESCRIPTION
src/library/splines/Makefile
src/library/splines/src/Makefile
src/library/tcltk/DESCRIPTION
src/library/tcltk/Makefile
src/library/tcltk/src/Makefile
src/library/tools/DESCRIPTION
src/library/tools/Makefile
src/library/tools/src/Makefile
src/library/utils/DESCRIPTION
src/library/utils/Makefile
src/main/Makefile
src/modules/Makefile
src/modules/X11/Makefile
src/modules/internet/Makefile
src/modules/lapack/Makefile
src/modules/vfonts/Makefile
src/nmath/Makefile
src/nmath/standalone/Makefile
src/scripts/Makefile
src/scripts/COMPILE
src/scripts/INSTALL
src/scripts/REMOVE
src/scripts/R.sh
src/scripts/Rdconv
src/scripts/Rprof
src/scripts/SHLIB
src/scripts/Sd2Rd
src/scripts/build
src/scripts/check
src/unix/Makefile
tests/Makefile
tests/Embedding/Makefile
tests/Examples/Makefile
tests/Native/Makefile
tools/Makefile
])
AC_CONFIG_COMMANDS([stamp-h],
[test -f src/include/stamp-h || echo timestamp > src/include/stamp-h])
### now reset flags
CPPFLAGS=${CPPFLAGS_KEEP}
CFLAGS=${CFLAGS_KEEP}
FFLAGS=${FFLAGS_KEEP}
CXXFLAGS=${CXXFLAGS_KEEP}
AC_OUTPUT
## Summarize configure results.
##
## Doing this via AC_CONFIG_COMMANDS would require explicitly passing all
## configure variables to config.status.
##
r_c_compiler="${CC} ${R_XTRA_CFLAGS} ${CFLAGS}"
r_cxx_compiler="${CXX} ${R_XTRA_CXXFLAGS} ${CXXFLAGS}"
r_f77_compiler="${F77} ${R_XTRA_FFLAGS} ${FFLAGS}"
r_f95_compiler="${FC} ${FCFLAGS}"
r_interfaces=
for item in X11 aqua tcltk; do
if eval "test \${use_${item}} = yes"; then
R_SH_VAR_ADD(r_interfaces, [${item}], [, ])
fi
done
r_external_libs=
if test "${use_readline}" = yes; then
r_external_libs=readline
fi
if test "${acx_blas_ok}" = "yes"; then
## Try to figure out which BLAS was used.
case "${BLAS_LIBS0}" in
*-latlas*) r_blas=ATLAS ;;
*-lsgemm*) r_blas=PhiPack ;;
*sunperf*) r_blas=SunPerf ;;
*-lessl*) r_blas=ESSL ;;
*vecLib*) r_blas=vecLib ;;
"") r_blas=none ;;
*) r_blas=generic ;;
esac
R_SH_VAR_ADD(r_external_libs, [BLAS(${r_blas})], [, ])
fi
if test "${acx_lapack_ok}" = "yes"; then
## Try to figure out which LAPACK was used.
case "${LAPACK_LIBS}" in
*sunperf*) r_lapack=SunPerf ;;
"") r_lapack="in blas" ;;
*) r_lapack=generic ;;
esac
R_SH_VAR_ADD(r_external_libs, [LAPACK(${r_lapack})], [, ])
fi
r_capabilities=
if test "${have_png}" = yes; then
R_SH_VAR_ADD(r_capabilities, [PNG], [, ])
fi
if test "${have_jpeg}" = yes; then
R_SH_VAR_ADD(r_capabilities, [JPEG], [, ])
fi
if test "${r_cv_iconv_latin1}" = yes; then
R_SH_VAR_ADD(r_capabilities, [iconv], [, ])
fi
if test "${want_mbcs_support}" = yes; then
R_SH_VAR_ADD(r_capabilities, [MBCS], [, ])
fi
if test "${USE_NLS}" = yes; then
R_SH_VAR_ADD(r_capabilities, [NLS], [, ])
fi
r_options=
if test "${want_R_framework}" = yes; then
R_SH_VAR_ADD(r_options, [framework], [, ])
elif test "${want_R_shlib}" = yes; then
R_SH_VAR_ADD(r_options, [shared R library], [, ])
fi
if test "${use_blas_shlib}" = yes; then
R_SH_VAR_ADD(r_options, [shared BLAS], [, ])
fi
if test "${want_R_profiling}" = yes; then
R_SH_VAR_ADD(r_options, [R profiling], [, ])
fi
if test "${want_memory_profiling}" = yes; then
R_SH_VAR_ADD(r_options, [memory profiling], [, ])
fi
if test "${use_maintainer_mode}" = yes; then
R_SH_VAR_ADD(r_options, [maintainer mode], [, ])
fi
if test "${use_strict_barrier}" = yes; then
R_SH_VAR_ADD(r_options, [strict barrier], [, ])
fi
if test "${want_linux_lfs}" = yes; then
R_SH_VAR_ADD(r_options, [Linux LFS], [, ])
fi
AC_MSG_RESULT(
[
R is now configured for ${host}
Source directory: ${srcdir}
Installation directory: ${prefix}
C compiler: ${r_c_compiler}
Fortran 77 compiler: ${r_f77_compiler}
C++ compiler: ${r_cxx_compiler}
Fortran 90/95 compiler: ${r_f95_compiler}
Interfaces supported: ${r_interfaces}
External libraries: ${r_external_libs}
Additional capabilities: ${r_capabilities}
Options enabled: ${r_options}
Recommended packages: ${use_recommended_packages}
])
if test -n "${warn_f77_cc_double_complex}"; then
AC_MSG_WARN([${warn_f77_cc_double_complex}])
fi
if test -n "${warn_xcompile_sizeof_int}"; then
AC_MSG_WARN([${warn_xcompile_sizeof_int}])
fi
if test -n "${warn_xcompile_sizeof_long}"; then
AC_MSG_WARN([${warn_xcompile_sizeof_long}])
fi
if test -n "${warn_type_socklen}"; then
AC_MSG_WARN([${warn_type_socklen}])
fi
if test -n "${warn_cxxpicflags}"; then
AC_MSG_WARN([${warn_cxxpicflags}])
fi
if test -n "${warn_shlib_cxxldflags}"; then
AC_MSG_WARN([${warn_shlib_cxxldflags}])
fi
if test -n "${warn_cxxpicflags}"; then
AC_MSG_WARN([${warn_cxxpicflags}])
fi
if test -n "${warn_fcpicflags}"; then
AC_MSG_WARN([${warn_fcpicflags}])
fi
if test -n "${warn_libglade_version}"; then
AC_MSG_WARN([${warn_libglade_version}])
fi
if test -n "${warn_tcltk_version}"; then
AC_MSG_WARN([${warn_tcltk_version}])
fi
if test -n "${warn_perl5}"; then
AC_MSG_WARN([${warn_perl5}])
fi
if test -n "${warn_dvi}"; then
AC_MSG_WARN([${warn_dvi}])
fi
if test -n "${warn_info}"; then
AC_MSG_WARN([${warn_info}])
fi
if test -n "${warn_pdf}"; then
AC_MSG_WARN([${warn_pdf}])
fi
if test -n "${warn_pager}"; then
AC_MSG_WARN([${warn_pager}])
fi
if test -n "${warn_browser}"; then
AC_MSG_WARN([${warn_browser}])
fi
if test -n "${warn_pdfviewer}"; then
AC_MSG_WARN([${warn_pdfviewer}])
fi
### Local variables: ***
### mode: outline-minor ***
### outline-regexp: "### [*]+" ***
### End: ***