### R.m4 -- extra macros for configuring R -*- Autoconf -*- ### ### Copyright (C) 1998-2002 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, 59 Temple Place -- Suite 330, Boston, MA ### 02111-3307, USA. ## R_ARG_WITH_EXCLUSIVE ## -------------------- AC_DEFUN([R_ARG_WITH_EXCLUSIVE], [if test "${with_$1+set}" = set; then if test "${with_$2+set}" = set; then if test "$with_$2" = no; then true else $3 fi fi fi ])# R_ARG_WITH_EXCLUSIVE ## R_ARG_USE ## --------- AC_DEFUN([R_ARG_USE], [if test "${withval}" = no; then use_$1=false else use_$1=true fi ])# R_ARG_USE ## R_PROG_AR ## --------- AC_DEFUN([R_PROG_AR], [AC_CHECK_PROGS(AR, [${AR} ar]) : ${ARFLAGS="rc"} AC_SUBST(ARFLAGS) ])# R_PROG_AR ## R_PROG_INSTALL ## -------------- AC_DEFUN([R_PROG_INSTALL], [AC_REQUIRE([AC_PROG_INSTALL]) warn_install="redefining INSTALL to be `pwd`/tools/install-sh -c" case "${INSTALL}" in [[!/]]*install-sh*) ## Fix a bug in older versions of autoconf---the path of the ## install shell script is not cached. Could also use an absolute ## path in AC_CONFIG_AUX_DIR(). ## ## Is this still needed? INSTALL="\$\(top_srcdir\)/tools/install-sh -c" AC_MSG_WARN([${warn_install}]) ## ;; esac case "${host_os}" in aix*|hpux*) ## installbsd on AIX does not seem to work? INSTALL="\$\(top_srcdir\)/tools/install-sh -c" AC_MSG_WARN([${warn_install}]) ;; esac ])# R_PROG_INSTALL ## R_PROG_PAGER ## ------------ AC_DEFUN([R_PROG_PAGER], [AC_PATH_PROGS(PAGER, [${PAGER} less more page pg], false) if test "${PAGER}" = false; then warn_pager="I could not determine a pager" AC_MSG_WARN([${warn_pager}]) fi ])# R_PROG_PAGER ## R_PROG_PERL ## ----------- AC_DEFUN([R_PROG_PERL], [AC_PATH_PROGS(PERL, [${PERL} perl]) if test -n "${PERL}"; then _R_PROG_PERL_VERSION else ## ## Add some explanation why we do this ... AC_PATH_PROGS(FALSE, false) PERL="${FALSE}" ## fi if test "${r_cv_prog_perl_v5}" = yes; then NO_PERL5=false else warn_perl5="you cannot build the object documentation system" AC_MSG_WARN([${warn_perl5}]) NO_PERL5=true fi AC_SUBST(NO_PERL5) ])# R_PROG_PERL ## _R_PROG_PERL_VERSION ## -------------------- AC_DEFUN([_R_PROG_PERL_VERSION], [AC_CACHE_CHECK([whether perl version is at least 5.004], r_cv_prog_perl_v5, [if ${PERL} -e 'require 5.004 or exit 1'; then r_cv_prog_perl_v5=yes else r_cv_prog_perl_v5=no fi]) ])# _R_PROG_PERL_VERSION ## R_PROG_TEXMF ## ------------ AC_DEFUN([R_PROG_TEXMF], [AC_REQUIRE([R_PROG_PERL]) AC_PATH_PROGS(DVIPS, [${DVIPS} dvips], false) AC_PATH_PROGS(TEX, [${TEX} tex], false) AC_PATH_PROGS(LATEX, [${LATEX} latex], false) if test -z "${ac_cv_path_LATEX}" ; then warn_dvi="you cannot build DVI versions of the R manuals" AC_MSG_WARN([${warn_dvi}]) fi AC_PATH_PROGS(MAKEINDEX, [${MAKEINDEX} makeindex], false) AC_PATH_PROGS(PDFTEX, [${PDFTEX} pdftex], false) AC_PATH_PROGS(PDFLATEX, [${PDFLATEX} pdflatex], false) if test -z "${ac_cv_path_PDFLATEX}" ; then warn_pdf="you cannot build PDF versions of the R manuals" AC_MSG_WARN([${warn_pdf}]) fi AC_PATH_PROGS(MAKEINFO_CMD, [${MAKEINFO} makeinfo]) if test "${PERL}" = "${FALSE}"; then AC_PATH_PROGS(INSTALL_INFO, [${INSTALL_INFO} install-info], false) else INSTALL_INFO="\$(PERL) \$(top_srcdir)/tools/install-info.pl" AC_SUBST(INSTALL_INFO) fi : ${R_RD4DVI="ae"} AC_SUBST(R_RD4DVI) : ${R_RD4PDF="ae,hyper"} AC_SUBST(R_RD4PDF) ])# R_PROG_TEXMF ## R_PROG_MAKEINFO ## --------------- AC_DEFUN([R_PROG_MAKEINFO], ## This used to be part of R_PROG_TEXMF, where it really belongs. ## Unfortunately, AM_PROG_LIBTOOL unconditionally overwrites MAKEINFO ## by makeinfo or missing. To allow users to pass a MAKEINFO setting to ## configure, we thus have to run R_PROG_TEXMF before AM_PROG_LIBTOOL, ## save the result to something not overwritten (hence MAKEINFO_CMD), ## and finally set MAKEINFO according to our needs. [AC_REQUIRE([R_PROG_TEXMF]) AC_REQUIRE([AM_PROG_LIBTOOL]) if test -n "${MAKEINFO_CMD}"; then _R_PROG_MAKEINFO_VERSION fi if test "${r_cv_prog_makeinfo_v4}" != yes; then warn_info="you cannot build info versions of the R manuals" AC_MSG_WARN([${warn_info}]) MAKEINFO=false else MAKEINFO="${MAKEINFO_CMD}" fi ])# R_PROG_MAKEINFO ## _R_PROG_MAKEINFO_VERSION ## ------------------------ AC_DEFUN([_R_PROG_MAKEINFO_VERSION], [AC_CACHE_CHECK([whether makeinfo version is at least 4], r_cv_prog_makeinfo_v4, [makeinfo_version=`${MAKEINFO_CMD} --version | \ grep "^makeinfo" | sed 's/[[^)]]*) \(.\).*/\1/'` if test -z "${makeinfo_version}"; then r_cv_prog_makeinfo_v4=no elif test ${makeinfo_version} -lt 4; then r_cv_prog_makeinfo_v4=no else r_cv_prog_makeinfo_v4=yes fi]) ])# _R_PROG_MAKEINFO_VERSION ## R_PROG_CC_M ## ----------- ## Check whether the C compiler accepts -M for generating dependencies AC_DEFUN([R_PROG_CC_M], [depend_rules_frag=Makefrag.dep AC_CACHE_CHECK([whether ${CC} accepts -M for generating dependencies], r_cv_prog_cc_m, [echo "#include " > conftest.c ## No real point in using AC_LANG_* and ${ac_ext}, as we need to ## create hard-wired suffix rules. if test -n "`${CC} -M conftest.c 2>/dev/null | grep conftest`"; then r_cv_prog_cc_m=yes else r_cv_prog_cc_m=no fi]) if test "${r_cv_prog_cc_m}" = yes; then cat << \EOF > ${depend_rules_frag} .c.d: @echo "making $[@] from $<" @$(CC) -M $(ALL_CPPFLAGS) $< | \ sed -e 's/^\([[^:]]*\)\.o\([[ ]]\)*:/\1.o \1.lo\2:/' > $[@] EOF else cat << \EOF > ${depend_rules_frag} .c.d: @touch $[@] EOF fi AC_SUBST_FILE(depend_rules_frag) ])# R_PROG_CC_M ## R_PROG_CC_C_O_LO ## ---------------- ## Check whether the C compiler supports -c -o FILE.lo AC_DEFUN([R_PROG_CC_C_O_LO], [cc_o_lo_rules_frag=Makefrag.cc AC_CACHE_CHECK([whether ${CC} supports -c -o FILE.lo], r_cv_prog_cc_c_o_lo, [test -d TMP || mkdir TMP echo "int some_variable = 0;" > conftest.c ## No real point in using AC_LANG_* and ${ac_ext}, as we need to create ## hard-wired suffix rules. ac_try='${CC} ${CFLAGS} -c conftest.c -o TMP/conftest.lo 1>&AS_MESSAGE_LOG_FD' if AC_TRY_EVAL(ac_try) \ && test -f TMP/conftest.lo \ && AC_TRY_EVAL(ac_try); then r_cv_prog_cc_c_o_lo=yes else r_cv_prog_cc_c_o_lo=no fi rm -rf conftest* TMP ]) if test "${r_cv_prog_cc_c_o_lo}" = yes; then cat << \EOF > ${cc_o_lo_rules_frag} .c.lo: $(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS_LO) -c $< -o $[@] EOF else cat << \EOF > ${cc_o_lo_rules_frag} .c.lo: @test -d .libs || mkdir .libs $(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS_LO) -c $< -o .libs/$[*].o mv .libs/$[*].o $[*].lo EOF fi AC_SUBST_FILE(cc_o_lo_rules_frag) ])# R_PROG_CC_C_O_LO ## R_PROG_CC_FLAG ## -------------- ## Check whether the C compiler handles a command line option AC_DEFUN([R_PROG_CC_FLAG], [ac_safe=`echo "$1" | sed 'y%./+-%__p_%'` AC_MSG_CHECKING([whether ${CC-cc} accepts $1]) AC_CACHE_VAL(r_cv_prog_cc_flag_${ac_safe}, [AC_LANG_PUSH(C) XCFLAGS="${CFLAGS}" CFLAGS="${CFLAGS} $1" AC_TRY_LINK([], [], [eval "r_cv_prog_cc_flag_${ac_safe}=yes"], [eval "r_cv_prog_cc_flag_${ac_safe}=no"]) CFLAGS="${XCFLAGS}" AC_LANG_POP(C) ]) if eval "test \"`echo '$r_cv_prog_cc_flag_'$ac_safe`\" = yes"; then AC_MSG_RESULT([yes]) [$2] else AC_MSG_RESULT([no]) fi ])# R_PROG_CC_FLAG ## R_PROG_CXX_M ## ------------ ## Check whether the C++ compiler accepts -M for generating dependencies AC_DEFUN([R_PROG_CXX_M], [AC_REQUIRE([R_PROG_CC_M]) AC_CACHE_CHECK([whether ${CXX} accepts -M for generating dependencies], r_cv_prog_cxx_m, [echo "#include " > conftest.cc ## No real point in using AC_LANG_* and ${ac_ext}, as we need to create ## hard-wired suffix rules. We could be a bit more careful as we ## actually only test suffix '.cc'. if test -n "`${CXX} -M conftest.cc 2>/dev/null | grep conftest`"; then r_cv_prog_cxx_m=yes else r_cv_prog_cxx_m=no fi ]) if test "${r_cv_prog_cxx_m}" = yes; then cat << \EOF >> ${depend_rules_frag} .cc.d: @echo "making $[@] from $<" @$(CXX) -M $(ALL_CPPFLAGS) $< | \ sed -e 's/^\([[^:]]*\)\.o\([[ ]]\)*:/\1.o \1.lo\2:/' > $[@] .cpp.d: @echo "making $[@] from $<" @$(CXX) -M $(ALL_CPPFLAGS) $< | \ sed -e 's/^\([[^:]]*\)\.o\([[ ]]\)*:/\1.o \1.lo\2:/' > $[@] .C.d: @echo "making $[@] from $<" @$(CXX) -M $(ALL_CPPFLAGS) $< | \ sed -e 's/^\([[^:]]*\)\.o\([[ ]]\)*:/\1.o \1.lo\2:/' > $[@] EOF else cat << \EOF >> ${depend_rules_frag} .cc.d: @touch $[@] .cpp.d: @touch $[@] .C.d: @touch $[@] EOF fi ])# R_PROG_CXX_M ## R_PROG_CXX_C_O_LO ## ----------------- ## Check whether the C++ compiler supports -c -o FILE.lo AC_DEFUN([R_PROG_CXX_C_O_LO], [cxx_o_lo_rules_frag=Makefrag.cxx AC_CACHE_CHECK([whether ${CXX} supports -c -o FILE.lo], r_cv_prog_cxx_c_o_lo, [test -d TMP || mkdir TMP echo "int some_variable = 0;" > conftest.cc ## No real point in using AC_LANG_* and ${ac_ext}, as we need to create ## hard-wired suffix rules. We could be a bit more careful as we ## actually only test suffix '.cc'. ac_try='${CXX} ${CXXFLAGS} -c conftest.cc -o TMP/conftest.lo 1>&AS_MESSAGE_LOG_FD' if AC_TRY_EVAL(ac_try) \ && test -f TMP/conftest.lo \ && AC_TRY_EVAL(ac_try); then r_cv_prog_cxx_c_o_lo=yes else r_cv_prog_cxx_c_o_lo=no fi rm -rf conftest* TMP ]) if test "${r_cv_prog_cxx_c_o_lo}" = yes; then cat << \EOF > ${cxx_o_lo_rules_frag} .cc.lo: $(CXX) $(ALL_CPPFLAGS) $(ALL_CXXFLAGS_LO) -c $< -o $[@] .cpp.lo: $(CXX) $(ALL_CPPFLAGS) $(ALL_CXXFLAGS_LO) -c $< -o $[@] .C.lo: $(CXX) $(ALL_CPPFLAGS) $(ALL_CXXFLAGS_LO) -c $< -o $[@] EOF else cat << \EOF > ${cxx_o_lo_rules_frag} .cc.lo: @test -d .libs || mkdir .libs $(CXX) $(ALL_CPPFLAGS) $(ALL_CXXFLAGS_LO) -c $< -o .libs/$[*].o mv .libs/$[*].o $[*].lo .cpp.lo: @test -d .libs || mkdir .libs $(CXX) $(ALL_CPPFLAGS) $(ALL_CXXFLAGS_LO) -c $< -o .libs/$[*].o mv .libs/$[*].o $[*].lo .C.lo: @test -d .libs || mkdir .libs $(CXX) $(ALL_CPPFLAGS) $(ALL_CXXFLAGS_LO) -c $< -o .libs/$[*].o mv .libs/$[*].o $[*].lo EOF fi AC_SUBST_FILE(cxx_o_lo_rules_frag) ])# R_PROG_CXX_C_O_LO ## R_PROG_CXX_FLAG ## --------------- ## Check whether the C++ compiler handles a command line option AC_DEFUN([R_PROG_CXX_FLAG], [ac_safe=`echo "$1" | sed 'y%./+-%__p_%'` AC_MSG_CHECKING([whether ${CXX-c++} accepts $1]) AC_CACHE_VAL(r_cv_prog_cxx_flag_${ac_safe}, [AC_LANG_PUSH(C++) XCXXFLAGS="${CXXFLAGS}" CXXFLAGS="${CXXFLAGS} $1" AC_TRY_LINK([], [], [eval "r_cv_prog_cxx_flag_${ac_safe}=yes"], [eval "r_cv_prog_cxx_flag_${ac_safe}=no"]) CXXFLAGS="${XCXXFLAGS}" AC_LANG_POP(C++) ]) if eval "test \"`echo '$r_cv_prog_cxx_flag_'$ac_safe`\" = yes"; then AC_MSG_RESULT([yes]) [$2] else AC_MSG_RESULT([no]) fi ])# R_PROG_CXX_FLAG ## R_PROG_F77_OR_F2C ## ----------------- ## Find a Fortran 77 compiler, or f2c. ## ## If we have not been forced to use a particular FORTRAN compiler, try ## to find one using one of the several common names. The list is based ## on what the current autoconf CVS contains. This says, ## ## ## Compilers are ordered by ## 1. F77, F90, F95 ## 2. Good/tested native compilers, bad/untested native compilers ## 3. Wrappers around f2c go last. ## ## `fort77' and `fc' are wrappers around `f2c', `fort77' being better. ## It is believed that under HP-UX `fort77' is the name of the native ## compiler. On some Cray systems, fort77 is a native compiler. ## cf77 and cft77 are (older) Cray F77 compilers. ## pgf77 and pgf90 are the Portland Group F77 and F90 compilers. ## xlf/xlf90/xlf95 are IBM (AIX) F77/F90/F95 compilers. ## lf95 is the Lahey-Fujitsu compiler. ## fl32 is the Microsoft Fortran "PowerStation" compiler. ## af77 is the Apogee F77 compiler for Intergraph hardware running CLIX. ## epcf90 is the "Edinburgh Portable Compiler" F90. ## ## ## In fact, on HP-UX fort77 is the POSIX-compatible native compiler and ## f77 is not: hence we need look for fort77 first! ## ## The configure options `--with-g77', `--with-f77', or `--with-f2c' ## force g77, f77, or f2c to be used (under *exactly* these names). It ## is also possible to use these options to specify the full path name ## of the compiler. AC_DEFUN([R_PROG_F77_OR_F2C], [if test -n "${FC}"; then F77=${FC} AC_MSG_RESULT([defining F77 to be ${F77}]) elif ${use_f77}; then if test "${with_f77}" = yes; then F77=f77 else F77="${with_f77}" fi AC_MSG_RESULT([defining F77 to be ${F77}]) elif ${use_g77}; then if test "${with_g77}" = yes; then F77=g77 else F77="${with_g77}" fi AC_MSG_RESULT([defining F77 to be ${F77}]) elif ${use_f2c}; then F77= if test "${with_f2c}" = yes; then F2C=f2c else F2C="${with_f2c}" fi AC_MSG_RESULT([defining F2C to be ${F2C}]) else F77= case "${host_os}" in hpux*) AC_CHECK_PROGS(F77, [g77 fort77 f77 xlf cf77 cft77 pgf77 fl32 af77 \ f90 xlf90 pgf90 epcf90 f95 xlf95 lf95 g95 fc]) ;; *) AC_CHECK_PROGS(F77, [g77 f77 xlf cf77 cft77 pgf77 fl32 af77 fort77 \ f90 xlf90 pgf90 epcf90 f95 xlf95 lf95 g95 fc]) ;; esac if test -z "${F77}"; then AC_CHECK_PROG(F2C, f2c, f2c, []) fi fi ])# R_PROG_F77_OR_F2C ## R_PROG_F77_FLIBS ## ---------------- ## Run AC_F77_LIBRARY_LDFLAGS, and fix some known problems with FLIBS. AC_DEFUN([R_PROG_F77_FLIBS], [AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS]) ## Currently g77 on Darwin links against -lcrt1.o, which (unlike ## -lcrt0.o) is not stripped by AC_F77_LIBRARY_LDFLAGS. This in ## particular causes R_PROG_F77_CC_COMPAT to fail. Hence, we make ## sure all -lcrt?.o are removed. flibs= for arg in ${FLIBS}; do case "${arg}" in -lcrt?.o) ;; *) flibs="${flibs} ${arg}" ;; esac done FLIBS="${flibs}" ## Versions of g77 up to 3.0.x only have a non-PIC (static) -lg2c which ## on some platforms means one cannot build dynamically loadable modules ## containing FORTRAN code. (g77 3.1 will have a shared -lg2c too.) As ## a workaround, Debian provides -lg2c-pic which holds pic objects only, ## and we should use in case we can find it ... if test "${G77}" = yes; then r_save_LIBS="${LIBS}" flibs=`echo ${ac_cv_flibs} | sed 's/-lg2c/-lg2c-pic/'` LIBS="${LIBS} ${flibs}" AC_LANG_PUSH(C) AC_TRY_LINK([], [], [FLIBS="${flibs}"]) AC_LANG_POP(C) LIBS="${r_save_LIBS}" fi ])# R_PROG_F77_FLIBS ## R_PROG_F77_APPEND_UNDERSCORE ## ---------------------------- ## See if the Fortran compiler appends underscores. AC_DEFUN([R_PROG_F77_APPEND_UNDERSCORE], [AC_CACHE_CHECK([whether ${F77-f77} appends underscores], r_cv_prog_f77_append_underscore, [cat > conftestf.f <&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD cat > conftest.c <&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD if test ${?} = 0; then r_cv_prog_f77_append_underscore=yes else cat > conftest.c <&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD if test ${?} = 0; then r_cv_prog_f77_append_underscore=no fi fi rm -rf conftest conftest.* conftestf.* if test -z "${r_cv_prog_f77_append_underscore}"; then AC_MSG_ERROR([Nothing worked - cannot use FORTRAN]) fi ]) if test "${r_cv_prog_f77_append_underscore}" = yes; then AC_DEFINE(HAVE_F77_UNDERSCORE, 1, [Define if your Fortran compiler appends an underscore to external names.]) fi ])# R_PROG_F77_APPEND_UNDERSCORE ## R_PROG_F77_CC_COMPAT ## -------------------- ## Check whether the Fortran and C compilers agree on int and double AC_DEFUN([R_PROG_F77_CC_COMPAT], [AC_REQUIRE([AC_CHECK_LIBM]) AC_MSG_CHECKING([whether ${F77-f77} and ${CC-cc} agree on int and double]) AC_CACHE_VAL(r_cv_prog_f77_cc_compat, [cat > conftestf.f <&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD [cat > conftest.c < #include "confdefs.h" #ifdef HAVE_F77_UNDERSCORE # define F77_SYMBOL(x) x ## _ #else # define F77_SYMBOL(x) x #endif extern void F77_SYMBOL(cftest)(int *a, int *b, double *x, double *y); int main () { int a[3] = {17, 237, 2000000000}, b[2], res = 0; double x[3] = {3.14159265, 123.456789, 2.3e34}, z[3]; double eps = 1e-6; double zres[3]; int i, bres[2]; zres[0] = (double) a[2]/x[1]; zres[1] = x[2]*x[0]; zres[2] = pow(x[1]/x[0], 17.0); bres[0] = a[2]/a[1]; bres[1] = a[2] - a[0]*a[1]; F77_SYMBOL(cftest)(a, b, x, z); if(b[0] != bres[0]) res++; if(b[1] != bres[1]) res++; for(i = 0; i < 3; i++) if(fabs(z[i]/zres[i] - 1) > eps) res++; printf("number of errors %d\n", res); return(res); } EOF] if ${CC-cc} ${CFLAGS} -c conftest.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then ## ## This should really use MAIN_LD, and hence come after this is ## determined. Or maybe we can always use ${CC} eventually? if ${CC-cc} ${LDFLAGS} ${MAIN_LDFLAGS} -o conftest${ac_exeext} \ conftest.${ac_objext} conftestf.${ac_objext} ${FLIBS} \ ${LIBM} 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; ## then output=`./conftest${ac_exeext} 2>&1` if test ${?} = 0; then r_cv_prog_f77_cc_compat=yes fi fi fi ]) rm -rf conftest conftest.* conftestf.* core if test -n "${r_cv_prog_f77_cc_compat}"; then AC_MSG_RESULT([yes]) else AC_MSG_WARN([${F77-f77} and ${CC-cc} disagree on int and double]) AC_MSG_ERROR([Maybe change CFLAGS or FFLAGS?]) fi ])# R_PROG_F77_CC_COMPAT ## R_PROG_F77_CC_COMPAT_COMPLEX ## ---------------------------- ## Check whether the Fortran and C compilers agree on double complex AC_DEFUN([R_PROG_F77_CC_COMPAT_COMPLEX], [AC_REQUIRE([AC_CHECK_LIBM]) AC_MSG_CHECKING([whether ${F77-f77} and ${CC-cc} agree on double complex]) AC_CACHE_VAL(r_cv_prog_complex_compat, [cat > conftestf.f <&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD [cat > conftest.c < #include "confdefs.h" #ifdef HAVE_F77_UNDERSCORE # define F77_SYMBOL(x) x ## _ #else # define F77_SYMBOL(x) x #endif typedef struct { double r; double i; } Rcomplex; extern void F77_SYMBOL(cftest)(Rcomplex *x); int main () { Rcomplex z[3]; z[0].r = 3.14159265; z[0].i = 2.172; z[1].i = 3.14159265; z[1].r = 2.172; z[2].r = 123.456; z[2].i = 0.123456; F77_SYMBOL(cftest)(z); printf("%f %f\n", z[0].r, z[0].i); if(fabs(z[0].r - 123.456) < 1e-4 && fabs(z[0].i - 14.71065) < 1e-4) return 0; else return 1; } EOF] if ${CC-cc} ${CFLAGS} -c conftest.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then ## ## This should really use MAIN_LD, and hence come after this is ## determined. Or maybe we can always use ${CC} eventually? if ${CC-cc} ${LDFLAGS} ${MAIN_LDFLAGS} -o conftest${ac_exeext} \ conftest.${ac_objext} conftestf.${ac_objext} ${FLIBS} \ ${LIBM} 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; ## then output=`./conftest${ac_exeext} 2>&1` if test ${?} = 0; then r_cv_prog_complex_compat=yes fi fi fi ]) rm -rf conftest conftest.* conftestf.* core if test -n "${r_cv_prog_complex_compat}"; then AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_DOUBLE_COMPLEX, 1, [Define if C's Rcomplex and Fortran's COMPLEX*16 can be interchanged, and can do arithmetic on the latter.]) else AC_MSG_WARN([${F77-f77} and ${CC-cc} disagree on double complex]) fi AC_SUBST(HAVE_DOUBLE_COMPLEX) ])# R_PROG_F77_CC_COMPAT_COMPLEX ## R_PROG_F77_C_O_LO ## ----------------- ## Check whether the Fortran compiler supports -c -o FILE.lo AC_DEFUN([R_PROG_F77_C_O_LO], [AC_CACHE_CHECK([whether ${F77} supports -c -o FILE.lo], r_cv_prog_f77_c_o_lo, [test -d TMP || mkdir TMP cat > conftest.f < ${f77_rules_frag} .f.c: .f.o: $(FC) $(ALL_FFLAGS) -c $< -o $[@] EOF if test "${r_cv_prog_f77_c_o_lo}" = yes; then cat << \EOF >> ${f77_rules_frag} .f.lo: $(FC) $(ALL_FFLAGS_LO) -c $< -o $[@] EOF else cat << \EOF >> ${f77_rules_frag} .f.lo: @test -d .libs || mkdir .libs $(FC) $(ALL_FFLAGS_LO) -c $< -o .libs/$[*].o mv .libs/$[*].o $[*].lo EOF fi AC_SUBST_FILE(f77_rules_frag) ])# R_PROG_F77_MAKEFRAG ## R_PROG_F2C_FLIBS ## ---------------- AC_DEFUN([R_PROG_F2C_FLIBS], [AC_REQUIRE([AC_PROG_RANLIB]) AC_REQUIRE([AC_CHECK_LIBM]) AC_CACHE_VAL(r_cv_f2c_flibs, [## This seems to be necessary on some Linux system. -- you bet! -pd AC_LANG_PUSH(C) cat > conftest.${ac_ext} << EOF int MAIN_ () { return 0; } int MAIN__ () { return 0; } EOF if AC_TRY_EVAL(ac_compile); then ${AR} ${ARFLAGS} libconftest.a conftest.${ac_objext} 1>&AS_MESSAGE_LOG_FD if test -n "${RANLIB}"; then ${RANLIB} libconftest.a 1>&AS_MESSAGE_LOG_FD fi fi AC_LANG_POP(C) AC_CHECK_LIB(f2c, f_open, flibs=-lf2c, flibs=, [-L. -lconftest ${LIBM}]) rm -f libconftest* if test -z "${flibs}"; then AC_CHECK_LIB(F77, d_sin, flibs=-lF77, flibs=, [${LIBM}]) if test -n "${flibs}"; then AC_CHECK_LIB(I77, f_rew, flibs="${flibs} -lI77", flibs=, -lF77) fi fi r_cv_f2c_flibs="${flibs}"]) FLIBS="${r_cv_f2c_flibs}" if test -z "${FLIBS}"; then warn_f2c_flibs="I found f2c but not libf2c, or libF77 and libI77" AC_MSG_WARN([${warn_f2c_flibs}]) else FLIBS="${FLIBS} ${LIBM}" fi ])# R_PROG_F2C_FLIBS ## R_PROG_F2C_MAKEFRAG ## ------------------- AC_DEFUN([R_PROG_F2C_MAKEFRAG], [AC_REQUIRE([R_PROG_CC_C_O_LO]) f77_rules_frag=Makefrag.f77 cat << \EOF > ${f77_rules_frag} .f.o: $(F2C) $(F2CFLAGS) < $< > $[*].c $(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) -c $[*].c -o $[@] @rm -f $[*].c .f.lo: $(F2C) $(F2CFLAGS) < $< > $[*].c EOF if test "${r_cv_prog_cc_c_o_lo}" = yes; then cat << \EOF >> ${f77_rules_frag} $(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS_LO) -c $[*].c -o $[@] EOF else cat << \EOF >> ${f77_rules_frag} @test -d .libs || mkdir .libs $(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS_LO) -c $[*].c -o .libs/$[*].o mv .libs/$[*].o $[*].lo EOF fi cat << \EOF >> ${f77_rules_frag} @rm -f $[*].c EOF AC_SUBST_FILE(f77_rules_frag) ])# R_PROG_F2C_MAKEFRAG ## R_FUNC___SETFPUCW ## ----------------- AC_DEFUN([R_FUNC___SETFPUCW], [AC_CHECK_FUNC(__setfpucw, [AC_CACHE_CHECK([whether __setfpucw is needed], r_cv_func___setfpucw_needed, AC_TRY_RUN( [int main () { #include #if defined(_FPU_DEFAULT) && defined(_FPU_IEEE) return(_FPU_DEFAULT != _FPU_IEEE); #endif return(0); }], [r_cv_func___setfpucw_needed=no], [r_cv_func___setfpucw_needed=yes], [r_cv_func___setfpucw_needed=no])) if test "${r_cv_func___setfpucw_needed}" = yes; then AC_DEFINE(NEED___SETFPUCW, 1, [Define if your system needs __setfpucw() to control FPU rounding. This was used to control floating point precision, rounding and floating point exceptions on older Linux systems. As of GLIBC 2.1 this function is not used anymore.]) fi ]) ])# R_FUNC___SETFPUCW ## R_FUNC_CALLOC ## ------------- AC_DEFUN([R_FUNC_CALLOC], [AC_CACHE_CHECK([for working calloc], r_cv_func_calloc_works, [AC_TRY_RUN( [#include int main () { int *p = calloc(0, sizeof(int)); return(p == 0); }], [r_cv_func_calloc_works=yes], [r_cv_func_calloc_works=no], [r_cv_func_calloc_works=no])]) if test "x${r_cv_func_calloc_works}" = xyes; then AC_DEFINE(HAVE_WORKING_CALLOC, 1, [Define if calloc(0) returns a null pointer.]) fi ])# R_FUNC_CALLOC ## R_FUNC_FINITE ## ------------- AC_DEFUN([R_FUNC_FINITE], [AC_CACHE_CHECK([for working finite], r_cv_func_finite_works, [AC_TRY_RUN( [#include #include "confdefs.h" int main () { #ifdef HAVE_FINITE return(finite(1./0.) | finite(0./0.) | finite(-1./0.)); #else return(1); #endif }], [r_cv_func_finite_works=yes], [r_cv_func_finite_works=no], [r_cv_func_finite_works=no])]) if test "x${r_cv_func_finite_works}" = xyes; then AC_DEFINE(HAVE_WORKING_FINITE, 1, [Define if finite() is correct for -Inf/NaN/Inf.]) fi ])# R_FUNC_FINITE ## R_FUNC_LOG ## ---------- AC_DEFUN([R_FUNC_LOG], [AC_CACHE_CHECK([for working log], r_cv_func_log_works, [AC_TRY_RUN( [#include #include "confdefs.h" int main () { #ifdef HAVE_ISNAN return(!(log(0.) == -1. / 0. && isnan(log(-1.)))); #else return(log(0.) != -1. / 0); #endif }], [r_cv_func_log_works=yes], [r_cv_func_log_works=no], [r_cv_func_log_works=no])]) if test "x${r_cv_func_log_works}" = xyes; then AC_DEFINE(HAVE_WORKING_LOG, 1, [Define if log() is correct for 0/-1.]) fi ])# R_FUNC_LOG ## R_FUNC_STRPTIME ## --------------- AC_DEFUN([R_FUNC_STRPTIME], [AC_CACHE_CHECK([for working strptime], r_cv_func_strptime_works, [AC_TRY_RUN( [#include int main () { #ifdef HAVE_STRPTIME struct tm tm; char *p; p = strptime("1960-01-01", "%Y-%m-%d", &tm); return(p == 0); #else return(1); #endif }], [r_cv_func_strptime_works=yes], [r_cv_func_strptime_works=no], [r_cv_func_strptime_works=no])]) if test "x${r_cv_func_strptime_works}" = xyes; then AC_DEFINE(HAVE_WORKING_STRPTIME, 1, [Define if strptime() exists and does not fail pre-1970.]) fi ])# R_FUNC_STRPTIME ## R_HEADER_SETJMP ## --------------- AC_DEFUN([R_HEADER_SETJMP], [AC_CACHE_CHECK([whether setjmp.h is POSIX.1 compatible], [r_cv_header_setjmp_posix], [AC_EGREP_HEADER(sigjmp_buf, setjmp.h, [r_cv_header_setjmp_posix=yes], [r_cv_header_setjmp_posix=no]) if test "${r_cv_header_setjmp_posix}" = yes; then AC_EGREP_HEADER(siglongjmp, setjmp.h, , [r_cv_header_setjmp_posix=no]) fi if test "${r_cv_header_setjmp_posix}" = yes; then AC_EGREP_HEADER(sigsetjmp, setjmp.h, , [r_cv_header_setjmp_posix=no]) fi ]) if test "${r_cv_header_setjmp_posix}" = yes; then AC_DEFINE(HAVE_POSIX_SETJMP, 1, [Define if you have POSIX.1 compatible sigsetjmp/siglongjmp.]) fi ])# R_HEADER_SETJMP ## R_HEADER_GLIBC2 ## --------------- AC_DEFUN([R_HEADER_GLIBC2], [AC_CACHE_CHECK([for GNU C library with version >= 2], r_cv_header_glibc2, [AC_EGREP_CPP([yes], [#include #if defined __GLIBC__ && __GLIBC__ >= 2 yes #endif ], [r_cv_header_glibc2=yes], [r_cv_header_glibc2=no], [r_cv_header_glibc2=no]) ]) if test "${r_cv_header_glibc2}" = yes; then AC_DEFINE(HAVE_GLIBC2, 1, [Define if you have the GNU C library version >= 2. This is needed to fix a problem with getting the prototype of strptime().]) fi ])# R_HEADER_GLIBC2 ## R_TYPE_SOCKLEN ## -------------- AC_DEFUN([R_TYPE_SOCKLEN], [AC_CHECK_HEADER(sys/socket.h) AC_MSG_CHECKING([for type of socket length]) if test "${ac_cv_header_sys_socket_h}" = yes; then AC_CACHE_VAL(r_cv_type_socklen, [for t in socklen_t size_t int; do AC_TRY_COMPILE( [#include #include #include ], [(void)getsockopt (1, 1, 1, NULL, (${t} *)NULL)], [r_cv_type_socklen=${t}; break], [r_cv_type_socklen=]) done]) fi if test "x${r_cv_type_socklen}" = x; then warn_type_socklen="could not determine type of socket length" AC_MSG_WARN([${warn_type_socklen}]) else AC_MSG_RESULT([${r_cv_type_socklen} *]) fi AC_DEFINE_UNQUOTED(SOCKLEN_T, ${r_cv_type_socklen}, [Type for socket lengths: socklen_t, sock_t, int?]) ])# R_TYPE_SOCKLEN ## R_C_OPTIEEE ## ----------- AC_DEFUN([R_C_OPTIEEE], [AC_CACHE_CHECK([whether C compiler needs -OPT:IEEE_NaN_inf=ON], r_cv_c_optieee, AC_TRY_RUN( [#include #include int main () { double x = 0; fpsetmask(0); x = x / x; return (x != x); }], [r_cv_c_optieee=yes], [r_cv_c_optieee=no], [r_cv_c_optieee=no])) if test "${r_cv_c_optieee}" = yes; then R_XTRA_CFLAGS="${R_XTRA_CFLAGS} -OPT:IEEE_NaN_inf=ON" fi ])# R_C_OPTIEEE ## R_GNOME ## ------- AC_DEFUN([R_GNOME], [if test ${want_gnome} = yes; then GNOME_INIT_HOOK([], cont) if test "${GNOMEUI_LIBS}"; then AM_PATH_LIBGLADE( [use_gnome="yes" GNOME_IF_FILES="gnome-interface.glade"], [warn_libglade_version="GNOME support requires libglade version >= 0.3" AC_MSG_WARN([${warn_libglade_version}])], gnome) fi fi if test "${use_gnome}" != yes; then use_gnome="no" GNOME_IF_FILES= else AC_DEFINE(HAVE_GNOME, 1, [Define if the GNOME headers and libraries are available, and want the GNOME GUI to be built.]) fi AC_SUBST(HAVE_GNOME) AC_SUBST(GNOME_IF_FILES) ])# R_GNOME ## R_IEEE_754 ## ---------- AC_DEFUN([R_IEEE_754], [AC_CHECK_FUNCS([finite isnan]) AC_CHECK_DECLS([isfinite, isnan], , , [#include ]) AC_CACHE_CHECK([whether you have IEEE 754 floating-point arithmetic], r_cv_ieee_754, [if (test "${ac_cv_func_finite}" = yes \ || test "${ac_cv_have_decl_isfinite}" = yes) \ && (test "${ac_cv_func_isnan}" = yes \ || test "${ac_cv_have_decl_isnan}" = yes); then r_cv_ieee_754=yes else r_cv_ieee_754=no fi]) if test "${r_cv_ieee_754}" = yes; then AC_DEFINE(IEEE_754, 1, [Define if you have IEEE 754 floating point arithmetic.]) fi ])# R_IEEE_754 ## R_BSD_NETWORKING ## ---------------- AC_DEFUN([R_BSD_NETWORKING], [AC_CACHE_CHECK([for BSD networking], r_cv_bsd_networking, [if test "${ac_cv_header_netdb_h}" = yes \ && test "${ac_cv_header_netinet_in_h}" = yes \ && test "${ac_cv_header_sys_socket_h}" = yes \ && test "${ac_cv_search_connect}" != no \ && test "${ac_cv_search_gethostbyname}" != no; then r_cv_bsd_networking=yes else r_cv_bsd_networking=no fi]) if test "${r_cv_bsd_networking}" = yes; then AC_DEFINE(HAVE_BSD_NETWORKING, 1, [Define if you have BSD networking headers and libraries.]) AC_DEFINE(HAVE_SOCKETS, 1, [Define if you have support for sockets.]) AC_DEFINE(HAVE_INTERNET, 1, [Define if you have support for ftp/http access.]) AC_DEFINE(SUPPORT_LIBXML, 1, [Define if you provide support for the libxml ftp/http functions.]) fi ])# R_BSD_NETWORKING ## R_BITMAPS ## --------- ## Here we only need any old -lz, and don't need zlib.h ## However, we do need recent enough libpng and jpeg, and ## so check both the header versions and for key routines ## in the library. ## The png code will do a run-time check of the consistency of ## libpng versions. ## AC_DEFUN([R_BITMAPS], [ BITMAP_LIBS= AC_CHECK_HEADER(jpeglib.h, [ AC_MSG_CHECKING([if jpeglib version >= 6b]) AC_EGREP_CPP([yes], [ #include "confdefs.h" #include #if (JPEG_LIB_VERSION >= 62) yes #endif], [ AC_MSG_RESULT([yes]) AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [ BITMAP_LIBS=-ljpeg AC_DEFINE(HAVE_JPEG, 1, [Define if you have the JPEG headers and libraries.]) ], , ${LIBS}) ], AC_MSG_RESULT([no])) ]) AC_CHECK_LIB(z, main, [ AC_CHECK_HEADER(png.h, [ AC_MSG_CHECKING([if libpng version >= 1.0.5]) AC_EGREP_CPP([yes], [ #include "confdefs.h" #include #if (PNG_LIBPNG_VER >= 10005) yes #endif], [ AC_MSG_RESULT([yes]) AC_CHECK_LIB(png, png_create_write_struct, [ BITMAP_LIBS="${BITMAP_LIBS} -lpng -lz" AC_DEFINE(HAVE_PNG, 1, [Define if you have the PNG headers and libraries.]) ], , [${LIBS} -lz]) ], AC_MSG_RESULT([no])) ]) ]) AC_SUBST(BITMAP_LIBS) ])# R_BITMAPS ## _R_TCLTK_CONFIG ## --------------- ## Try finding {tcl,tk}Config.sh AC_DEFUN([_R_TCLTK_CONFIG], [libpath="${tcltk_prefix}${PATH_SEPARATOR}${LD_LIBRARY_PATH}" for dir in /opt/lib /usr/local/lib /usr/lib /lib; do libpath="${libpath}${PATH_SEPARATOR}${dir}" done AC_PATH_PROGS(TCL_CONFIG, [${TCL_CONFIG} tclConfig.sh], , ${libpath}) AC_PATH_PROGS(TK_CONFIG, [${TK_CONFIG} tkConfig.sh], , ${libpath}) if test -z "${TCLTK_CPPFLAGS}" \ || test -z "${TCLTK_LIBS}"; then ## Check whether the versions found via the *Config.sh files are at ## least 8; otherwise, issue a warning and turn off Tcl/Tk support. ## Note that in theory a system could have outdated versions of the ## *Config.sh scripts and yet up-to-date installations of Tcl/Tk in ## standard places ... if test -n "${TCL_CONFIG}"; then . ${TCL_CONFIG} if test ${TCL_MAJOR_VERSION} -lt 8; then warn_tcltk_version="Tcl/Tk support requires Tcl version >= 8" AC_MSG_WARN([${warn_tcltk_version}]) have_tcltk=no fi fi if test -n "${TK_CONFIG}" \ && test -z "${warn_tcltk_version}"; then . ${TK_CONFIG} if test ${TK_MAJOR_VERSION} -lt 8; then warn_tcltk_version="Tcl/Tk support requires Tk version >= 8" AC_MSG_WARN([${warn_tcltk_version}]) have_tcltk=no fi fi fi ])# _R_TCLTK_CONFIG ## _R_TCLTK_CPPFLAGS ## ----------------- ## Need to ensure that we can find the tcl.h and tk.h headers, which ## may be in non-standard and/or version-dependent directories, such as ## on FreeBSD systems. ## ## The logic is as follows. If TCLTK_CPPFLAGS was specified, then we ## do not investigate any further. Otherwise, if we still think we ## have Tcl/Tk, then first try via the corresponding *Config.sh file, ## or else try the obvious. AC_DEFUN([_R_TCLTK_CPPFLAGS], [AC_REQUIRE([_R_TCLTK_CONFIG]) if test -z "${TCLTK_CPPFLAGS}"; then ## We have to do the work. if test "${have_tcltk}" = yes; then ## Part 1. Check for tcl.h. found_tcl_h=no if test -n "${TCL_CONFIG}"; then . ${TCL_CONFIG} ## Look for tcl.h in ## ${TCL_PREFIX}/include/tcl${TCL_VERSION} ## ${TCL_PREFIX}/include AC_CHECK_HEADER(${TCL_PREFIX}/include/tcl${TCL_VERSION}/tcl.h, [TCLTK_CPPFLAGS="-I${TCL_PREFIX}/include/tcl${TCL_VERSION}" found_tcl_h=yes]) if test "${found_tcl_h}" = no; then AC_CHECK_HEADER(${TCL_PREFIX}/include/tcl.h, [TCLTK_CPPFLAGS="-I${TCL_PREFIX}/include" found_tcl_h=yes]) fi fi if test "${found_tcl_h}" = no; then AC_MSG_CHECKING([for tcl.h]) AC_EGREP_CPP([yes], [ #include #if (TCL_MAJOR_VERSION >= 8) yes #endif ], found_tcl_h=yes, have_tcltk=no) AC_MSG_RESULT([${found_tcl_h}]) fi fi if test "${have_tcltk}" = yes; then ## Part 2. Check for tk.h. found_tk_h=no if test -n "${TK_CONFIG}"; then . ${TK_CONFIG} ## Look for tk.h in ## ${TK_PREFIX}/include/tk${TK_VERSION} ## ${TK_PREFIX}/include ## As the AC_CHECK_HEADER test tries including the header file and ## tk.h includes tcl.h and X11/Xlib.h, we need to change CPPFLAGS ## for the check. save_CPPFLAGS="${CPPFLAGS}" CPPFLAGS="${CPPFLAGS} ${TK_XINCLUDES} ${TCLTK_CPPFLAGS}" AC_CHECK_HEADER(${TK_PREFIX}/include/tk${TK_VERSION}/tk.h, [TCLTK_CPPFLAGS="${TCLTK_CPPFLAGS} -I${TK_PREFIX}/include/tk${TK_VERSION}" found_tk_h=yes]) if test "${found_tk_h}" = no; then AC_CHECK_HEADER(${TK_PREFIX}/include/tk.h, [TCLTK_CPPFLAGS="${TCLTK_CPPFLAGS} -I${TK_PREFIX}/include" found_tk_h=yes]) fi CPPFLAGS="${save_CPPFLAGS}" fi if test "${found_tk_h}" = no; then AC_MSG_CHECKING([for tk.h]) AC_EGREP_CPP([yes], [ #include #if (TK_MAJOR_VERSION >= 8) yes #endif ], found_tk_h=yes, have_tcltk=no) AC_MSG_RESULT([${found_tk_h}]) fi fi fi ])# _R_TCLTK_CPPFLAGS ## _R_TCLTK_LIBS ## ------------- ## Find the tcl and tk libraries. AC_DEFUN([_R_TCLTK_LIBS], [AC_REQUIRE([AC_PATH_XTRA]) AC_REQUIRE([_R_TCLTK_CONFIG]) if test -z "${TCLTK_LIBS}"; then ## We have to do the work. if test "${have_tcltk}" = yes; then ## Part 1. Try finding the tcl library. if test -n "${TCL_CONFIG}"; then . ${TCL_CONFIG} TCLTK_LIBS="${TCL_LIB_SPEC}" else AC_CHECK_LIB(tcl, Tcl_CreateInterp, TCLTK_LIBS=-ltcl, have_tcltk=no) fi fi if test "${have_tcltk}" = yes; then ## Part 2. Try finding the tk library. if test -n "${TK_CONFIG}"; then . ${TK_CONFIG} TCLTK_LIBS="${TCLTK_LIBS} ${TK_LIB_SPEC} ${TK_LIBS}" else AC_CHECK_LIB(tk, Tk_Init, , , ${TCLTK_LIBS}) if test "${ac_cv_lib_tk_Tk_Init}" = no; then ## Grr, simple -ltk does not work. ## But maybe we simply need to add X11 libs. unset ac_cv_lib_tk_Tk_Init AC_CHECK_LIB(tk, Tk_Init, [TCLTK_LIBS="${TCLTK_LIBS} -ltk ${X_LIBS}"], have_tcltk=no, [${TCLTK_LIBS} ${X_LIBS}]) fi fi fi ## Postprocessing for AIX. ## On AIX, the *_LIB_SPEC variables need to contain `-bI:' flags for ## the Tcl export file. These are really flags for ld rather than the ## C/C++ compilers, and hence may need protection via `-Wl,'. ## We have two ways of doing that: ## * Recording whether `-Wl,' is needed for the C or C++ compilers, ## and getting this info into the TCLTK_LIBS make variable ... mess! ## * Protecting all entries in TCLTK_LIBS that do not start with `-l' ## or `-L' with `-Wl,' (hoping that all compilers understand this). ## Easy, hence ... case "${host_os}" in aix*) orig_TCLTK_LIBS="${TCLTK_LIBS}" TCLTK_LIBS= for flag in ${orig_TCLTK_LIBS}; do case "${flag}" in -l*|-L*|-Wl,*) ;; *) flag="-Wl,${flag}" ;; esac TCLTK_LIBS="${TCLTK_LIBS} ${flag}" done ;; esac fi ])# _R_TCLTK_LIBS ## R_TCLTK ## ------- AC_DEFUN([R_TCLTK], [if test "${want_tcltk}" = yes; then have_tcltk=yes _R_TCLTK_CONFIG _R_TCLTK_CPPFLAGS _R_TCLTK_LIBS else have_tcltk=no ## Just making sure. TCLTK_CPPFLAGS= TCLTK_LIBS= fi if test "${have_tcltk}" = yes; then AC_DEFINE(HAVE_TCLTK, 1, [Define if you have the Tcl/Tk headers and libraries and want Tcl/Tk support to be built.]) use_tcltk=yes if test -n "${TK_XINCLUDES}"; then TCLTK_CPPFLAGS="${TCLTK_CPPFLAGS} ${TK_XINCLUDES}" else TCLTK_CPPFLAGS="${TCLTK_CPPFLAGS} ${X_CFLAGS}" fi else use_tcltk=no fi AC_SUBST(TCLTK_CPPFLAGS) AC_SUBST(TCLTK_LIBS) AC_SUBST(use_tcltk) ])# R_TCLTK ## R_BLAS_LIBS ## ----------- AC_DEFUN([R_BLAS_LIBS], [ if test "${r_cv_prog_f77_append_underscore}" = yes \ || test -n "${F2C}"; then dgemm_func=dgemm_ else dgemm_func=dgemm fi if test -z "${with_blas}"; then with_blas=yes fi if test "$with_blas" = "no"; then BLAS_LIBS=" " elif test "$with_blas" != "yes"; then ## user specified a BLAS library to try on the command line ## Safeguard against users giving the location of the lib. blas_lib_dir=`dirname ${with_blas}` if test "x${blas_lib_dir}" = x; then AC_CHECK_LIB($with_blas, $dgemm_func, BLAS_LIBS="-l$with_blas", , $FLIBS) else blas_lib_name=`basename ${with_blas} | sed 's/^lib\([[^.]]*\).*$/\1/'` AC_CHECK_LIB($blas_lib_name, $dgemm_func, BLAS_LIBS="-L${blas_lib_dir} -l${blas_lib_name}", , [-L${blas_lib_dir} ${FLIBS}]) fi fi if test "x$BLAS_LIBS" = x; then # Checks for ATLAS BLAS library: AC_CHECK_LIB(atlas, ATL_xerbla, BLAS_LIBS="-latlas") if test "x$BLAS_LIBS" != x; then # check for other atlas libs: AC_CHECK_LIB(cblas, cblas_dgemm,BLAS_LIBS="-lcblas $BLAS_LIBS",,$BLAS_LIBS) AC_CHECK_LIB(f77blas, $dgemm_func, BLAS_LIBS="-lf77blas $BLAS_LIBS", , $BLAS_LIBS $FLIBS) fi fi # if test "x$BLAS_LIBS" = x; then # # BLAS in Alpha CXML library? # AC_CHECK_LIB(cxml, $dgemm_func, BLAS_LIBS="-lcxml", , $FLIBS) # fi # if test "x$BLAS_LIBS" = x; then # # BLAS in Alpha DXML library? (now called CXML, see above) # AC_CHECK_LIB(dxml, $dgemm_func, BLAS_LIBS="-ldxml", , $FLIBS) # fi if test "x$BLAS_LIBS" = x; then if test "x$GCC" != xyes; then # Check for BLAS in Sun Performance library: AC_CHECK_LIB(sunmath, acosp, AC_CHECK_LIB(sunperf, $dgemm_func, BLAS_LIBS="-xlic_lib=sunperf -lsunmath", , [-lsunmath $FLIBS])) fi fi # if test "x$BLAS_LIBS" = x; then # # Check for BLAS in SCSL and SGIMATH libraries (prefer SCSL): # AC_CHECK_LIB(scs, $dgemm_func, # BLAS_LIBS="-lscs", # AC_CHECK_LIB(complib.sgimath, $dgemm_func, # BLAS_LIBS="-lcomplib.sgimath", , $FLIBS), $FLIBS) # fi if test "x$BLAS_LIBS" = x; then # Checks for BLAS in IBM ESSL library. We must also link # with -lblas in this case (ESSL does not include the full BLAS): AC_CHECK_LIB(blas, zherk, AC_CHECK_LIB(essl, $dgemm_func, BLAS_LIBS="-lessl -lblas", , $FLIBS), , $FLIBS) fi if test "x$BLAS_LIBS" = x; then # Finally, check for the generic BLAS library: AC_CHECK_LIB(blas, $dgemm_func, BLAS_LIBS="-lblas", , $FLIBS) fi if test "$with_blas" = "no"; then # Unset BLAS_LIBS so that we know below that nothing was found. BLAS_LIBS="" fi AC_SUBST(BLAS_LIBS) ])# R_BLAS_LIBS ## R_XDR ## ----- ## Try finding XDR library functions and headers. AC_DEFUN([R_XDR], [AC_CACHE_CHECK([for XDR support], r_cv_xdr, [if test "${ac_cv_header_rpc_xdr_h}" = yes \ && test "${ac_cv_search_xdr_string}" != no ; then r_cv_xdr=yes else r_cv_xdr=no fi]) if test "${r_cv_xdr}" = yes; then AC_DEFINE(HAVE_XDR, 1, [Define if you have the XDR headers and library routines.]) fi AM_CONDITIONAL(BUILD_XDR, test "${r_cv_xdr}" = no) ])# R_XDR ## R_ZLIB ## ------ ## Try finding zlib library and headers. ## We check that both are installed, and that the header >= 1.1.3 ## and that gzopen is in the library (which suggests the library ## is also recent enough). AC_DEFUN([R_ZLIB], [ AS_MESSAGE([checking if suitable zlib is installed or needs to be compiled...]) have_zlib=no AC_CHECK_LIB(z, gzopen, [ AC_CHECK_HEADER(zlib.h, [ AC_MSG_CHECKING([if zlib version >= 1.1.3]) AC_TRY_RUN([ #include "confdefs.h" #include #include int main() { #ifdef ZLIB_VERSION return(strcmp(ZLIB_VERSION, "1.1.3") < 0); #else return(1); #endif }], [AC_MSG_RESULT([yes]) have_zlib=yes], AC_MSG_RESULT([no]), AC_MSG_RESULT([no])) ]) ]) if test "${have_zlib}" = yes; then AC_DEFINE(HAVE_ZLIB, 1, [Define if you have the zlib headers and libraries.]) LIBS="-lz ${LIBS}" echo "using installed zlib" else echo "we will build zlib for you" AC_CACHE_CHECK([mmap support for zlib], r_cv_zlib_mmap, AC_TRY_RUN([ #include #include #include caddr_t hello() { return mmap((caddr_t)0, (off_t)0, PROT_READ, MAP_SHARED, 0, (off_t)0); }], [r_cv_zlib_mmap=no], [r_cv_zlib_mmap=yes], [r_cv_zlib_mmap=yes])) AM_CONDITIONAL(USE_MMAP_ZLIB, test "${r_cv_zlib_mmap}" = yes) fi AM_CONDITIONAL(BUILD_ZLIB, test "${have_zlib}" = no) ])# R_ZLIB ## R_SYS_POSIX_LEAPSECONDS ## ----------------------- ## See if your system time functions do not count leap seconds, as ## required by POSIX. AC_DEFUN([R_SYS_POSIX_LEAPSECONDS], [AC_CACHE_CHECK([whether leap seconds are treated according to POSIX], r_cv_sys_posix_leapseconds, AC_TRY_RUN([ #include #include #include #include "confdefs.h" int main () { struct tm *tm; time_t ct; ctime(&ct); ct = ct - (ct % 60); tm = gmtime(&ct); if(tm->tm_sec == 0) exit(1); else exit(0); }], [r_cv_sys_posix_leapseconds=no], [r_cv_sys_posix_leapseconds=yes], [r_cv_sys_posix_leapseconds=yes])) if test "x${r_cv_sys_posix_leapseconds}" = xyes; then AC_DEFINE(HAVE_POSIX_LEAPSECONDS, 1, [Define if your system time functions do not count leap seconds, as required by POSIX.]) fi ])# R_SYS_POSIX_LEAPSECONDS