]> git.ipfire.org Git - thirdparty/make.git/commitdiff
* configure.ac: Check that we can link with Guile
authorPaul Smith <psmith@gnu.org>
Sun, 23 Oct 2022 00:28:35 +0000 (20:28 -0400)
committerPaul Smith <psmith@gnu.org>
Sun, 23 Oct 2022 02:40:26 +0000 (22:40 -0400)
On multi-arch systems we may be able to find the header file but
not successfully link the library.

configure.ac

index 005aba358d64904222599e225a8a080e8e06e434..b28c84d37404ff2398da8979d635ab4096ceebfb 100644 (file)
@@ -175,15 +175,35 @@ AS_IF([test "x$with_guile" != xno],
   AC_MSG_RESULT([$guile_version])
   AS_IF([test "$have_guile" = yes],
   [ PKG_CHECK_MODULES(GUILE, [guile-$guile_version])
-    # Unfortunately Guile requires a C99 compiler but GNU make doesn't, so
-    # verify we can actually compile the header.
+    # Unfortunately pkg doesn't help in multi-arch environments where the
+    # package is installed for some architectures but not others; we need
+    # to try to link.
     keep_CPPFLAGS="$CPPFLAGS"
-    CPPFLAGS="$CPPFLAGS $pkg_cv_GUILE_CFLAGS"
+    keep_LIBS="$LIBS"
+    CPPFLAGS="$CPPFLAGS $GUILE_CFLAGS"
+    LIBS="$LIBS $GUILE_LIBS"
     AC_CHECK_HEADER([libguile.h],
                     [AC_DEFINE([HAVE_GUILE], [1], [Embed GNU Guile support])],
                     [have_guile=no],
                     [/* Avoid configuration error warnings. */])
+    AS_IF([test "$have_guile" = yes],
+    [ AC_MSG_CHECKING([whether we can link GNU Guile])
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#include <libguile.h>
+static void *
+guile_init (void *arg)
+{
+   (void) arg;
+   return 0;
+}
+]], [[
+    scm_with_guile (guile_init, 0);
+]])],
+        [have_guile=yes],
+        [have_guile=no])
+      AC_MSG_RESULT([$have_guile])])
     CPPFLAGS="$keep_CPPFLAGS"
+    LIBS="$keep_LIBS"
   ])
 ])