]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
guile: Build and install .go files on Guile 2.x.
authorLudovic Courtès <ludo@gnu.org>
Thu, 11 Feb 2016 22:04:35 +0000 (23:04 +0100)
committerNikos Mavrogiannopoulos <nmav@redhat.com>
Mon, 15 Feb 2016 09:06:09 +0000 (10:06 +0100)
* configure.ac: Check for 'guild' and substitute 'GUILD'.  Define
'HAVE_GUILD'.  Substitute 'guileobjectdir'.  Don't output
guile/modules/Makefile and guile/tests/Makefile.
* guile/modules/Makefile.am, guile/tests/Makefile.am: Remove.  Move
contents to...
* guile/Makefile.am: ... here.
(SUBDIRS): Remove 'modules' and 'tests'.

configure.ac
guile/Makefile.am
guile/modules/Makefile.am [deleted file]
guile/tests/Makefile.am [deleted file]

index 6a5600c52a08ed1f6e95f62171bd8d127e86d3eb..8440def4ffa16a036d301e2a3767be335dccdb64 100644 (file)
@@ -1,5 +1,5 @@
 dnl Process this file with autoconf to produce a configure script.
-# Copyright (C) 2000-2012 Free Software Foundation, Inc.
+# Copyright (C) 2000-2012, 2016 Free Software Foundation, Inc.
 #
 # Author: Nikos Mavrogiannopoulos, Simon Josefsson
 #
@@ -730,9 +730,14 @@ if test "$opt_guile_bindings" = "yes"; then
 
    AC_PATH_PROG([guile_snarf], [guile-snarf])
    if test "x$guile_snarf" = "x"; then
-      AC_MSG_WARN([`guile-snarf' from Guile 1.8 not found.  Guile bindings not built.])
+      AC_MSG_WARN([`guile-snarf' from Guile not found.  Guile bindings not built.])
       opt_guile_bindings=no
    else
+      dnl Check for 'guild', which can be used to compile Scheme code
+      dnl on Guile 2.x.
+      AC_PATH_PROG([GUILD], [guild])
+      AC_SUBST([GUILD])
+
       GUILE_PROGS
       GUILE_FLAGS
 
@@ -789,6 +794,10 @@ if test "$opt_guile_bindings" = "yes"; then
        AC_MSG_RESULT([$guile_effective_version])
        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.])
@@ -796,7 +805,9 @@ if test "$opt_guile_bindings" = "yes"; then
       fi
    fi
 fi
-AM_CONDITIONAL(HAVE_GUILE, test "$opt_guile_bindings" = "yes")
+
+AM_CONDITIONAL([HAVE_GUILE], [test "$opt_guile_bindings" = "yes"])
+AM_CONDITIONAL([HAVE_GUILD], [test "x$GUILD" != "x"])
 
 LIBGNUTLS_LIBS="-L${libdir} -lgnutls $LIBS"
 LIBGNUTLS_CFLAGS="-I${includedir}"
