Allow user to disable GiNaC::compile_ex (e.g. for security reasons).
authorAlexei Sheplyakov <varg@theor.jinr.ru>
Mon, 8 Sep 2008 07:09:20 +0000 (11:09 +0400)
committerAlexei Sheplyakov <varg@theor.jinr.ru>
Tue, 9 Sep 2008 10:17:08 +0000 (14:17 +0400)
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
configure.ac

index 886e7f2..78c3bdb 100644 (file)
@@ -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)])
+
index 45fd2d6..78954ec 100644 (file)
@@ -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