Fix missing @clicksequence problem with older Texinfo versions.
[pspp-builds.git] / acinclude.m4
index 0eb9c1f31a1562b2b1ee6249cbc9547a2b4e6bb7..a3275a32afd4be6c3427deee8ef07b29b17258af 100644 (file)
@@ -1,13 +1,15 @@
-dnl Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+dnl Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
 
 dnl Prerequisites.
 
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
 
 dnl Prerequisites.
 
-dnl Instead of giving an error about each prerequisite as we encounter it, 
-dnl group them all together at the end of the run, to be user-friendly.
-AC_DEFUN([PSPP_REQUIRED_PREREQ], [pspp_required_prereqs="$pspp_required_prereqs
+dnl Summarize all the missing prerequisites at the end of the run to
+dnl increase user-friendliness.
+AC_DEFUN([PSPP_REQUIRED_PREREQ], 
+  [AC_MSG_WARN([You must install $1 before building PSPP.])
+pspp_required_prereqs="$pspp_required_prereqs
        $1"])
 AC_DEFUN([PSPP_OPTIONAL_PREREQ], [pspp_optional_prereqs="$pspp_optional_prereqs
        $1"])
        $1"])
 AC_DEFUN([PSPP_OPTIONAL_PREREQ], [pspp_optional_prereqs="$pspp_optional_prereqs
        $1"])
@@ -37,36 +39,41 @@ AC_DEFUN([PSPP_PERL],
 dnl Check that libplot is available.
 AC_DEFUN([PSPP_LIBPLOT],
 [
 dnl Check that libplot is available.
 AC_DEFUN([PSPP_LIBPLOT],
 [
-  AC_ARG_WITH(libplot, [  --without-libplot         don't compile in support of charts (using libplot)])
+  AC_ARG_WITH(
+    libplot, 
+    [AS_HELP_STRING([--without-libplot],
+                    [don't compile in support of charts (using libplot)])])
 
   if test x"$with_libplot" != x"no" ; then 
 
   if test x"$with_libplot" != x"no" ; then 
-    AC_CHECK_LIB(plot, pl_newpl_r,,
-                [PSPP_REQUIRED_PREREQ([libplot (or use --without-libplot)])])
-  fi
-])
+    # Check whether we can link against libplot without any extra libraries.
+    AC_CHECK_LIB(plot, pl_newpl_r, [LIBPLOT_LIBS="-lplot"])
 
 
-dnl Check that off_t is defined as an integer type.
-dnl Solaris sometimes declares it as a struct, if it
-dnl thinks that the compiler does not support `long long'.
-AC_DEFUN([PSPP_OFF_T],
-[
-  AC_COMPILE_IFELSE([#include <sys/types.h>
-  #include <unistd.h>
-  off_t x = 0;
-  int main (void) 
-  { 
-    lseek (0, 1, 2);
-    return 0;
-  }], [], [AC_MSG_ERROR(
-  [Your system's definition of off_t is broken.  You are probably
-  using Solaris.  You can probably fix the problem with
-  `--disable-largefile' or `CFLAGS=-ansi'.])])
+    # Check whether we can link against libplot if we also link X.
+    if test x"$LIBPLOT_LIBS" = x""; then
+      AC_PATH_XTRA
+      extra_libs="-lXaw -lXmu -lXt $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS -lm"
+      AC_CHECK_LIB(plot, pl_newpl_r,
+                  [LIBPLOT_LIBS="-lplot $extra_libs"
+                    LDFLAGS="$LDFLAGS $X_LIBS"],,
+                  [$extra_libs])
+    fi
+
+    # Still can't link?
+    if test x"$LIBPLOT_LIBS" = x""; then
+      PSPP_REQUIRED_PREREQ([libplot (or use --without-libplot)])
+    fi
+
+    # Set up to make everything work.
+    LIBS="$LIBPLOT_LIBS $LIBS"
+    AC_DEFINE(HAVE_LIBPLOT, 1,
+              [Define to 1 if you have the `libplot' library (-lplot).])
+  fi
 ])
 
 ])
 
-dnl Check whether a warning flag is accepted.
-dnl If so, add it to CFLAGS.
-dnl Example: PSPP_ENABLE_WARNING(-Wdeclaration-after-statement)
-AC_DEFUN([PSPP_ENABLE_WARNING],
+dnl PSPP_CHECK_CC_OPTION([OPTION], [ACTION-IF-ACCEPTED], [ACTION-IF-REJECTED])
+dnl Check whether the given C compiler OPTION is accepted.
+dnl If so, execute ACTION-IF-ACCEPTED, otherwise ACTION-IF-REJECTED.
+AC_DEFUN([PSPP_CHECK_CC_OPTION],
 [
   m4_define([pspp_cv_name], [pspp_cv_[]m4_translit([$1], [-], [_])])dnl
   AC_CACHE_CHECK([whether $CC accepts $1], [pspp_cv_name], 
 [
   m4_define([pspp_cv_name], [pspp_cv_[]m4_translit([$1], [-], [_])])dnl
   AC_CACHE_CHECK([whether $CC accepts $1], [pspp_cv_name], 
@@ -75,13 +82,22 @@ AC_DEFUN([PSPP_ENABLE_WARNING],
      AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,)], [pspp_cv_name[]=yes], [pspp_cv_name[]=no])
      CFLAGS="$pspp_save_CFLAGS"])
   if test $pspp_cv_name = yes; then
      AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,)], [pspp_cv_name[]=yes], [pspp_cv_name[]=no])
      CFLAGS="$pspp_save_CFLAGS"])
   if test $pspp_cv_name = yes; then
-    CFLAGS="$CFLAGS $1"
+    m4_if([$2], [], [;], [$2])
+  else
+    m4_if([$3], [], [:], [$3])
   fi
 ])
 
   fi
 ])
 
+dnl PSPP_ENABLE_OPTION([OPTION])
+dnl Check whether the given C compiler OPTION is accepted.
+dnl If so, add it to CFLAGS.
+dnl Example: PSPP_ENABLE_OPTION([-Wdeclaration-after-statement])
+AC_DEFUN([PSPP_ENABLE_OPTION], 
+  [PSPP_CHECK_CC_OPTION([$1], [CFLAGS="$CFLAGS $1"])])
+
 dnl Check for readline and history libraries.
 
 dnl Check for readline and history libraries.
 
-dnl Modified for PSPP by Ben Pfaff, based on readline.m4 serial 3 from
+dnl Modified for PSPP, based on readline.m4 serial 3 from
 dnl gnulib, which was written by Simon Josefsson, with help from Bruno
 dnl Haible and Oskar Liljeblad.
 
 dnl gnulib, which was written by Simon Josefsson, with help from Bruno
 dnl Haible and Oskar Liljeblad.
 
@@ -98,7 +114,7 @@ AC_DEFUN([PSPP_READLINE],
 
   dnl Add $INCREADLINE to CPPFLAGS before performing the following checks,
   dnl because if the user has installed libreadline and not disabled its use
 
   dnl Add $INCREADLINE to CPPFLAGS before performing the following checks,
   dnl because if the user has installed libreadline and not disabled its use
-  dnl via --without-libreadline-prefix, he wants to use it. The AC_TRY_LINK
+  dnl via --without-libreadline-prefix, he wants to use it. The AC_LINK_IFELSE
   dnl will then succeed.
   am_save_CPPFLAGS="$CPPFLAGS"
   AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCREADLINE $INCHISTORY])
   dnl will then succeed.
   am_save_CPPFLAGS="$CPPFLAGS"
   AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCREADLINE $INCHISTORY])
@@ -116,11 +132,9 @@ AC_DEFUN([PSPP_READLINE],
       if test -n "$extra_lib"; then
         LIBS="$LIBS -l$extra_lib"
       fi
       if test -n "$extra_lib"; then
         LIBS="$LIBS -l$extra_lib"
       fi
-      AC_TRY_LINK([#include <stdio.h>
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>
 #include <readline/readline.h>
 #include <readline/readline.h>
-#include <readline/history.h>],
-        [readline((char*)0); add_history((char*)0);],
-        gl_cv_lib_readline=yes)
+#include <readline/history.h>]], [[readline((char*)0); add_history((char*)0);]])],[gl_cv_lib_readline=yes],[])
       if test "$gl_cv_lib_readline" = yes; then
         if test -n "$extra_lib"; then
           LIBREADLINE="$LIBREADLINE $LIBHISTORY -l$extra_lib"
       if test "$gl_cv_lib_readline" = yes; then
         if test -n "$extra_lib"; then
           LIBREADLINE="$LIBREADLINE $LIBHISTORY -l$extra_lib"
@@ -150,4 +164,144 @@ AC_DEFUN([PSPP_READLINE],
   AC_SUBST(LTLIBREADLINE)
 ])
 
   AC_SUBST(LTLIBREADLINE)
 ])
 
-dnl aclocal.m4 ends here
+dnl Check for build tools.  Adapted from bfd library.
+
+AC_DEFUN([PSPP_CC_FOR_BUILD],
+[# Put a plausible default for CC_FOR_BUILD in Makefile.
+if test -z "$CC_FOR_BUILD"; then
+  if test "x$cross_compiling" = "xno"; then
+    CC_FOR_BUILD='$(CC)'
+  else
+    CC_FOR_BUILD=cc
+  fi
+fi
+AC_SUBST(CC_FOR_BUILD)
+# Also set EXEEXT_FOR_BUILD.
+if test "x$cross_compiling" = "xno"; then
+  EXEEXT_FOR_BUILD='$(EXEEXT)'
+else
+  AC_CACHE_CHECK([for build system executable suffix], pspp_cv_build_exeext,
+    [rm -f conftest*
+     echo 'int main () { return 0; }' > conftest.c
+     pspp_cv_build_exeext=
+     ${CC_FOR_BUILD} -o conftest conftest.c 1>&5 2>&5
+     for file in conftest.*; do
+       case $file in # (
+       *.c | *.o | *.obj | *.ilk | *.pdb) ;; # (
+       *) pspp_cv_build_exeext=`echo $file | sed -e s/conftest//` ;;
+       esac
+     done
+     rm -f conftest*
+     test x"${pspp_cv_build_exeext}" = x && pspp_cv_build_exeext=no])
+  EXEEXT_FOR_BUILD=""
+  test x"${pspp_cv_build_exeext}" != xno && EXEEXT_FOR_BUILD=${pspp_cv_build_exeex
+t}
+fi
+AC_SUBST(EXEEXT_FOR_BUILD)])
+
+dnl Check for LC_PAPER, _NL_PAPER_WIDTH, _NL_PAPER_HEIGHT.
+AC_DEFUN([PSPP_LC_PAPER],
+[AC_CACHE_CHECK(for LC_PAPER, pspp_cv_lc_paper, [
+    pspp_cv_lc_paper=no
+    AC_COMPILE_IFELSE(
+      [AC_LANG_PROGRAM(
+        [#include <locale.h>
+#include <langinfo.h>
+],
+        [(void) LC_PAPER; (void) _NL_PAPER_WIDTH; (void) _NL_PAPER_HEIGHT])],
+      [pspp_cv_lc_paper=yes])
+  ])
+  if test "$pspp_cv_lc_paper" = yes; then
+    AC_DEFINE(HAVE_LC_PAPER, 1, [Define if you have LC_PAPER.])
+  fi
+])
+
+
+# PSPP_LINK2_IFELSE(SOURCE1, SOURCE2, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
+# -------------------------------------------------------------
+# Based on AC_LINK_IFELSE, but tries to link both SOURCE1 and SOURCE2
+# into a program.
+#
+# Test that resulting file is executable; see the problem reported by mwoehlke
+# in <http://lists.gnu.org/archive/html/bug-coreutils/2006-10/msg00048.html>.
+# But skip the test when cross-compiling, to prevent problems like the one
+# reported by Chris Johns in
+# <http://lists.gnu.org/archive/html/autoconf/2007-03/msg00085.html>.
+#
+m4_define([PSPP_LINK2_IFELSE],
+[m4_ifvaln([$1], [AC_LANG_CONFTEST([$1])])dnl
+mv conftest.$ac_ext conftest1.$ac_ext
+m4_ifvaln([$2], [AC_LANG_CONFTEST([$2])])dnl
+mv conftest.$ac_ext conftest2.$ac_ext
+rm -f conftest1.$ac_objext conftest2.$ac_objext conftest$ac_exeext
+pspp_link2='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest1.$ac_ext conftest2.$ac_ext $LIBS >&5'
+AS_IF([_AC_DO_STDERR($pspp_link2) && {
+        test -z "$ac_[]_AC_LANG_ABBREV[]_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        AS_TEST_X([conftest$ac_exeext])
+       }],
+      [$3],
+      [echo "$as_me: failed source file 1 of 2 was:" >&5
+sed 's/^/| /' conftest1.$ac_ext >&5
+echo "$as_me: failed source file 2 of 2 was:" >&5
+sed 's/^/| /' conftest2.$ac_ext >&5
+       $4])
+dnl Delete also the IPA/IPO (Inter Procedural Analysis/Optimization)
+dnl information created by the PGI compiler (conftest_ipa8_conftest.oo),
+dnl as it would interfere with the next link command.
+rm -rf conftest.dSYM conftest1.dSYM conftest2.dSYM
+rm -f core conftest.err conftest1.err conftest2.err
+rm -f conftest1.$ac_objext conftest2.$ac_objext conftest*_ipa8_conftest*.oo
+rm -f conftest$ac_exeext
+rm -f m4_ifval([$1], [conftest1.$ac_ext]) m4_ifval([$2], [conftest1.$ac_ext])[]dnl
+])# PSPP_LINK2_IFELSE
+
+# GSL uses "extern inline" without determining whether the compiler uses
+# GCC inline rules or C99 inline rules.  If it uses the latter then GSL
+# will be broken without passing -fgnu89-inline to GCC.
+AC_DEFUN([PSPP_GSL_NEEDS_FGNU89_INLINE],
+[# GSL only uses "inline" at all if HAVE_INLINE is defined as a macro.
+ # In turn, gnulib's gl_INLINE is one macro that does that.  We need to
+ # make sure that it has run by the time we run this test, otherwise we'll
+ # get a false result.
+ AC_REQUIRE([gl_INLINE])
+ PSPP_CHECK_CC_OPTION(
+   [-fgnu89-inline],
+   [AC_CACHE_CHECK([whether GSL needs -fgnu89-inline to link],
+                   pspp_cv_gsl_needs_fgnu89_inline, [
+                   PSPP_LINK2_IFELSE(
+                     [AC_LANG_PROGRAM([#include <gsl/gsl_math.h>
+                                      ], [GSL_MAX_INT(1,2);])],
+                     [AC_LANG_SOURCE([#include <gsl/gsl_math.h>
+                                      void x (void) {}])],
+                     [pspp_cv_gsl_needs_fgnu89_inline=no],
+                     [pspp_cv_gsl_needs_fgnu89_inline=yes])])
+     if test "$pspp_cv_gsl_needs_fgnu89_inline" = "yes"; then
+        CFLAGS="$CFLAGS -fgnu89-inline"
+     fi])
+])
+
+AC_DEFUN([PSPP_CHECK_CLICKSEQUENCE],
+  [AC_REQUIRE([AM_INIT_AUTOMAKE])  # Defines MAKEINFO
+   AC_CACHE_CHECK([whether makeinfo supports @clicksequence],
+     [pspp_cv_have_clicksequence],
+     [cat > conftest.texi  <<EOF
+@setfilename conftest.info
+@clicksequence{File @click{} Open}
+EOF
+      echo "configure:__oline__: running $MAKEINFO conftest.texi >&AS_MESSAGE_LOG_FD" >&AS_MESSAGE_LOG_FD
+      eval "$MAKEINFO conftest.texi >&AS_MESSAGE_LOG_FD 2>&1"
+      retval=$?
+      echo "configure:__oline__: \$? = $retval" >&AS_MESSAGE_LOG_FD
+      if test $retval = 0; then
+       pspp_cv_have_clicksequence=yes
+      else
+       pspp_cv_have_clicksequence=no
+      fi
+      rm -f conftest.texi conftest.info])
+   if test $pspp_cv_have_clicksequence = no; then
+       AM_MAKEINFOFLAGS="$AM_MAKEINFOFLAGS -DMISSING_CLICKSEQUENCE"
+       AC_SUBST([AM_MAKEINFOFLAGS])
+   fi])