aboutsummaryrefslogtreecommitdiff
path: root/gdb/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/configure.ac')
-rw-r--r--gdb/configure.ac148
1 files changed, 148 insertions, 0 deletions
diff --git a/gdb/configure.ac b/gdb/configure.ac
index feb28f3..73decd0 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -1054,6 +1054,154 @@ AC_SUBST(PYTHON_CFLAGS)
AC_SUBST(PYTHON_CPPFLAGS)
AC_SUBST(PYTHON_LIBS)
+# -------------------- #
+# Check for libguile. #
+# -------------------- #
+
+dnl We check guile with pkg-config.
+
+AC_PATH_PROG(pkg_config_prog_path, pkg-config, missing)
+
+dnl Utility to simplify finding libguile.
+dnl $1 = pkg-config-program
+dnl $2 = space-separate list of guile versions to try
+dnl $3 = yes|no, indicating whether to flag errors or ignore them
+dnl $4 = the shell variable to assign the result to
+dnl If libguile is found we store "yes" here.
+
+AC_DEFUN([AC_TRY_LIBGUILE],
+[
+ pkg_config=$1
+ guile_version_list=$2
+ flag_errors=$3
+ define([have_libguile_var],$4)
+ if test "${pkg_config}" = "missing"; then
+ AC_ERROR(pkg-config program not found)
+ fi
+ if test ! -f "${pkg_config}"; then
+ AC_ERROR(pkg-config program ${pkg_config} not found)
+ fi
+ found_usable_guile=checking
+ AC_MSG_CHECKING([for usable guile from ${pkg_config}])
+ for guile_version in ${guile_version_list}; do
+ ${pkg_config} --exists ${guile_version} 2>/dev/null
+ if test $? != 0; then
+ continue
+ fi
+ dnl pkg-config says the package exists, so if we get an error now,
+ dnl that's bad.
+ new_CPPFLAGS=`${pkg_config} --cflags ${guile_version}`
+ if test $? != 0; then
+ AC_ERROR(failure running pkg-config --cflags ${guile_version})
+ fi
+ new_LIBS=`${pkg_config} --libs ${guile_version}`
+ if test $? != 0; then
+ AC_ERROR(failure running pkg-config --libs ${guile_version})
+ fi
+ dnl If we get this far, great.
+ found_usable_guile=${guile_version}
+ break
+ done
+ if test "${found_usable_guile}" = "checking"; then
+ if test "${flag_errors}" = "yes"; then
+ AC_ERROR(unable to find usable guile version from "${guile_version_list}")
+ else
+ found_usable_guile=no
+ fi
+ fi
+ dnl One final sanity check.
+ dnl The user could have said --with-guile=python-2.7.
+ if test "${found_usable_guile}" != no; then
+ save_CPPFLAGS=$CPPFLAGS
+ save_LIBS=$LIBS
+ CPPFLAGS="$CPPFLAGS $new_CPPFLAGS"
+ LIBS="$LIBS $new_LIBS"
+ AC_LINK_IFELSE(AC_LANG_PROGRAM([[#include "libguile.h"]],
+ [[scm_init_guile ();]]),
+ [have_libguile_var=yes
+ GUILE_CPPFLAGS=$new_CPPFLAGS
+ GUILE_LIBS=$new_LIBS],
+ [found_usable_guile=no])
+ CPPFLAGS=$save_CPPFLAGS
+ LIBS=$save_LIBS
+ if test "${found_usable_guile}" = no; then
+ if test "${flag_errors}" = yes; then
+ AC_MSG_FAILURE(linking guile version ${guile_version} test program failed)
+ fi
+ fi
+ fi
+ AC_MSG_RESULT([${found_usable_guile}])
+])
+
+dnl There are several different values for --with-guile:
+dnl
+dnl no - Don't include guile support.
+dnl yes - Include guile support, error if it's missing.
+dnl The pkg-config program must be in $PATH.
+dnl auto - Same as "yes", but if guile is missing from the system,
+dnl fall back to "no".
+dnl guile-version [guile-version-choice-2 ...] -
+dnl A space-separated list of guile package versions to try.
+dnl These are passed to pkg-config as-is.
+dnl E.g., guile-2.0 or guile-2.2-uninstalled
+dnl This requires making sure PKG_CONFIG_PATH is set appropriately.
+dnl /path/to/pkg-config -
+dnl Use this pkg-config program.
+dnl NOTE: This needn't be the "real" pkg-config program.
+dnl It could be a shell script. It is invoked as:
+dnl pkg-config --exists $version
+dnl pkg-config --cflags $version
+dnl pkg-config --libs $version
+dnl $version will be the default guile version (currently guile-2.0),
+dnl but the program is free to ignore this.
+
+AC_ARG_WITH(guile,
+ AS_HELP_STRING([--with-guile@<:@=GUILE@:>@], [include guile support (auto/yes/no/<guile-version>/<pkg-config-program>)]),
+ [], [with_guile=auto])
+AC_MSG_CHECKING([whether to use guile])
+AC_MSG_RESULT([$with_guile])
+
+try_guile_versions="guile-2.0"
+have_libguile=no
+case "${with_guile}" in
+no)
+ AC_MSG_WARN([guile support disabled; some features will be unavailable.])
+ ;;
+auto)
+ AC_TRY_LIBGUILE(${pkg_config_prog_path}, ${try_guile_versions}, no, have_libguile)
+ ;;
+yes)
+ AC_TRY_LIBGUILE(${pkg_config_prog_path}, ${try_guile_versions}, yes, have_libguile)
+ ;;
+[[\\/]]* | ?:[[\\/]]*)
+ AC_TRY_LIBGUILE(${with_guile}, ${try_guile_versions}, yes, have_libguile)
+ ;;
+"" | */*)
+ # Disallow --with=guile="" and --with-guile=foo/bar.
+ AC_ERROR(invalid value for --with-guile)
+ ;;
+*)
+ # A space separate list of guile versions to try, in order.
+ AC_TRY_LIBGUILE(${pkg_config_prog_path}, ${with_guile}, yes, have_libguile)
+ ;;
+esac
+
+if test "${have_libguile}" != no; then
+ AC_DEFINE(HAVE_GUILE, 1, [Define if Guile interpreter is being linked in.])
+ CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_GUILE_OBS)"
+ CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_GUILE_DEPS)"
+ CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_GUILE_SRCS)"
+ CONFIG_INSTALL="$CONFIG_INSTALL install-guile"
+ ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_GUILE_CFLAGS)"
+else
+ # Even if Guile support is not compiled in, we need to have these files
+ # included.
+ CONFIG_OBS="$CONFIG_OBS guile.o"
+ CONFIG_SRCS="$CONFIG_SRCS guile/guile.c"
+fi
+AC_SUBST(GUILE_CPPFLAGS)
+AC_SUBST(GUILE_LIBS)
+
# --------------------- #
# Check for libmcheck. #
# --------------------- #