summaryrefslogtreecommitdiffstats
path: root/configure.ac
diff options
context:
space:
mode:
authorKarel Zak2011-10-01 15:33:53 +0200
committerKarel Zak2011-10-10 14:42:40 +0200
commit640fc1b8194e9d7f10302f19cba8d7671c8b1e9d (patch)
tree1a69507d841b94fd77a81c9912444ddf629bbaa9 /configure.ac
parentbuild-sys: rename BUILD_BUG_ON_ZERO definition (diff)
downloadkernel-qcow2-util-linux-640fc1b8194e9d7f10302f19cba8d7671c8b1e9d.tar.gz
kernel-qcow2-util-linux-640fc1b8194e9d7f10302f19cba8d7671c8b1e9d.tar.xz
kernel-qcow2-util-linux-640fc1b8194e9d7f10302f19cba8d7671c8b1e9d.zip
build-sys: check scanf %ms modifier
Without the check libmount builds on systems that has older than 2.7 glibc are silently unsuccessful. The missing %ms modifier will, at least, result on such system missing output of findmnt and lsblk commands. If either %ms or %as modifiers are present the libmount build is disabled. Based on patch from: Sami Kerola <kerolasa@iki.fi> Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac38
1 files changed, 38 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index d12a4a037..88aced94f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -477,6 +477,44 @@ elif test "x$enable_libmount" = xno; then
build_libmount=no
fi
+AC_DEFUN([UTIL_SCANF_TYPE_MODIFIER], [dnl
+# include <stdio.h>
+int main()
+{
+ int i;
+ char *s;
+ i = sscanf("x", $1, &s);
+ if (i == 1)
+ return 0;
+ return 1;
+}])
+AC_MSG_CHECKING([needed scanf type modifiers])
+AC_CACHE_VAL([scanf_cv_type_modifier],
+ AC_RUN_IFELSE([AC_LANG_SOURCE([UTIL_SCANF_TYPE_MODIFIER(["%ms"])])],
+ [scanf_cv_type_modifier=ms],
+ AC_RUN_IFELSE([AC_LANG_SOURCE([UTIL_SCANF_TYPE_MODIFIER(["%as"])])],
+ [scanf_cv_type_modifier=as],
+ [scanf_cv_type_modifier=no]
+ )
+ )
+)
+
+case "$scanf_cv_type_modifier" in
+ms)
+ AC_MSG_RESULT([(%ms) yes])
+ AC_DEFINE([HAVE_SCANF_MS_MODIFIER], [1], [scanf %ms modifier]) ;;
+as)
+ AC_MSG_RESULT([(%as) yes])
+ AC_DEFINE([HAVE_SCANF_AS_MODIFIER], [1], [scanf %as modifier]) ;;
+*)
+ AC_MSG_RESULT([no])
+ if "x$build_libmount" = xyes; then
+ AC_MSG_WARN([%as or %ms for sscanf() not found; do not build libmount])
+ build_libmount=no
+ fi
+esac
+
+
case "$enable_libblkid:$build_libmount" in
no:yes)
AC_MSG_ERROR([cannot enable libmount when libblkid is disabled]) ;;