From 71dc9cf20cb62bc53c88bb36f71d8cc93d67913e Mon Sep 17 00:00:00 2001 From: Jens Vollinga Date: Wed, 5 Nov 2008 17:08:36 +0100 Subject: [PATCH] [portability] GiNaC::compile_ex works on OpenBSD now. * acinclude.m4: check for dlopen() in libdl and in libc itself. Thanks to Paul Irofti for a bug report and a suggestion. --- acinclude.m4 | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/acinclude.m4 b/acinclude.m4 index dd7299c0..cb69f55a 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -132,3 +132,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)]) + -- 2.49.0