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], [
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
])
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"
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)"
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)"
esac
if test "$CONFIG_EXCOMPILER" = "yes"; then
- AC_CHECK_LIB(dl, dlopen, [
- DL_LIBS="-ldl"
- AC_DEFINE(HAVE_LIBDL, 1, [set to 1 if you have a working libdl installed.])],
-
- [AC_MSG_WARN([libdl not found. GiNaC::compile_ex will be disabled.])
- CONFIG_EXCOMPILER="no"])
+ AC_CHECK_HEADER([dlfcn.h], [CONFIG_EXCOMPILER="yes"], [CONFIG_EXCOMPILER="no"])
elif test "$CONFIG_EXCOMPILER" = "no"; then
- AC_MSG_RESULT([INFO: GiNaC::compile_ex disabled at user request.])
+ AC_MSG_NOTICE([GiNaC::compile_ex disabled at user request.])
else
- AC_MSG_RESULT([INFO: GiNaC::compile_ex is not supported on $host_os.])
+ AC_MSG_NOTICE([GiNaC::compile_ex is not supported on $host_os.])
+fi
+
+if test "$CONFIG_EXCOMPILER" = "yes"; then
+ dnl Some systems (GNU/Linux, Solaris) have dlopen in -ldl, some
+ dnl others (OpenBSD) -- in libc
+ found_dlopen_lib="no"
+ DL_LIBS="-ldl"
+ AC_CHECK_LIB(dl, dlopen, [found_dlopen_lib="yes"])
+ if test "$found_dlopen_lib" = "no"; then
+ DL_LIBS=""
+ AC_CHECK_FUNC(dlopen, [found_dlopen_lib="yes"])
+ fi
+ if test "$found_dlopen_lib" = "no"; then
+ CONFIG_EXCOMPILER="no"
+ AC_MSG_WARN([Could not found working dlopen(). GiNaC::compile_ex will be disabled.])
+ else
+ AC_DEFINE(HAVE_LIBDL, 1, [set to 1 if dlopen() works.])
+ fi
fi
AC_SUBST(DL_LIBS)
AC_SUBST(CONFIG_EXCOMPILER)])