@@ -886,9 +897,7 @@ AC_CONFIG_FILES([
   gl/Makefile
   gl/tests/Makefile
   guile/Makefile
-  guile/modules/Makefile
   guile/src/Makefile
-  guile/tests/Makefile
   lib/Makefile
   lib/accelerated/Makefile
   lib/accelerated/x86/Makefile
index ed9b8ba1d733fda2ac3cf1e4ae416038c8281044..98ac7a1d6524bef12fd502d6d23caee195d44d56 100644 (file)
 #  License along with GnuTLS; if not, write to the Free Software
 #  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 
-SUBDIRS = modules src tests
+# First of all, built the DSO.  We cannot compile the Scheme code until this
+# is done.
+SUBDIRS = src
+
 
 EXTRA_DIST = .dir-locals.el
+
+guilemoduledir = $(GUILE_SITE)
+guilemodulesubdir = $(GUILE_SITE)/gnutls
+
+nodist_guilemodule_DATA = modules/gnutls.scm
+dist_guilemodulesub_DATA = modules/gnutls/extra.scm
+
+documentation_modules =                                \
+  modules/system/documentation/README          \
+  modules/system/documentation/c-snarf.scm     \
+  modules/system/documentation/output.scm
+
+helper_modules =                               \
+  modules/gnutls/build/enums.scm               \
+  modules/gnutls/build/smobs.scm               \
+  modules/gnutls/build/utils.scm               \
+  modules/gnutls/build/tests.scm
+
+EXTRA_DIST += modules/gnutls.in $(helper_modules) $(documentation_modules)
+
+CLEANFILES = modules/gnutls.scm
+
+.in.scm:
+       cat "$^" | $(SED) -e's|[@]guileextensiondir[@]|$(guileextensiondir)|g' \
+         > "$@.tmp"
+       mv "$@.tmp" "$@"
+
+\f
+#
+# Scheme code compilation.
+#
+
+if HAVE_GUILD
+
+guileobjectsubdir = $(guileobjectdir)/gnutls
+nodist_guileobject_DATA = modules/gnutls.go
+nodist_guileobjectsub_DATA = modules/gnutls/extra.go
+
+GOBJECTS =                                     \
+  $(nodist_guileobject_DATA)                   \
+  $(nodist_guileobjectsub_DATA)
+
+CLEANFILES += $(GOBJECTS)
+
+AM_V_GUILEC = $(AM_V_GUILEC_$(V))
+AM_V_GUILEC_ = $(AM_V_GUILEC_$(AM_DEFAULT_VERBOSITY))
+AM_V_GUILEC_0 = @echo "  GUILEC  " $@;
+
+# Make sure 'gnutls.scm' is built first.
+# Unset 'GUILE_LOAD_COMPILED_PATH' so we can be sure that any .go file that we
+# load comes from the build directory.
+# XXX: Use the C locale for when Guile lacks
+# <http://git.sv.gnu.org/cgit/guile.git/commit/?h=stable-2.0&id=e2c6bf3866d1186c60bacfbd4fe5037087ee5e3f>.
+%.go: %.scm modules/gnutls.scm
+       $(AM_V_GUILEC)$(MKDIR_P) "`dirname "$@"`" ;                     \
+       $(AM_V_P) && out=1 || out=- ;                                   \
+       unset GUILE_LOAD_COMPILED_PATH ; LC_ALL=C                       \
+       GNUTLS_GUILE_EXTENSION_DIR="$(abs_top_builddir)/guile/src"      \
+       $(GUILD) compile --target="$(host)"                             \
+         -L "$(top_builddir)/guile/modules"                            \
+         -L "$(top_srcdir)/guile/modules"                              \
+         -Wformat -Wunbound-variable -Warity-mismatch                  \
+         -o "$@" "$<" >&$$out
+
+SUFFIXES = .go
+
+endif HAVE_GUILD
+
+\f
+#
+# Tests.
+#
+
+TESTS =                                                \
+  tests/anonymous-auth.scm                     \
+  tests/session-record-port.scm                        \
+  tests/pkcs-import-export.scm                 \
+  tests/errors.scm                             \
+  tests/x509-certificates.scm                  \
+  tests/x509-auth.scm                          \
+  tests/priorities.scm
+
+if ENABLE_OPENPGP
+TESTS +=                                       \
+  tests/openpgp-keys.scm                       \
+  tests/openpgp-keyring.scm                    \
+  tests/openpgp-auth.scm
+endif
+
+if ENABLE_SRP
+TESTS +=                                       \
+  tests/srp-base64.scm
+endif
+
+TESTS_ENVIRONMENT =                            \
+  GUILE_AUTO_COMPILE=0                         \
+  GUILE_WARN_DEPRECATED=detailed
+
+LOG_COMPILER = $(top_builddir)/guile/pre-inst-guile -L $(srcdir)/tests
+
+
+EXTRA_DIST +=                                  \
+  $(TESTS)                                     \
+  tests/openpgp-pub.asc                                \
+  tests/openpgp-sec.asc                                \
+  tests/openpgp-elg-pub.asc                    \
+  tests/openpgp-elg-sec.asc                    \
+  tests/openpgp-keyring.gpg                    \
+  tests/openpgp-keyring.asc                    \
+  tests/rsa-parameters.pem                     \
+  tests/dh-parameters.pem                      \
+  tests/x509-certificate.pem                   \
+  tests/x509-key.pem
diff --git a/guile/modules/Makefile.am b/guile/modules/Makefile.am
deleted file mode 100644 (file)
index 71e3d68..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#  GnuTLS --- Guile bindings for GnuTLS.
-#  Copyright (C) 2007-2012, 2014 Free Software Foundation, Inc.
-#
-#  GnuTLS is free software; you can redistribute it and/or
-#  modify it under the terms of the GNU Lesser General Public
-#  License as published by the Free Software Foundation; either
-#  version 2.1 of the License, or (at your option) any later version.
-#
-#  GnuTLS is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-#  Lesser General Public License for more details.
-#
-#  You should have received a copy of the GNU Lesser General Public
-#  License along with GnuTLS; if not, write to the Free Software
-#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-
-guilemoduledir = $(GUILE_SITE)
-
-nobase_nodist_guilemodule_DATA = gnutls.scm
-nobase_dist_guilemodule_DATA   = gnutls/extra.scm
-
-documentation_modules = system/documentation/README            \
-                       system/documentation/c-snarf.scm        \
-                        system/documentation/output.scm
-
-EXTRA_DIST = gnutls/build/enums.scm gnutls/build/smobs.scm     \
-            gnutls/build/utils.scm                             \
-            gnutls/build/tests.scm                             \
-            gnutls.in                                          \
-             $(documentation_modules)
-
-CLEANFILES = gnutls.scm
-
-.in.scm:
-       cat "$^" | $(SED) -e's|[@]guileextensiondir[@]|$(guileextensiondir)|g' \
-         > "$@.tmp"
-       mv "$@.tmp" "$@"
diff --git a/guile/tests/Makefile.am b/guile/tests/Makefile.am
deleted file mode 100644 (file)
index 6b1cfd8..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#  GnuTLS --- Guile bindings for GnuTLS.
-#  Copyright (C) 2007-2013 Free Software Foundation, Inc.
-#
-#  GnuTLS is free software; you can redistribute it and/or
-#  modify it under the terms of the GNU Lesser General Public
-#  License as published by the Free Software Foundation; either
-#  version 2.1 of the License, or (at your option) any later version.
-#
-#  GnuTLS is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-#  Lesser General Public License for more details.
-#
-#  You should have received a copy of the GNU Lesser General Public
-#  License along with GnuTLS; if not, write to the Free Software
-#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-
-TESTS = anonymous-auth.scm session-record-port.scm     \
-        pkcs-import-export.scm                         \
-        errors.scm                                     \
-       x509-certificates.scm x509-auth.scm             \
-       priorities.scm
-
-if ENABLE_OPENPGP
-TESTS += openpgp-keys.scm openpgp-keyring.scm openpgp-auth.scm
-endif
-
-if ENABLE_SRP
-TESTS += srp-base64.scm
-endif
-
-TESTS_ENVIRONMENT =                                    \
-  GUILE_AUTO_COMPILE=0                                 \
-  GUILE_WARN_DEPRECATED=detailed
-
-LOG_COMPILER = $(top_builddir)/guile/pre-inst-guile -L $(srcdir)
-
-
-EXTRA_DIST = $(TESTS) openpgp-pub.asc openpgp-sec.asc  \
-               openpgp-elg-pub.asc openpgp-elg-sec.asc \
-             openpgp-keyring.gpg openpgp-keyring.asc   \
-            rsa-parameters.pem dh-parameters.pem       \
-            x509-certificate.pem x509-key.pem