build: use pkgconfig to detect zlib
build: explicitly call PKG_PROG_PKG_CONFIG
Per the manual page, PKG_PROG_PKG_CONFIG needs to be invoked
explicitly if PKG_CHECK_MODULES might not happen (it is indeed stowed
in an AS_IF in kmod). Without this, funny failures can occur.
(As it did.)
diff --git a/Makefile.am b/Makefile.am
index 9523d71..109638c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -8,7 +8,8 @@
-I$(top_srcdir)/libkmod \
-DROOTPREFIX=\""$(rootprefix)"\" \
-DSYSCONFDIR=\""$(sysconfdir)"\" \
- -DLIBEXECDIR=\""$(libexecdir)"\"
+ -DLIBEXECDIR=\""$(libexecdir)"\" \
+ ${zlib_CFLAGS}
AM_CFLAGS = \
-fvisibility=hidden \
@@ -26,7 +27,8 @@
-e 's,@exec_prefix\@,$(exec_prefix),g' \
-e 's,@libdir\@,$(libdir),g' \
-e 's,@includedir\@,$(includedir),g' \
- -e 's,@required_private_libs\@,$(required_private_libs),g' \
+ -e 's,@zlib_CFLAGS\@,${zlib_CFLAGS},g' \
+ -e 's,@zlib_LIBS\@,${zlib_LIBS},g' \
< $< > $@ || rm $@
%.pc: %.pc.in Makefile
@@ -61,7 +63,7 @@
-version-info $(LIBKMOD_CURRENT):$(LIBKMOD_REVISION):$(LIBKMOD_AGE) \
-Wl,--version-script=$(top_srcdir)/libkmod/libkmod.sym
libkmod_libkmod_la_DEPENDENCIES = ${top_srcdir}/libkmod/libkmod.sym
-libkmod_libkmod_la_LIBADD = @zlib_libs@
+libkmod_libkmod_la_LIBADD = ${zlib_LIBS}
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libkmod/libkmod.pc
diff --git a/configure.ac b/configure.ac
index d17d611..21a63b7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -27,8 +27,7 @@
AC_PROG_SED
AC_PROG_MKDIR_P
-
-required_private_libs=""
+PKG_PROG_PKG_CONFIG
AC_ARG_WITH([rootprefix],
AS_HELP_STRING([--with-rootprefix=DIR], [rootfs directory prefix for config files and kernel modules]),
@@ -56,17 +55,10 @@
AS_HELP_STRING([--enable-zlib], [handle gzipped modules @<:@default=disabled@:>@]),
[], enable_zlib=no)
AS_IF([test "x$enable_zlib" != "xno"], [
- AC_CHECK_LIB([z], [gzopen], [
- zlib_libs="-lz"
- required_private_libs="${required_private_libs} ${zlib_libs}"
- AC_DEFINE(ENABLE_ZLIB, [1], [Enable zlib for modules.])
- AC_SUBST(zlib_libs)
- ],
- [AC_MSG_ERROR([zlib is not present])
- ])
+ PKG_CHECK_MODULES([zlib], [zlib])
+ AC_DEFINE([ENABLE_ZLIB], [1], [Enable zlib for modules.])
], [
AC_MSG_NOTICE([zlib support not requested])
- zlib_libs=""
])
AC_ARG_ENABLE([debug],
@@ -123,8 +115,6 @@
-Wl,--gc-sections])
-AC_SUBST(required_private_libs)
-
AC_CONFIG_HEADERS(config.h)
AC_CONFIG_FILES([
Makefile
diff --git a/libkmod/libkmod.pc.in b/libkmod/libkmod.pc.in
index b28b7c5..202ebe9 100644
--- a/libkmod/libkmod.pc.in
+++ b/libkmod/libkmod.pc.in
@@ -7,5 +7,5 @@
Description: Library to deal with kernel modules
Version: @VERSION@
Libs: -L${libdir} -lkmod
-Libs.private: @required_private_libs@
-Cflags: -I${includedir}
+Libs.private: @zlib_LIBS@
+Cflags: -I${includedir} @zlib_CFLAGS@