diff options
author | Karel Zak | 2011-10-01 15:33:53 +0200 |
---|---|---|
committer | Karel Zak | 2011-10-10 14:42:40 +0200 |
commit | 640fc1b8194e9d7f10302f19cba8d7671c8b1e9d (patch) | |
tree | 1a69507d841b94fd77a81c9912444ddf629bbaa9 /configure.ac | |
parent | build-sys: rename BUILD_BUG_ON_ZERO definition (diff) | |
download | kernel-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.ac | 38 |
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]) ;; |