From: Alexei Sheplyakov Date: Mon, 8 Sep 2008 07:09:20 +0000 (+0400) Subject: Allow user to disable GiNaC::compile_ex (e.g. for security reasons). X-Git-Tag: release_1-5-0~63^2~2 X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=commitdiff_plain;h=a32a30d8ccdd0eb945b8180c8fe82d154e9280de 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. --- 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