libarchive_autodetect-st_lib_archive.m4 [plain text]
AC_DEFUN([ST_LIB_ARCHIVE],
[
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])
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)
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
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
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")
])