From a32a30d8ccdd0eb945b8180c8fe82d154e9280de Mon Sep 17 00:00:00 2001 From: Alexei Sheplyakov Date: Mon, 8 Sep 2008 11:09:20 +0400 Subject: [PATCH] Allow user to disable GiNaC::compile_ex (e.g. for security reasons). configure takes --{disable,enable}-excompiler argument now. It can be used to disable GiNaC::compile_ex (default is to enable it). acinclude.m4: GINAC_EXCOMPILER: new macro. Checks for libdl, allows user to disable GiNaC::compile_ex. Also it doesn't bother to check for libdl on MinGW. configure.ac: use GINAC_EXCOMPILER to check for libdl. --- acinclude.m4 | 40 ++++++++++++++++++++++++++++++++++++++++ configure.ac | 10 +--------- 2 files changed, 41 insertions(+), 9 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index 886e7f2b..78c3bdb7 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -161,3 +161,43 @@ 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_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"]) +elif test "$CONFIG_EXCOMPILER" = "no"; then + AC_MSG_RESULT([INFO: GiNaC::compile_ex disabled at user request.]) +else + AC_MSG_RESULT([INFO: GiNaC::compile_ex is not supported on $host_os.]) +fi +AC_SUBST(DL_LIBS) +AC_SUBST(CONFIG_EXCOMPILER)]) + diff --git a/configure.ac b/configure.ac index 45fd2d64..78954eca 100644 --- a/configure.ac +++ b/configure.ac @@ -95,16 +95,8 @@ AC_CHECK_HEADERS(unistd.h) GINAC_HAVE_RUSAGE GINAC_READLINE -DL_LIBS="" dnl Check for dl library (needed for GiNaC::compile). -AC_CHECK_LIB(dl, dlopen, - [ - DL_LIBS="-ldl" - AC_DEFINE(HAVE_LIBDL, 1, [set to 1 if you have a working libdl installed.]) - ], - GINAC_WARNING([libdl not found. GiNaC::compile will be disabled.])) -AC_SUBST(DL_LIBS) - +GINAC_EXCOMPILER dnl Check for utilities needed by the different kinds of documentation. dnl Documentation needs only be built when extending it, so never mind if it -- 2.49.0