Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

155 lines (149 sloc) 5.865 kb
dnl
dnl @synopsis ST_LIB_ARCHIVE([ENABLED-DEFAULT])
dnl
dnl This macro figures out what's necessary to link a program against an
dnl instance of the BSD libarchive package by Tim Kientzle.
dnl
dnl See http://people.freebsd.org/~kientzle/libarchive/ for more info.
dnl
dnl It exports and substitutes the variables LIBARCHIVE_LIBS, LIBARCHIVE_LDFLAGS,
dnl and LIBARCHIVE_CPPFLAGS to appropriate values for the identified instance of
dnl libarchive. The values are AC_SUBST'd, so a user could, for example, simply
dnl include @LIBARCHIVE_CPPFLAGS@ in the definition of AM_CPPFLAGS in a Makefile.am.
dnl
dnl ENABLED-DEFAULT is either "yes" or "no" and determines whether the default value
dnl is --with-libarchive or --without-libarchive. It is not possible to specify a
dnl default directory. More simply, any reasonable choice for a default should just
dnl go into the auto-detect list.
dnl
dnl The macro defines the symbol HAVE_LIBARCHIVE if the library is found. You
dnl should use autoheader to include a definition for this symbol in a config.h
dnl file. Sample usage in a C/C++ source is as follows:
dnl
dnl #ifdef HAVE_LIBARCHIVE
dnl #include <archive.h>
dnl #endif /* HAVE_LIBARCHIVE */
dnl
dnl @category InstalledPackages
dnl @author Andre Stechert <andre@splunk.com>
dnl @version 2006-04-20
dnl @license GPLWithACException
AC_DEFUN([ST_LIB_ARCHIVE],
[
#
# Handle input from the configurer and blend with the requirements from the maintainer.
# We go through the trouble of creating a second set of variables other than the with_foo
# variables in order to be sure that error/corner cases have been cleaned up.
#
# After this statement, three trusted variable are defined.
#
# st_lib_archive_ENABLED will be either "yes" or "no". its value determines whether
# or not we bother with the rest of the checks and whether or not we export a
# bunch of variables.
#
# st_lib_archive_LOCATION will be either "auto" or "defined". if it is "auto", then
# we try a bunch of standard locations. if it is "defined", then we just try the value
# provided in st_lib_archive_DIR.
#
# st_lib_archive_DIR will contain the string provided by the user, provided that it's
# actually a directory.
#
AC_MSG_CHECKING([if libarchive is wanted])
AC_ARG_WITH([libarchive],
AS_HELP_STRING([--with-libarchive=DIR], [libarchive installation directory]),
[if test "x$with_libarchive" = "xno" ; then
st_lib_archive_ENABLED=no
elif test "x$with_libarchive" = "xyes" ; then
st_lib_archive_ENABLED=yes
st_lib_archive_LOCATION=auto
else
st_lib_archive_ENABLED=yes
st_lib_archive_LOCATION=defined
if test -d "$with_libarchive" ; then
st_lib_archive_DIR="$with_libarchive"
else
AC_MSG_ERROR([$with_libarchive is not a directory])
fi
fi],
[if test "x$1" = "xno" ; then
st_lib_archive_ENABLED=no
elif test "x$1" = "xyes" ; then
st_lib_archive_ENABLED=yes
else
st_lib_archive_ENABLED=yes
fi])
if test "$st_lib_archive_ENABLED" = "yes" ; then
AC_MSG_RESULT([yes])
#
# After this statement, one trusted variable is defined.
#
# st_lib_archive_LIB will be either "lib" or "lib64", depending on whether the configurer
# specified 32, 64. The default is "lib".
#
AC_MSG_CHECKING([whether to use lib or lib64])
AC_ARG_WITH([libarchive-bits],
AS_HELP_STRING([--with-libarchive-bits=32/64], [if 64, look in /lib64 on hybrid systems]),
[if test "x$with_libarchive_bits" = "x32" ; then
st_lib_archive_LIB=lib
elif test "x$with_libarchive_bits" = "x64" ; then
st_lib_archive_LIB=lib64
else
AC_MSG_ERROR([the argument must be either 32 or 64])
fi],
[st_lib_archive_LIB=lib])
AC_MSG_RESULT($st_lib_archive_LIB)
#
# Save the environment before verifying libarchive availability
#
st_lib_archive_SAVECPPFLAGS="$CPPFLAGS"
st_lib_archive_SAVELDFLAGS="$LDFLAGS"
AC_LANG_SAVE
AC_LANG_C
if test "x$st_lib_archive_LOCATION" = "xdefined" ; then
CPPFLAGS="-I$st_lib_archive_DIR/include $st_lib_archive_SAVECPPFLAGS"
LDFLAGS="-L$st_lib_archive_DIR/$st_lib_archive_LIB $st_lib_archive_SAVELDFLAGS"
AC_CHECK_LIB(archive, archive_read_new, [st_lib_archive_found_lib=yes], [st_lib_archive_found_lib=no])
AC_CHECK_HEADER(archive.h, [st_lib_archive_found_hdr=yes], [st_lib_archive_found_hdr=no])
if test "x$st_lib_archive_found_lib" = "xyes" && test "x$st_lib_archive_found_hdr" = "xyes"; then
LIBARCHIVE_CPPFLAGS="-I$dir/include"
LIBARCHIVE_LDFLAGS="-L$dir/$st_lib_archive_LIB"
else
AC_MSG_ERROR([could not find libarchive in the requested location])
fi
else
#
# These are the common install directories for Linux, FreeBSD, Solaris, and Mac.
#
for dir in /usr /usr/local /usr/sfw /opt/csw /opt/local /sw
do
if test -d "$dir" ; then
CPPFLAGS="-I$dir/include $st_lib_archive_SAVECPPFLAGS"
LDFLAGS="-L$dir/$st_lib_archive_LIB $st_lib_archive_SAVELDFLAGS"
AC_CHECK_LIB(archive, archive_read_new, [st_lib_archive_found_lib=yes], [st_lib_archive_found_lib=no])
AC_CHECK_HEADER(archive.h, [st_lib_archive_found_hdr=yes], [st_lib_archive_found_hdr=no])
if test "x$st_lib_archive_found_lib" = "xyes" && test "x$st_lib_archive_found_hdr" = "xyes"; then
LIBARCHIVE_CPPFLAGS="-I$dir/include"
LIBARCHIVE_LDFLAGS="-L$dir/$st_lib_archive_LIB"
break
fi
fi
done
fi
if test "x$st_lib_archive_found_hdr" = "xyes" && test "x$st_lib_archive_found_lib" = "xyes" ; then
LIBARCHIVE_LIBS="-larchive"
AC_DEFINE([HAVE_LIBARCHIVE], [1], [Defined to 1 if libarchive is available for use.])
AC_SUBST(LIBARCHIVE_LIBS)
AC_SUBST(LIBARCHIVE_CPPFLAGS)
AC_SUBST(LIBARCHIVE_LDFLAGS)
fi
#
# Restore the environment now that we're done.
#
AC_LANG_RESTORE
CPPFLAGS="$st_lib_archive_SAVECPPFLAGS"
LDFLAGS="$st_lib_archive_SAVELDFLAGS"
else
AC_MSG_RESULT([no])
fi
AM_CONDITIONAL(LIBARCHIVE, test "x$st_lib_archive_found_lib" = "xyes" && test "x$st_lib_archive_found_hdr" = "xyes")
])
Jump to Line
Something went wrong with that request. Please try again.