]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
build: allow override guile system location
authorAlon Bar-Lev <alon.barlev@gmail.com>
Wed, 3 Apr 2019 15:42:26 +0000 (18:42 +0300)
committerAlon Bar-Lev <alon.barlev@gmail.com>
Tue, 9 Apr 2019 17:19:31 +0000 (20:19 +0300)
guile has three settings acquired from system:
* GUILE_SITE
* GUILE_SITE_CCACHE
* GUILE_EXTENSION

The <guile-2.2 m4 macro exposed only GUILE_SITE while build tried to guess the
other variables based on the $libdir of the gnutls which may be different.

The >=guile-2.2 m4 macro provides all settings for build to use as default,
while allowing to override each.

Resolves: #748
Signed-off-by: Alon Bar-Lev <alon.barlev@gmail.com>
Makefile.am
configure.ac
guile/Makefile.am

index b4d0db3b5160df2ee3f27dac64a3cf3110f7944e..5be356e2ce9430697b286c4ab07ee7c0913b37ff 100644 (file)
 # along with this file; if not, write to the Free Software Foundation,
 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 
-DISTCHECK_CONFIGURE_FLAGS = --enable-doc --enable-gtk-doc --disable-valgrind-tests AUTOGEN=false
+DISTCHECK_CONFIGURE_FLAGS = \
+       --enable-doc \
+       --enable-gtk-doc \
+       --disable-valgrind-tests \
+       --with-guile-site-dir='$$(datarootdir)/guile/site/$$(GUILE_EFFECTIVE_VERSION)' \
+       --with-guile-site-ccache-dir='$$(libdir)/guile/$$(GUILE_EFFECTIVE_VERSION)/site-ccache' \
+       --with-guile-extension-dir='$$(libdir)/guile/$$(GUILE_EFFECTIVE_VERSION)/extensions' \
+       AUTOGEN=false
 
 SUBDIRS = gl lib extra
 
index f9d40b4ea23059e270a240e027b0bcaf4c20ab24..3814edf4000d7708c9c7bbf4783fa341ec131865 100644 (file)
@@ -825,13 +825,25 @@ if test "x$with_default_blacklist_file" != x; then
 fi
 
 dnl Guile bindings.
-opt_guile_bindings=yes
 AC_MSG_CHECKING([whether building Guile bindings])
 AC_ARG_ENABLE(guile,
        AS_HELP_STRING([--enable-guile], [build GNU Guile bindings]),
-opt_guile_bindings=$enableval)
+               [opt_guile_bindings=$enableval], [opt_guile_bindings=yes])
 AC_MSG_RESULT($opt_guile_bindings)
 
+AC_ARG_WITH(guile-site-dir, AS_HELP_STRING([--with-guile-site-dir=DIR],
+    [guile site directory for gnutls, default is guile system settings]),
+    [guilemoduledir="${withval}"], [guilemoduledir='$(GUILE_SITE)'])
+AC_ARG_WITH(guile-site-ccache-dir, AS_HELP_STRING([--with-guile-site-ccache-dir=DIR],
+    [guile ccache directory for gnutls, default is guile system settings]),
+    [guileobjectdir="${withval}"], [guileobjectdir='$(GUILE_SITE_CCACHE)'])
+AC_ARG_WITH(guile-extension-dir, AS_HELP_STRING([--with-guile-extension-dir=DIR],
+    [guile extension directory for gnutls, default is guile system settings]),
+    [guileextensiondir="${withval}"], [guileextensiondir='$(GUILE_EXTENSION)'])
+AC_SUBST([guilemoduledir])
+AC_SUBST([guileobjectdir])
+AC_SUBST([guileextensiondir])
+
 if test "$opt_guile_bindings" = "yes"; then
    AC_MSG_RESULT([***
 *** Detecting GNU Guile...
@@ -852,6 +864,28 @@ if test "$opt_guile_bindings" = "yes"; then
       GUILE_SITE_DIR
       GUILE_FLAGS
 
+      # Backward compatibility with <guile-2.2 m4 macro that is used
+      # due to autreconf of several CI machine.
+      # We need to guess the locations of ccache and extension
+      if test -z "${GUILE_SITE_CCACHE}"; then
+          AC_MSG_NOTICE([Found <guile-2.2 m4, macro emulating])
+
+          AC_MSG_CHECKING([for GUILE_SITE_CCACHE via pkg-config])
+          GUILE_SITE_CCACHE=`$PKG_CONFIG --variable=siteccachedir guile-$GUILE_EFFECTIVE_VERSION`
+          AC_MSG_RESULT([${GUILE_SITE_CCACHE}])
+          if test -z "${GUILE_SITE_CCACHE}"; then
+                  AC_MSG_CHECKING([for GUILE_SITE_CCACHE via guile])
+                  GUILE_SITE_CCACHE=`$GUILE -c "(display (if (defined? '%site-ccache-dir) (%site-ccache-dir) \"\"))"`
+                  AC_MSG_RESULT([${GUILE_SITE_CCACHE}])
+          fi
+          AC_SUBST([GUILE_SITE_CCACHE])
+
+          AC_MSG_CHECKING([for GUILE_EXTENSION])
+          GUILE_EXTENSION=`$PKG_CONFIG --print-errors --variable=extensiondir guile-$GUILE_EFFECTIVE_VERSION`
+          AC_MSG_RESULT([${GUILE_EXTENSION}])
+          AC_SUBST([GUILE_EXTENSION])
+      fi
+
       save_CFLAGS="$CFLAGS"
       save_LIBS="$LIBS"
       CFLAGS="$CFLAGS $GUILE_CFLAGS"
@@ -862,10 +896,6 @@ if test "$opt_guile_bindings" = "yes"; then
       CFLAGS="$save_CFLAGS"
       LIBS="$save_LIBS"
 
-      AC_MSG_CHECKING([the Guile effective version])
-      guile_effective_version="`$GUILE -c '(display (effective-version))'`"
-      AC_MSG_RESULT([$guile_effective_version])
-
       if test "$opt_guile_bindings" = "yes"; then
         AC_MSG_RESULT([yes])
         AC_MSG_CHECKING([whether gcc supports -fgnu89-inline])
@@ -884,14 +914,6 @@ if test "$opt_guile_bindings" = "yes"; then
        AC_CHECK_FUNCS([scm_gc_malloc_pointerless])
        CFLAGS="$save_CFLAGS"
        LIBS="$save_LIBS"
-
-       # The place where guile-gnutls.la will go.
-       guileextensiondir="$libdir/guile/$guile_effective_version"
-       AC_SUBST([guileextensiondir])
-
-       # The location of .go files.
-       guileobjectdir="$libdir/guile/$guile_effective_version/site-ccache"
-       AC_SUBST([guileobjectdir])
       else
         AC_MSG_RESULT([no])
         AC_MSG_WARN([A sufficiently recent GNU Guile not found.  Guile bindings not built.])
index 1d554a1f7a63564d53ea20a126fab60795d35228..cb9b7093c6c05bdc3c5854ebff4f6f386d6927b2 100644 (file)
@@ -22,8 +22,7 @@ SUBDIRS = src
 
 EXTRA_DIST = .dir-locals.el
 
-guilemoduledir = $(GUILE_SITE)
-guilemodulesubdir = $(GUILE_SITE)/gnutls
+guilemodulesubdir = $(guilemoduledir)/gnutls
 
 nodist_guilemodule_DATA = modules/gnutls.scm
 dist_guilemodulesub_DATA = modules/gnutls/extra.scm