]> www.ginac.de Git - ginac.git/blobdiff - acinclude.m4
Univariate Hensel lifting now uses upoly.
[ginac.git] / acinclude.m4
index 9645620e1a56e0565eccb5b60801823dae8dab61..06ac032ad48b0563c91c798a67e756c8a936958a 100644 (file)
@@ -4,6 +4,33 @@ dnl additions' names with AC_ but with GINAC_ in order to steer clear of
 dnl future trouble.
 dnl ===========================================================================
 
+dnl Usage: GINAC_STD_CXX_HEADERS
+dnl Check for standard C++ headers, bail out if something is missing.
+AC_DEFUN([GINAC_STD_CXX_HEADERS], [
+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 <iosfwd>
+               #include <iostream>
+               #include <vector>
+               #include <list>
+               #include <map>
+               #include <set>
+               #include <string>
+               #include <sstream>
+               #include <typeinfo>
+               #include <stdexcept>
+               #include <algorithm>
+               #include <limits>
+               #include <ctime>
+               ]])], [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])
+fi
+])
+
 dnl Usage: GINAC_LIBREADLINE
 dnl
 dnl Check if GNU readline library and headers are avialable.
@@ -134,3 +161,56 @@ if test "$ac_cv_have_rusage" = yes; then
 fi
 AC_SUBST(CONFIG_RUSAGE)
 ])
+
+dnl Usage: GINAC_EXCOMPILER
+dnl - Checks if dlopen is available
+dnl - Allows user to disable GiNaC::compile_ex (e.g. for security reasons)
+dnl Defines HAVE_LIBDL preprocessor macro, sets DL_LIBS and CONFIG_EXCOMPILER
+dnl variables.
+AC_DEFUN([GINAC_EXCOMPILER], [
+CONFIG_EXCOMPILER=yes
+DL_LIBS=""
+
+AC_ARG_ENABLE([excompiler], 
+       [AS_HELP_STRING([--enable-excompiler], [Enable GiNaC::compile_ex (default: yes)])],
+       [if test "$enableval" = "no"; then
+               CONFIG_EXCOMPILER="no"
+       fi],
+       [CONFIG_EXCOMPILER="yes"])
+
+case $host_os in
+       *mingw32*)
+       CONFIG_EXCOMPILER="notsupported"
+       ;;
+       *)
+       ;;
+esac
+
+if test "$CONFIG_EXCOMPILER" = "yes"; then
+       AC_CHECK_HEADER([dlfcn.h], [CONFIG_EXCOMPILER="yes"], [CONFIG_EXCOMPILER="no"])
+elif test "$CONFIG_EXCOMPILER" = "no"; then
+       AC_MSG_NOTICE([GiNaC::compile_ex disabled at user request.])
+else
+       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)])
+