[PATCH] configure: add a fallback check for zlib

2014-05-10 Thread Xīcò
Since zlib is part of the base system, FreeBSD chose not to register it
in pkg-config through zlib.pc. As a fallback test, configure will build
and run a zlib version check and make sure the header and library
versions are compatible.
---
 compat/have_zlib.c |  6 ++
 configure  | 21 -
 2 files changed, 22 insertions(+), 5 deletions(-)
 create mode 100644 compat/have_zlib.c

diff --git a/compat/have_zlib.c b/compat/have_zlib.c
new file mode 100644
index 000..abaeedd
--- /dev/null
+++ b/compat/have_zlib.c
@@ -0,0 +1,6 @@
+#include 
+
+int main(void)
+{
+return (ZLIB_VERNUM) < (MINVER) || zlibVersion()[0] != (ZLIB_VERSION)[0];
+}
diff --git a/configure b/configure
index 9bde2eb..7a11ded 100755
--- a/configure
+++ b/configure
@@ -340,16 +340,27 @@ else
 errors=$((errors + 1))
 fi
 
-printf "Checking for zlib (>= 1.2.5.2)... "
+zv1=1 zv2=2 zv3=5 zv4=1
+printf "Checking for zlib (>= $zv1.$zv2.$zv3.$zv4)... "
 have_zlib=0
-if pkg-config --atleast-version=1.2.5.2 zlib; then
+if pkg-config --atleast-version=$zv1.$zv2.$zv3.$zv4 zlib; then
 printf "Yes.\n"
 have_zlib=1
 zlib_cflags=$(pkg-config --cflags zlib)
 zlib_ldflags=$(pkg-config --libs zlib)
 else
-printf "No.\n"
-errors=$((errors + 1))
+# Try finding zlib directly (e.g. on FreeBSD)
+zlib_cflags=
+zlib_ldflags=-lz
+if ${CC} ${zlib_cflags} -DMINVER=0x$zv1$zv2$zv3$zv4 -o compat/have_zlib 
"$srcdir"/compat/have_zlib.c ${zlib_ldflags} > /dev/null 2>&1 && 
./compat/have_zlib
+then
+printf "Yes.\n"
+have_zlib=1
+else
+printf "No.\n"
+errors=$((errors + 1))
+fi
+rm -f compat/have_zlib
 fi
 
 printf "Checking for talloc development files... "
@@ -509,7 +520,7 @@ EOF
echo "  http://xapian.org/";
 fi
 if [ $have_zlib -eq 0 ]; then
-   echo "  zlib library (>= version 1.2.5.2, including development files 
such as headers)"
+   echo "  zlib library (>= version $zv1.$zv2.$zv3.$zv4, including 
development files such as headers)"
echo "  http://zlib.net/";
echo
 fi
-- 
1.9.2

___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


[PATCH] configure: add a fallback check for zlib

2014-05-10 Thread Xīcò
Since zlib is part of the base system, FreeBSD chose not to register it
in pkg-config through zlib.pc. As a fallback test, configure will build
and run a zlib version check and make sure the header and library
versions are compatible.
---
 compat/have_zlib.c |  6 ++
 configure  | 21 -
 2 files changed, 22 insertions(+), 5 deletions(-)
 create mode 100644 compat/have_zlib.c

diff --git a/compat/have_zlib.c b/compat/have_zlib.c
new file mode 100644
index 000..abaeedd
--- /dev/null
+++ b/compat/have_zlib.c
@@ -0,0 +1,6 @@
+#include 
+
+int main(void)
+{
+return (ZLIB_VERNUM) < (MINVER) || zlibVersion()[0] != (ZLIB_VERSION)[0];
+}
diff --git a/configure b/configure
index 9bde2eb..7a11ded 100755
--- a/configure
+++ b/configure
@@ -340,16 +340,27 @@ else
 errors=$((errors + 1))
 fi

-printf "Checking for zlib (>= 1.2.5.2)... "
+zv1=1 zv2=2 zv3=5 zv4=1
+printf "Checking for zlib (>= $zv1.$zv2.$zv3.$zv4)... "
 have_zlib=0
-if pkg-config --atleast-version=1.2.5.2 zlib; then
+if pkg-config --atleast-version=$zv1.$zv2.$zv3.$zv4 zlib; then
 printf "Yes.\n"
 have_zlib=1
 zlib_cflags=$(pkg-config --cflags zlib)
 zlib_ldflags=$(pkg-config --libs zlib)
 else
-printf "No.\n"
-errors=$((errors + 1))
+# Try finding zlib directly (e.g. on FreeBSD)
+zlib_cflags=
+zlib_ldflags=-lz
+if ${CC} ${zlib_cflags} -DMINVER=0x$zv1$zv2$zv3$zv4 -o compat/have_zlib 
"$srcdir"/compat/have_zlib.c ${zlib_ldflags} > /dev/null 2>&1 && 
./compat/have_zlib
+then
+printf "Yes.\n"
+have_zlib=1
+else
+printf "No.\n"
+errors=$((errors + 1))
+fi
+rm -f compat/have_zlib
 fi

 printf "Checking for talloc development files... "
@@ -509,7 +520,7 @@ EOF
echo "  http://xapian.org/";
 fi
 if [ $have_zlib -eq 0 ]; then
-   echo "  zlib library (>= version 1.2.5.2, including development files 
such as headers)"
+   echo "  zlib library (>= version $zv1.$zv2.$zv3.$zv4, including 
development files such as headers)"
echo "  http://zlib.net/";
echo
 fi
-- 
1.9.2