Macro: check_zlib

Back to the Main Page. | Download the M4 Source.

# check_zlib

## Synopsis

`CHECK_ZLIB()`

## Version

1.1.1.1 (2001/07/26) Installed_Packages @ ac-archive-0.5.32

## Author

Loic Dachary <loic@senga.org>

## Description

This macro searches for an installed zlib library. If nothing was specified when calling configure, it searches first in /usr/local and then in /usr. If the --with-zlib=DIR is specified, it will try to find it in DIR/include/zlib.h and DIR/lib/libz.a. If --without-zlib is specified, the library is not searched at all.

If either the header file (zlib.h) or the library (libz) is not found, the configuration exits on error, asking for a valid zlib installation directory or --without-zlib.

The macro defines the symbol HAVE_LIBZ if the library is found. You should use autoheader to include a definition for this symbol in a config.h file. Sample usage in a C/C++ source is as follows:

`#ifdef HAVE_LIBZ`
`#include <zlib.h>`
`#endif /* HAVE_LIBZ */`

## M4 Source Code

    AC_DEFUN([CHECK_ZLIB],
    #
    # Handle user hints
    #
    [AC_MSG_CHECKING(if zlib is wanted)
    AC_ARG_WITH(zlib,
    [  --with-zlib=DIR root directory path of zlib installation [defaults to
                        /usr/local or /usr if not found in /usr/local]
      --without-zlib to disable zlib usage completely],
    [if test "$withval" != no ; then
      AC_MSG_RESULT(yes)
      ZLIB_HOME="$withval"
    else
      AC_MSG_RESULT(no)
    fi], [
    AC_MSG_RESULT(yes)
    ZLIB_HOME=/usr/local
    if test ! -f "${ZLIB_HOME}/include/zlib.h"
    then
            ZLIB_HOME=/usr
    fi
    ])

    #
    # Locate zlib, if wanted
    #
    if test -n "${ZLIB_HOME}"
    then
            ZLIB_OLD_LDFLAGS=$LDFLAGS
            ZLIB_OLD_CPPFLAGS=$LDFLAGS
            LDFLAGS="$LDFLAGS -L${ZLIB_HOME}/lib"
            CPPFLAGS="$CPPFLAGS -I${ZLIB_HOME}/include"
            AC_LANG_SAVE
            AC_LANG_C
            AC_CHECK_LIB(z, inflateEnd, [zlib_cv_libz=yes], [zlib_cv_libz=no])
            AC_CHECK_HEADER(zlib.h, [zlib_cv_zlib_h=yes], [zlib_cvs_zlib_h=no])
            AC_LANG_RESTORE
            if test "$zlib_cv_libz" = "yes" -a "$zlib_cv_zlib_h" = "yes"
            then
                    #
                    # If both library and header were found, use them
                    #
                    AC_CHECK_LIB(z, inflateEnd)
                    AC_MSG_CHECKING(zlib in ${ZLIB_HOME})
                    AC_MSG_RESULT(ok)
            else
                    #
                    # If either header or library was not found, revert and bomb
                    #
                    AC_MSG_CHECKING(zlib in ${ZLIB_HOME})
                    LDFLAGS="$ZLIB_OLD_LDFLAGS"
                    CPPFLAGS="$ZLIB_OLD_CPPFLAGS"
                    AC_MSG_RESULT(failed)
                    AC_MSG_ERROR(either specify a valid zlib installation with --with-zlib=DIR or disable zlib usage with --without-zlib)
            fi
    fi

    ])