| From 65ce9b4817544734770e410c5c2779065152f991 Mon Sep 17 00:00:00 2001 | 
| From: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be> | 
| Date: Thu, 4 Jan 2018 09:47:45 +0100 | 
| Subject: [PATCH] autoconf: use PKG_CHECK_MODULES for libmount and libblkid | 
|   | 
| The dependencies of libmount to libblkid and libblkid to libuuid | 
| were not handled correctly, and only work for the shared object scenario. | 
| This commit switches the autoconfiguration to use PKG_CHECK_MODULES | 
| which handles the static vs. dynamic case. | 
| This commit has been compile-tested using buildroot on different compilers, | 
| including static & dynamic ones | 
|   | 
| Signed-off-by: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be> | 
| --- | 
|  configure.ac                 | 13 +++---------- | 
|  sbin/mkfs/Makefile.am        |  4 ++-- | 
|  sbin/mkfs/mkfs.c             |  6 +++--- | 
|  sbin/mount/Makefile.am       |  4 ++-- | 
|  sbin/mount/mount_libmount.c  |  4 +--- | 
|  sbin/mount/umount_libmount.c |  4 +--- | 
|  6 files changed, 12 insertions(+), 23 deletions(-) | 
|   | 
| diff --git a/configure.ac b/configure.ac | 
| index 6fa8c41..3e31e55 100644 | 
| --- a/configure.ac | 
| +++ b/configure.ac | 
| @@ -104,13 +104,10 @@ AC_CHECK_HEADERS([ctype.h err.h fcntl.h grp.h libintl.h limits.h \ | 
|   | 
|  # Check for conditional libraries and headers. | 
|  if test "${with_libmount}" = "yes"; then | 
| -   AC_CHECK_LIB(mount, mnt_context_do_mount, [LIB_MOUNT="-lmount"], | 
| -       AC_MSG_ERROR([Mount library is enabled but libmount not found])) | 
| -   AC_CHECK_HEADERS([libmount/libmount.h]) | 
| +   PKG_CHECK_MODULES([MOUNT], [mount]) | 
|     with_selinux=no | 
|  fi | 
|  AM_CONDITIONAL(CONFIG_LIBMOUNT, [test "$with_libmount" = "yes"]) | 
| -AC_SUBST(LIB_MOUNT) | 
|   | 
|  if test "${with_selinux}" = "yes"; then | 
|     AC_CHECK_LIB(selinux, getprevcon, | 
| @@ -125,15 +122,11 @@ fi | 
|  AC_SUBST([LIB_SELINUX]) | 
|   | 
|  if test "${with_blkid}" = "yes"; then | 
| -   AC_CHECK_LIB(blkid, blkid_new_probe_from_filename, | 
| +   PKG_CHECK_MODULES([BLKID], [blkid], | 
|             [AC_DEFINE(HAVE_LIBBLKID, 1, | 
|              [Define to 1 if you have the 'blkid' library (-lblkid).]) | 
| -         LIB_BLKID="-lblkid" | 
| -        ], | 
| -        AC_MSG_ERROR([BLKID library not found])) | 
| -   AC_CHECK_HEADERS([blkid/blkid.h]) | 
| +        ]) | 
|  fi | 
| -AC_SUBST(LIB_BLKID) | 
|   | 
|  # Checks for typedefs, structures, and compiler characteristics. | 
|  AC_C_CONST | 
| diff --git a/sbin/mkfs/Makefile.am b/sbin/mkfs/Makefile.am | 
| index 28f5128..408c976 100644 | 
| --- a/sbin/mkfs/Makefile.am | 
| +++ b/sbin/mkfs/Makefile.am | 
| @@ -1,8 +1,8 @@ | 
|  ## Makefile.am | 
|   | 
| -AM_CFLAGS = -Wall | 
| +AM_CFLAGS = -Wall $(BLKID_CFLAGS) | 
|  AM_CPPFLAGS = -I$(top_srcdir)/include | 
| -LDADD = -luuid $(LIB_BLKID) $(top_builddir)/lib/libnilfsfeature.la \ | 
| +LDADD = -luuid $(BLKID_LIBS) $(top_builddir)/lib/libnilfsfeature.la \ | 
|      $(top_builddir)/lib/libmountchk.la \ | 
|      $(top_builddir)/lib/libcrc32.la | 
|   | 
| diff --git a/sbin/mkfs/mkfs.c b/sbin/mkfs/mkfs.c | 
| index d7f161e..0c45d6a 100644 | 
| --- a/sbin/mkfs/mkfs.c | 
| +++ b/sbin/mkfs/mkfs.c | 
| @@ -66,9 +66,9 @@ | 
|   | 
|  #include <errno.h> | 
|   | 
| -#if HAVE_BLKID_BLKID_H | 
| -#include <blkid/blkid.h> | 
| -#endif    /* HAVE_BLKID_BLKID_H */ | 
| +#if HAVE_LIBBLKID | 
| +#include <blkid.h> | 
| +#endif    /* HAVE_LIBBLKID */ | 
|   | 
|  #include "nilfs.h" | 
|  #include "util.h" | 
| diff --git a/sbin/mount/Makefile.am b/sbin/mount/Makefile.am | 
| index f5d3c27..9554aa5 100644 | 
| --- a/sbin/mount/Makefile.am | 
| +++ b/sbin/mount/Makefile.am | 
| @@ -6,10 +6,10 @@ COMMONHEADERS = mount.nilfs2.h sundries.h xmalloc.h | 
|  LEGACYSOURCES = fstab.c mount_mntent.c mount_opts.c | 
|  LEGACYHEADERS = fstab.h mount_constants.h mount_mntent.h mount_opts.h | 
|   | 
| -AM_CFLAGS = -Wall | 
| +AM_CFLAGS = -Wall $(MOUNT_CFLAGS) | 
|  AM_CPPFLAGS = -I$(top_srcdir)/include | 
|  LDADD = $(top_builddir)/lib/librealpath.la \ | 
| -    $(top_builddir)/lib/libcleanerexec.la $(LIB_MOUNT) $(LIB_SELINUX) \ | 
| +    $(top_builddir)/lib/libcleanerexec.la $(MOUNT_LIBS) $(LIB_SELINUX) \ | 
|      $(LIB_POSIX_TIMER) | 
|   | 
|  root_sbin_PROGRAMS = mount.nilfs2 umount.nilfs2 | 
| diff --git a/sbin/mount/mount_libmount.c b/sbin/mount/mount_libmount.c | 
| index ef40e68..a7fec00 100644 | 
| --- a/sbin/mount/mount_libmount.c | 
| +++ b/sbin/mount/mount_libmount.c | 
| @@ -67,9 +67,7 @@ | 
|  #include <syslog.h> | 
|  #endif    /* HAVE_SYSLOG_H */ | 
|   | 
| -#if HAVE_LIBMOUNT_LIBMOUNT_H | 
| -#include <libmount/libmount.h> | 
| -#endif    /* HAVE_LIBMOUNT_H */ | 
| +#include <libmount.h> | 
|   | 
|  #include <stdarg.h> | 
|  #include <errno.h> | 
| diff --git a/sbin/mount/umount_libmount.c b/sbin/mount/umount_libmount.c | 
| index ae5a337..b678f54 100644 | 
| --- a/sbin/mount/umount_libmount.c | 
| +++ b/sbin/mount/umount_libmount.c | 
| @@ -59,9 +59,7 @@ | 
|  #include <syslog.h> | 
|  #endif    /* HAVE_SYSLOG_H */ | 
|   | 
| -#if HAVE_LIBMOUNT_LIBMOUNT_H | 
| -#include <libmount/libmount.h> | 
| -#endif    /* HAVE_LIBMOUNT_H */ | 
| +#include <libmount.h> | 
|   | 
|  #include <stdarg.h> | 
|  #include <errno.h> | 
| --  | 
| 1.8.5.rc3 |