gnu: Add sipcalc.
[jackhill/guix/guix.git] / m4 / guix.m4
index 2d3dfd2..721285b 100644 (file)
@@ -1,6 +1,7 @@
 dnl GNU Guix --- Functional package management for GNU
-dnl Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+dnl Copyright © 2012, 2013, 2014, 2015, 2016, 2018 Ludovic Courtès <ludo@gnu.org>
 dnl Copyright © 2014 Mark H Weaver <mhw@netris.org>
+dnl Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 dnl
 dnl This file is part of GNU Guix.
 dnl
@@ -74,6 +75,9 @@ AC_DEFUN([GUIX_SYSTEM_TYPE], [
        linux-gnu*)
          # For backward compatibility, strip the `-gnu' part.
          guix_system="$machine_name-linux";;
+       gnu*)
+          # Always use i586 for GNU/Hurd.
+          guix_system="i586-gnu";;
        *)
          # Strip the version number from names such as `gnu0.3',
          # `darwin10.2.0', etc.
@@ -102,7 +106,7 @@ courageous and port the GNU System distribution to it (see
   # Currently only Linux-based systems are supported, and only on some
   # platforms.
   case "$guix_system" in
-    x86_64-linux|i686-linux|armhf-linux|mips64el-linux)
+    x86_64-linux|i686-linux|armhf-linux|aarch64-linux|mips64el-linux)
       ;;
     *)
       if test "x$guix_courageous" = "xyes"; then
@@ -132,25 +136,6 @@ AC_DEFUN([GUIX_ASSERT_GUILE_FEATURES], [
   done
 ])
 
-dnl GUIX_CHECK_SRFI_37
-dnl
-dnl Check whether SRFI-37 suffers from <http://bugs.gnu.org/13176>.
-dnl This bug was fixed in Guile 2.0.9.
-AC_DEFUN([GUIX_CHECK_SRFI_37], [
-  AC_CACHE_CHECK([whether (srfi srfi-37) is affected by http://bugs.gnu.org/13176],
-    [ac_cv_guix_srfi_37_broken],
-    [if "$GUILE" -c "(use-modules (srfi srfi-37))                      \
-       (sigaction SIGALRM (lambda _ (primitive-exit 1)))               \
-       (alarm 1)                                                       \
-       (define opts (list (option '(#\I) #f #t (lambda _ #t))))                \
-       (args-fold '(\"-I\") opts (lambda _ (error)) (lambda _ #f) '())"
-     then
-       ac_cv_guix_srfi_37_broken=no
-     else
-       ac_cv_guix_srfi_37_broken=yes
-     fi])
-])
-
 dnl GUIX_CHECK_UNBUFFERED_CBIP
 dnl
 dnl Check whether 'setbvuf' works on custom binary input ports (CBIPs), as is
@@ -168,6 +153,44 @@ AC_DEFUN([GUIX_CHECK_UNBUFFERED_CBIP], [
      fi])
 ])
 
+dnl GUIX_ASSERT_SYNTAX_OBJECT_EQUAL
+dnl
+dnl Guile 2.2.1 was a brown-paper-bag release where 'equal?' wouldn't work
+dnl for syntax objects, which broke gexps.  Unfortunately Fedora 25 provides it.
+dnl Reject it.
+AC_DEFUN([GUIX_ASSERT_SYNTAX_OBJECT_EQUAL], [
+  AC_CACHE_CHECK([whether 'equal?' works for syntax objects],
+    [ac_cv_guix_syntax_object_equal],
+    [if "$GUILE" -c '(exit (equal? (syntax x) (syntax x)))'
+     then
+       ac_cv_guix_syntax_object_equal=yes
+     else
+       ac_cv_guix_syntax_object_equal=no
+     fi])
+  if test "x$ac_cv_guix_syntax_object_equal" != xyes; then
+    # This bug was present in Guile 2.2.1 only.
+    AC_MSG_ERROR(['equal?' does not work for syntax object; upgrade to Guile 2.2.2 or later.])
+  fi
+])
+
+dnl GUIX_CHECK_GUILE_SSH
+dnl
+dnl Check whether a recent-enough Guile-SSH is available.
+AC_DEFUN([GUIX_CHECK_GUILE_SSH], [
+  dnl Check whether 'channel-send-eof' (introduced in 0.10.2) is present.
+  AC_CACHE_CHECK([whether Guile-SSH is available and recent enough],
+    [guix_cv_have_recent_guile_ssh],
+    [GUILE_CHECK([retval],
+      [(and (@ (ssh channel) channel-send-eof)
+            (@ (ssh popen) open-remote-pipe)
+           (@ (ssh dist node) node-eval))])
+     if test "$retval" = 0; then
+       guix_cv_have_recent_guile_ssh="yes"
+     else
+       guix_cv_have_recent_guile_ssh="no"
+     fi])
+])
+
 dnl GUIX_TEST_ROOT_DIRECTORY
 AC_DEFUN([GUIX_TEST_ROOT_DIRECTORY], [
   AC_CACHE_CHECK([for unit test root directory],
@@ -280,19 +303,6 @@ AC_DEFUN([GUIX_ASSERT_CXX11], [
   fi
 ])
 
-dnl GUIX_CHECK_LIBC_MOUNT
-dnl
-dnl Check whether libc provides 'mount'.  On GNU/Hurd it doesn't (yet).
-AC_DEFUN([GUIX_CHECK_LIBC_MOUNT], [
-  AC_CACHE_CHECK([whether libc provides 'mount'], [guix_cv_libc_has_mount],
-    [GUILE_CHECK([retval], [(dynamic-func \"mount\" (dynamic-link))])
-     if test "$retval" = 0; then
-       guix_cv_libc_has_mount="yes"
-     else
-       guix_cv_libc_has_mount="no"
-     fi])
-])
-
 dnl GUIX_LIBGCRYPT_LIBDIR VAR
 dnl
 dnl Attempt to determine libgcrypt's LIBDIR; store the result in VAR.
@@ -308,6 +318,17 @@ AC_DEFUN([GUIX_LIBGCRYPT_LIBDIR], [
   $1="$guix_cv_libgcrypt_libdir"
 ])
 
+dnl GUIX_LIBZ_LIBDIR VAR
+dnl
+dnl Attempt to determine libz's LIBDIR; store the result in VAR.
+AC_DEFUN([GUIX_LIBZ_LIBDIR], [
+  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+  AC_CACHE_CHECK([zlib's library directory],
+    [guix_cv_libz_libdir],
+    [guix_cv_libz_libdir="`$PKG_CONFIG zlib --variable=libdir 2> /dev/null`"])
+  $1="$guix_cv_libz_libdir"
+])
+
 dnl GUIX_CURRENT_LOCALSTATEDIR
 dnl
 dnl Determine the localstatedir of an existing Guix installation and set