]> www.ginac.de Git - ginac.git/blobdiff - acinclude.m4
Make matrix::solve() work with non-normal zeros.
[ginac.git] / acinclude.m4
index 06ac032ad48b0563c91c798a67e756c8a936958a..53b45e5a9e8c0ac36712bc13206561eb6a40151e 100644 (file)
@@ -4,6 +4,24 @@ dnl additions' names with AC_ but with GINAC_ in order to steer clear of
 dnl future trouble.
 dnl ===========================================================================
 
+dnl  GINAC_HEADER_GETVAL(NAME,FILE)
+dnl  ----------------------------
+dnl  Expand at autoconf time to the value of a "#define NAME" from the given
+dnl  FILE. The regexps here aren't very rugged, but are enough for us.
+dnl  /dev/null as a parameter prevents a hang if $2 is accidentally omitted.
+dnl  (shamelessly ripped from GMP, and changed prefix to GINAC_).
+
+define(GINAC_HEADER_GETVAL,
+[patsubst(patsubst(
+esyscmd([grep "^#define $1 " $2 /dev/null 2>/dev/null]),
+[^.*$1[        ]+],[]),
+[[
+       ]*$],[])])
+define(GINAC_GET_VERSION,
+[GINAC_HEADER_GETVAL(GINACLIB_$1_VERSION,[ginac/version.h])])
+define(GINAC_GET_LTVERSION,
+[GINAC_HEADER_GETVAL(GINAC_LT_$1,[ginac/version.h])])
+
 dnl Usage: GINAC_STD_CXX_HEADERS
 dnl Check for standard C++ headers, bail out if something is missing.
 AC_DEFUN([GINAC_STD_CXX_HEADERS], [
@@ -11,23 +29,38 @@ AC_CACHE_CHECK([for standard C++ header files], [ginac_cv_std_cxx_headers], [
        ginac_cv_std_cxx_headers="no"
        AC_LANG_PUSH([C++])
        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+               #include <algorithm>
+               #include <cstddef>
+               #include <cstdio>
+               #include <cstdlib>
+               #include <cstring>
+               #include <cstdint>
+               #include <ctime>
+               #include <fstream>
+               #include <functional>
+               #include <iomanip>
+               #include <ios>
                #include <iosfwd>
                #include <iostream>
-               #include <vector>
+               #include <iterator>
+               #include <limits>
                #include <list>
                #include <map>
+               #include <memory>
+               #include <numeric>
+               #include <ostream>
                #include <set>
-               #include <string>
                #include <sstream>
-               #include <typeinfo>
+               #include <stack>
                #include <stdexcept>
-               #include <algorithm>
-               #include <limits>
-               #include <ctime>
+               #include <string>
+               #include <typeinfo>
+               #include <utility>
+               #include <vector>
                ]])], [ginac_cv_std_cxx_headers="yes"])
        AC_LANG_POP([C++])])
 if test "${ginac_cv_std_cxx_headers}" != "yes"; then
-       AC_MSG_ERROR([Standard ISO C++ 98 headers are missing])
+       AC_MSG_ERROR([Standard ISO C++ headers are missing])
 fi
 ])
 
@@ -45,25 +78,25 @@ AC_REQUIRE([GINAC_TERMCAP])
 GINSH_LIBS=""
 AC_CHECK_HEADERS(readline/readline.h readline/history.h)
 if test "x${ac_cv_header_readline_readline_h}" != "xyes" -o "x${ac_cv_header_readline_history_h}" != "xyes"; then
-       GINAC_WARNING([readline headers could not be found.])
+       GINAC_WARNING([ginsh will not compile, because readline headers could not be found.])
 else
        AC_CACHE_CHECK([for version of libreadline], [ginac_cv_rl_supported], [
                ginac_cv_rl_supported="no"
                AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-                       #include <stdio.h>
+                       #include <cstdio>
                        #include <readline/readline.h>
                        #if !defined(RL_VERSION_MAJOR) || !defined(RL_VERSION_MINOR)
                        #error "Ancient/unsupported version of readline"
                        #endif]])],
                        [ginac_cv_rl_supported="yes"])])
        if test "x${ginac_cv_rl_supported}" != "xyes"; then
-               GINAC_WARNING([Unsupported version of readline (<= 4.2 or non-GNU).])
+               GINAC_WARNING([ginsh will not compile, because of an unsupported version of readline (<= 4.2 or non-GNU).])
        else
                save_LIBS="$LIBS"
                LIBS="$LIBTERMCAP $LIBS"
                AC_CHECK_LIB(readline, readline)
                if test "x${ac_cv_lib_readline_readline}" != "xyes"; then
-                       GINAC_WARNING([libreadline could not be found.])
+                       GINAC_WARNING([ginsh will not compile, because libreadline could not be found.])
                fi
                GINSH_LIBS="$LIBS"
                LIBS="$save_LIBS"
@@ -121,6 +154,7 @@ dnl This macro displays a warning message if GINAC_ERROR or GINAC_WARNING
 dnl has occured previously.
 AC_DEFUN([GINAC_CHECK_ERRORS],[
 if test "x${ginac_error}" = "xyes"; then
+       echo
     echo "**** The following problems have been detected by configure."
     echo "**** Please check the messages below before running \"make\"."
     echo "**** (see the section 'Common Problems' in the INSTALL file)"
@@ -135,6 +169,7 @@ if test "x${ginac_error}" = "xyes"; then
     exit 1
 else 
     if test "x${ginac_warning}" = "xyes"; then
+               echo
         echo "=== The following minor problems have been detected by configure."
         echo "=== Please check the messages below before running \"make\"."
         echo "=== (see the section 'Common Problems' in the INSTALL file)"