Blame configure.ac

Packit 08bd4c
dnl Process this file with autoconf to produce a configure script.
Packit 08bd4c
Packit 08bd4c
dnl First, define all of the version numbers up front.
Packit 08bd4c
dnl In particular, this allows the version macro to be used in AC_INIT
Packit 08bd4c
Packit 08bd4c
dnl These first two version numbers are updated automatically on each release.
Packit 08bd4c
m4_define([LIBARCHIVE_VERSION_S],[3.3.2])
Packit 08bd4c
m4_define([LIBARCHIVE_VERSION_N],[3003002])
Packit 08bd4c
Packit 08bd4c
dnl bsdtar and bsdcpio versioning tracks libarchive
Packit 08bd4c
m4_define([BSDTAR_VERSION_S],LIBARCHIVE_VERSION_S())
Packit 08bd4c
m4_define([BSDCPIO_VERSION_S],LIBARCHIVE_VERSION_S())
Packit 08bd4c
m4_define([BSDCAT_VERSION_S],LIBARCHIVE_VERSION_S())
Packit 08bd4c
Packit 08bd4c
AC_PREREQ([2.69])
Packit 08bd4c
Packit 08bd4c
#
Packit 08bd4c
# Now starts the "real" configure script.
Packit 08bd4c
#
Packit 08bd4c
Packit 08bd4c
AC_INIT([libarchive],[LIBARCHIVE_VERSION_S()],[libarchive-discuss@googlegroups.com])
Packit 08bd4c
# Make sure the srcdir contains "libarchive" directory
Packit 08bd4c
AC_CONFIG_SRCDIR([libarchive])
Packit 08bd4c
# Use auxiliary subscripts from this subdirectory (cleans up root)
Packit 08bd4c
AC_CONFIG_AUX_DIR([build/autoconf])
Packit 08bd4c
# M4 scripts
Packit 08bd4c
AC_CONFIG_MACRO_DIR([build/autoconf])
Packit 08bd4c
# Must follow AC_CONFIG macros above...
Packit 08bd4c
AM_INIT_AUTOMAKE()
Packit 08bd4c
AM_MAINTAINER_MODE([enable])
Packit 08bd4c
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
Packit 08bd4c
Packit 08bd4c
# Libtool's "interface version" can be computed from the libarchive version.
Packit 08bd4c
Packit 08bd4c
# Libtool interface version bumps on any API change, so increments
Packit 08bd4c
# whenever libarchive minor version does.
Packit 08bd4c
ARCHIVE_MINOR=$(( (LIBARCHIVE_VERSION_N() / 1000) % 1000 ))
Packit 08bd4c
# Libarchive 2.7 == libtool interface 9 = 2 + 7
Packit 08bd4c
# Libarchive 2.8 == libtool interface 10 = 2 + 8
Packit 08bd4c
# Libarchive 2.9 == libtool interface 11 = 2 + 8
Packit 08bd4c
# Libarchive 3.0 == libtool interface 12
Packit 08bd4c
# Libarchive 3.1 == libtool interface 13
Packit 08bd4c
ARCHIVE_INTERFACE=`echo $((13 + ${ARCHIVE_MINOR}))`
Packit 08bd4c
# Libarchive revision is bumped on any source change === libtool revision
Packit 08bd4c
ARCHIVE_REVISION=$(( LIBARCHIVE_VERSION_N() % 1000 ))
Packit 08bd4c
# Libarchive minor is bumped on any interface addition === libtool age
Packit 08bd4c
ARCHIVE_LIBTOOL_VERSION=$ARCHIVE_INTERFACE:$ARCHIVE_REVISION:$ARCHIVE_MINOR
Packit 08bd4c
Packit 08bd4c
# Stick the version numbers into config.h
Packit 08bd4c
AC_DEFINE([LIBARCHIVE_VERSION_STRING],"LIBARCHIVE_VERSION_S()",
Packit 08bd4c
	[Version number of libarchive])
Packit 08bd4c
AC_DEFINE_UNQUOTED([LIBARCHIVE_VERSION_NUMBER],"LIBARCHIVE_VERSION_N()",
Packit 08bd4c
	[Version number of libarchive as a single integer])
Packit 08bd4c
AC_DEFINE([BSDCPIO_VERSION_STRING],"BSDCPIO_VERSION_S()",
Packit 08bd4c
	[Version number of bsdcpio])
Packit 08bd4c
AC_DEFINE([BSDTAR_VERSION_STRING],"BSDTAR_VERSION_S()",
Packit 08bd4c
	[Version number of bsdtar])
Packit 08bd4c
AC_DEFINE([BSDCAT_VERSION_STRING],"BSDTAR_VERSION_S()",
Packit 08bd4c
	[Version number of bsdcat])
Packit 08bd4c
Packit 08bd4c
# The shell variables here must be the same as the AC_SUBST() variables
Packit 08bd4c
# below, but the shell variable names apparently cannot be the same as
Packit 08bd4c
# the m4 macro names above.  Why?  Ask autoconf.
Packit 08bd4c
BSDCPIO_VERSION_STRING=BSDCPIO_VERSION_S()
Packit 08bd4c
BSDTAR_VERSION_STRING=BSDTAR_VERSION_S()
Packit 08bd4c
BSDCAT_VERSION_STRING=BSDCAT_VERSION_S()
Packit 08bd4c
LIBARCHIVE_VERSION_STRING=LIBARCHIVE_VERSION_S()
Packit 08bd4c
LIBARCHIVE_VERSION_NUMBER=LIBARCHIVE_VERSION_N()
Packit 08bd4c
Packit 08bd4c
# Substitute the above version numbers into the various files below.
Packit 08bd4c
# Yes, I believe this is the fourth time we define what are essentially
Packit 08bd4c
# the same symbols.  Why? Ask autoconf.
Packit 08bd4c
AC_SUBST(ARCHIVE_LIBTOOL_VERSION)
Packit 08bd4c
AC_SUBST(BSDCPIO_VERSION_STRING)
Packit 08bd4c
AC_SUBST(BSDTAR_VERSION_STRING)
Packit 08bd4c
AC_SUBST(BSDCAT_VERSION_STRING)
Packit 08bd4c
AC_SUBST(LIBARCHIVE_VERSION_STRING)
Packit 08bd4c
AC_SUBST(LIBARCHIVE_VERSION_NUMBER)
Packit 08bd4c
Packit 08bd4c
AC_CONFIG_HEADERS([config.h])
Packit 08bd4c
AC_CONFIG_FILES([Makefile])
Packit 08bd4c
AC_CONFIG_FILES([build/pkgconfig/libarchive.pc])
Packit 08bd4c
Packit 08bd4c
# Check for host type
Packit 08bd4c
AC_CANONICAL_HOST
Packit 08bd4c
Packit 08bd4c
dnl Compilation on mingw and Cygwin needs special Makefile rules
Packit 08bd4c
inc_windows_files=no
Packit 08bd4c
inc_cygwin_files=no
Packit 08bd4c
case "$host_os" in
Packit 08bd4c
  *mingw* ) inc_windows_files=yes ;;
Packit 08bd4c
  *cygwin* | *msys*) inc_cygwin_files=yes ;;
Packit 08bd4c
esac
Packit 08bd4c
AM_CONDITIONAL([INC_WINDOWS_FILES], [test $inc_windows_files = yes])
Packit 08bd4c
AM_CONDITIONAL([INC_CYGWIN_FILES], [test $inc_cygwin_files = yes])
Packit 08bd4c
Packit 08bd4c
dnl Defines that are required for specific platforms (e.g. -D_POSIX_SOURCE, etc)
Packit 08bd4c
PLATFORMCPPFLAGS=
Packit 08bd4c
case "$host_os" in
Packit 08bd4c
  *mingw* ) PLATFORMCPPFLAGS=-D__USE_MINGW_ANSI_STDIO ;;
Packit 08bd4c
esac
Packit 08bd4c
AC_SUBST(PLATFORMCPPFLAGS)
Packit 08bd4c
Packit 08bd4c
# Checks for programs.
Packit 08bd4c
AC_PROG_CC
Packit 08bd4c
AM_PROG_CC_C_O
Packit 08bd4c
AC_USE_SYSTEM_EXTENSIONS
Packit 08bd4c
AC_LIBTOOL_WIN32_DLL
Packit 08bd4c
AC_PROG_LIBTOOL
Packit 08bd4c
AC_CHECK_TOOL([STRIP],[strip])
Packit 08bd4c
AC_PROG_MKDIR_P
Packit 08bd4c
Packit 08bd4c
#
Packit 08bd4c
# Options for building bsdtar.
Packit 08bd4c
#
Packit 08bd4c
# Default is to build bsdtar, but allow people to override that.
Packit 08bd4c
#
Packit 08bd4c
AC_ARG_ENABLE([bsdtar],
Packit 08bd4c
	[AS_HELP_STRING([--enable-bsdtar], [enable build of bsdtar (default)])
Packit 08bd4c
	AS_HELP_STRING([--enable-bsdtar=static], [force static build of bsdtar])
Packit 08bd4c
	AS_HELP_STRING([--enable-bsdtar=shared], [force dynamic build of bsdtar])
Packit 08bd4c
AS_HELP_STRING([--disable-bsdtar], [disable build of bsdtar])],
Packit 08bd4c
	[], [enable_bsdtar=yes])
Packit 08bd4c
Packit 08bd4c
case "$enable_bsdtar" in
Packit 08bd4c
yes)
Packit 08bd4c
	if test "$enable_static" = "no"; then
Packit 08bd4c
		static_bsdtar=no
Packit 08bd4c
	else
Packit 08bd4c
		static_bsdtar=yes
Packit 08bd4c
	fi
Packit 08bd4c
	build_bsdtar=yes
Packit 08bd4c
	;;
Packit 08bd4c
dynamic|shared)
Packit 08bd4c
	if test "$enable_shared" = "no"; then
Packit 08bd4c
		AC_MSG_FAILURE([Shared linking of bsdtar requires shared libarchive])
Packit 08bd4c
	fi
Packit 08bd4c
	build_bsdtar=yes
Packit 08bd4c
	static_bsdtar=no
Packit 08bd4c
	;;
Packit 08bd4c
static)
Packit 08bd4c
	build_bsdtar=yes
Packit 08bd4c
	static_bsdtar=yes
Packit 08bd4c
	;;
Packit 08bd4c
no)
Packit 08bd4c
	build_bsdtar=no
Packit 08bd4c
	static_bsdtar=no
Packit 08bd4c
	;;
Packit 08bd4c
*)
Packit 08bd4c
	AC_MSG_FAILURE([Unsupported value for --enable-bsdtar])
Packit 08bd4c
	;;
Packit 08bd4c
esac
Packit 08bd4c
Packit 08bd4c
AM_CONDITIONAL([BUILD_BSDTAR], [ test "$build_bsdtar" = yes ])
Packit 08bd4c
AM_CONDITIONAL([STATIC_BSDTAR], [ test "$static_bsdtar" = yes ])
Packit 08bd4c
Packit 08bd4c
#
Packit 08bd4c
# Options for building bsdcat.
Packit 08bd4c
#
Packit 08bd4c
# Default is to build bsdcat, but allow people to override that.
Packit 08bd4c
#
Packit 08bd4c
AC_ARG_ENABLE([bsdcat],
Packit 08bd4c
	[AS_HELP_STRING([--enable-bsdcat], [enable build of bsdcat (default)])
Packit 08bd4c
	AS_HELP_STRING([--enable-bsdcat=static], [force static build of bsdcat])
Packit 08bd4c
	AS_HELP_STRING([--enable-bsdcat=shared], [force dynamic build of bsdcat])
Packit 08bd4c
AS_HELP_STRING([--disable-bsdcat], [disable build of bsdcat])],
Packit 08bd4c
	[], [enable_bsdcat=yes])
Packit 08bd4c
Packit 08bd4c
case "$enable_bsdcat" in
Packit 08bd4c
yes)
Packit 08bd4c
	if test "$enable_static" = "no"; then
Packit 08bd4c
		static_bsdcat=no
Packit 08bd4c
	else
Packit 08bd4c
		static_bsdcat=yes
Packit 08bd4c
	fi
Packit 08bd4c
	build_bsdcat=yes
Packit 08bd4c
	;;
Packit 08bd4c
dynamic|shared)
Packit 08bd4c
	if test "$enable_shared" = "no"; then
Packit 08bd4c
		AC_MSG_FAILURE([Shared linking of bsdcat requires shared libarchive])
Packit 08bd4c
	fi
Packit 08bd4c
	build_bsdcat=yes
Packit 08bd4c
	static_bsdcat=no
Packit 08bd4c
	;;
Packit 08bd4c
static)
Packit 08bd4c
	build_bsdcat=yes
Packit 08bd4c
	static_bsdcat=yes
Packit 08bd4c
	;;
Packit 08bd4c
no)
Packit 08bd4c
	build_bsdcat=no
Packit 08bd4c
	static_bsdcat=no
Packit 08bd4c
	;;
Packit 08bd4c
*)
Packit 08bd4c
	AC_MSG_FAILURE([Unsupported value for --enable-bsdcat])
Packit 08bd4c
	;;
Packit 08bd4c
esac
Packit 08bd4c
Packit 08bd4c
AM_CONDITIONAL([BUILD_BSDCAT], [ test "$build_bsdcat" = yes ])
Packit 08bd4c
AM_CONDITIONAL([STATIC_BSDCAT], [ test "$static_bsdcat" = yes ])
Packit 08bd4c
Packit 08bd4c
#
Packit 08bd4c
# Options for building bsdcpio.
Packit 08bd4c
#
Packit 08bd4c
# Default is not to build bsdcpio, but that can be overridden.
Packit 08bd4c
#
Packit 08bd4c
AC_ARG_ENABLE([bsdcpio],
Packit 08bd4c
	[AS_HELP_STRING([--enable-bsdcpio], [enable build of bsdcpio (default)])
Packit 08bd4c
	AS_HELP_STRING([--enable-bsdcpio=static], [static build of bsdcpio])
Packit 08bd4c
	AS_HELP_STRING([--enable-bsdcpio=shared], [dynamic build of bsdcpio])
Packit 08bd4c
AS_HELP_STRING([--disable-bsdcpio], [disable build of bsdcpio])],
Packit 08bd4c
	[], [enable_bsdcpio=yes])
Packit 08bd4c
Packit 08bd4c
case "$enable_bsdcpio" in
Packit 08bd4c
yes)
Packit 08bd4c
	if test "$enable_static" = "no"; then
Packit 08bd4c
	   static_bsdcpio=no
Packit 08bd4c
	else
Packit 08bd4c
	   static_bsdcpio=yes
Packit 08bd4c
        fi
Packit 08bd4c
	build_bsdcpio=yes
Packit 08bd4c
	;;
Packit 08bd4c
dynamic|shared)
Packit 08bd4c
	if test "$enabled_shared" = "no"; then
Packit 08bd4c
	   AC_MSG_FAILURE([Shared linking of bsdcpio requires shared libarchive])
Packit 08bd4c
	fi
Packit 08bd4c
	build_bsdcpio=yes
Packit 08bd4c
	;;
Packit 08bd4c
static)
Packit 08bd4c
	build_bsdcpio=yes
Packit 08bd4c
	static_bsdcpio=yes
Packit 08bd4c
	;;
Packit 08bd4c
no)
Packit 08bd4c
	build_bsdcpio=no
Packit 08bd4c
	static_bsdcpio=no
Packit 08bd4c
	;;
Packit 08bd4c
*)
Packit 08bd4c
	AC_MSG_FAILURE([Unsupported value for --enable-bsdcpio])
Packit 08bd4c
	;;
Packit 08bd4c
esac
Packit 08bd4c
Packit 08bd4c
AM_CONDITIONAL([BUILD_BSDCPIO], [ test "$build_bsdcpio" = yes ])
Packit 08bd4c
AM_CONDITIONAL([STATIC_BSDCPIO], [ test "$static_bsdcpio" = yes ])
Packit 08bd4c
Packit 08bd4c
# Set up defines needed before including any headers
Packit 08bd4c
case $host in
Packit 08bd4c
  *mingw* | *cygwin* | *msys*  )
Packit 08bd4c
  AC_DEFINE([_WIN32_WINNT], 0x0502, [Define to '0x0502' for Windows Server 2003 APIs.])
Packit 08bd4c
  AC_DEFINE([WINVER], 0x0502, [Define to '0x0502' for Windows Server 2003 APIs.])
Packit 08bd4c
  AC_DEFINE([NTDDI_VERSION], 0x05020000, [Define to '0x05020000' for Windows Server 2003 APIs.])
Packit 08bd4c
  ;;
Packit 08bd4c
esac
Packit 08bd4c
Packit 08bd4c
# Checks for header files.
Packit 08bd4c
AC_HEADER_DIRENT
Packit 08bd4c
AC_HEADER_SYS_WAIT
Packit 08bd4c
AC_CHECK_HEADERS([acl/libacl.h attr/xattr.h])
Packit 08bd4c
AC_CHECK_HEADERS([copyfile.h ctype.h])
Packit 08bd4c
AC_CHECK_HEADERS([errno.h ext2fs/ext2_fs.h fcntl.h grp.h])
Packit 08bd4c
Packit 08bd4c
AC_CACHE_CHECK([whether EXT2_IOC_GETFLAGS is usable],
Packit 08bd4c
    [ac_cv_have_decl_EXT2_IOC_GETFLAGS],
Packit 08bd4c
    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([@%:@include <sys/ioctl.h>
Packit 08bd4c
@%:@include <ext2fs/ext2_fs.h>],
Packit 08bd4c
                                   [int x = EXT2_IOC_GETFLAGS])],
Packit 08bd4c
                  [AS_VAR_SET([ac_cv_have_decl_EXT2_IOC_GETFLAGS], [yes])],
Packit 08bd4c
                  [AS_VAR_SET([ac_cv_have_decl_EXT2_IOC_GETFLAGS], [no])])])
Packit 08bd4c
Packit 08bd4c
AS_VAR_IF([ac_cv_have_decl_EXT2_IOC_GETFLAGS], [yes],
Packit 08bd4c
    [AC_DEFINE_UNQUOTED([HAVE_WORKING_EXT2_IOC_GETFLAGS], [1],
Packit 08bd4c
                    [Define to 1 if you have a working EXT2_IOC_GETFLAGS])])
Packit 08bd4c
Packit 08bd4c
AC_CHECK_HEADERS([inttypes.h io.h langinfo.h limits.h])
Packit 08bd4c
AC_CHECK_HEADERS([linux/fiemap.h linux/fs.h linux/magic.h linux/types.h])
Packit 08bd4c
Packit 08bd4c
AC_CACHE_CHECK([whether FS_IOC_GETFLAGS is usable],
Packit 08bd4c
    [ac_cv_have_decl_FS_IOC_GETFLAGS],
Packit 08bd4c
    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([@%:@include <sys/ioctl.h>
Packit 08bd4c
@%:@include <linux/fs.h>],
Packit 08bd4c
                                   [int x = FS_IOC_GETFLAGS])],
Packit 08bd4c
                  [AS_VAR_SET([ac_cv_have_decl_FS_IOC_GETFLAGS], [yes])],
Packit 08bd4c
                  [AS_VAR_SET([ac_cv_have_decl_FS_IOC_GETFLAGS], [no])])])
Packit 08bd4c
Packit 08bd4c
AS_VAR_IF([ac_cv_have_decl_FS_IOC_GETFLAGS], [yes],
Packit 08bd4c
    [AC_DEFINE_UNQUOTED([HAVE_WORKING_FS_IOC_GETFLAGS], [1],
Packit 08bd4c
                    [Define to 1 if you have a working FS_IOC_GETFLAGS])])
Packit 08bd4c
Packit 08bd4c
AC_CHECK_HEADERS([locale.h membership.h paths.h poll.h pthread.h pwd.h])
Packit 08bd4c
AC_CHECK_HEADERS([readpassphrase.h signal.h spawn.h])
Packit 08bd4c
AC_CHECK_HEADERS([stdarg.h stdint.h stdlib.h string.h])
Packit 08bd4c
AC_CHECK_HEADERS([sys/acl.h sys/cdefs.h sys/ea.h sys/extattr.h])
Packit 08bd4c
AC_CHECK_HEADERS([sys/ioctl.h sys/mkdev.h sys/mount.h])
Packit 08bd4c
AC_CHECK_HEADERS([sys/param.h sys/poll.h sys/richacl.h])
Packit 08bd4c
AC_CHECK_HEADERS([sys/select.h sys/statfs.h sys/statvfs.h])
Packit 08bd4c
AC_CHECK_HEADERS([sys/time.h sys/utime.h sys/utsname.h sys/vfs.h sys/xattr.h])
Packit 08bd4c
AC_CHECK_HEADERS([time.h unistd.h utime.h wchar.h wctype.h])
Packit 08bd4c
AC_CHECK_HEADERS([windows.h])
Packit 08bd4c
# check windows.h first; the other headers require it.
Packit 08bd4c
AC_CHECK_HEADERS([wincrypt.h winioctl.h],[],[],
Packit 08bd4c
[[#ifdef HAVE_WINDOWS_H
Packit 08bd4c
# include <windows.h>
Packit 08bd4c
#endif
Packit 08bd4c
]])
Packit 08bd4c
Packit 08bd4c
# Checks for libraries.
Packit 08bd4c
AC_ARG_WITH([zlib],
Packit 08bd4c
  AS_HELP_STRING([--without-zlib], [Don't build support for gzip through zlib]))
Packit 08bd4c
Packit 08bd4c
if test "x$with_zlib" != "xno"; then
Packit 08bd4c
  AC_CHECK_HEADERS([zlib.h])
Packit 08bd4c
  AC_CHECK_LIB(z,inflate)
Packit 08bd4c
fi
Packit 08bd4c
Packit 08bd4c
AC_ARG_WITH([bz2lib],
Packit 08bd4c
  AS_HELP_STRING([--without-bz2lib], [Don't build support for bzip2 through bz2lib]))
Packit 08bd4c
Packit 08bd4c
if test "x$with_bz2lib" != "xno"; then
Packit 08bd4c
  AC_CHECK_HEADERS([bzlib.h])
Packit 08bd4c
  case "$host_os" in
Packit 08bd4c
    *mingw* | *cygwin* | *msys*)
Packit 08bd4c
      dnl AC_CHECK_LIB cannot be used on the Windows port of libbz2, therefore
Packit 08bd4c
	  dnl use AC_LINK_IFELSE.
Packit 08bd4c
	  AC_MSG_CHECKING([for BZ2_bzDecompressInit in -lbz2])
Packit 08bd4c
      old_LIBS="$LIBS"
Packit 08bd4c
      LIBS="-lbz2 $LIBS"
Packit 08bd4c
      AC_LINK_IFELSE(
Packit 08bd4c
        [AC_LANG_SOURCE(#include <bzlib.h>
Packit 08bd4c
          int main() { return BZ2_bzDecompressInit(NULL, 0, 0); })],
Packit 08bd4c
        [ac_cv_lib_bz2_BZ2_bzDecompressInit=yes],
Packit 08bd4c
        [ac_cv_lib_bz2_BZ2_bzDecompressInit=no])
Packit 08bd4c
      LIBS="$old_LIBS"
Packit 08bd4c
	  AC_MSG_RESULT($ac_cv_lib_bz2_BZ2_bzDecompressInit)
Packit 08bd4c
      if test "x$ac_cv_lib_bz2_BZ2_bzDecompressInit" = xyes; then
Packit 08bd4c
        AC_DEFINE([HAVE_LIBBZ2], [1], [Define to 1 if you have the `bz2' library (-lbz2).])
Packit 08bd4c
        LIBS="-lbz2 $LIBS"
Packit 08bd4c
      fi
Packit 08bd4c
    ;;
Packit 08bd4c
    *)
Packit 08bd4c
      AC_CHECK_LIB(bz2,BZ2_bzDecompressInit)
Packit 08bd4c
    ;;
Packit 08bd4c
  esac
Packit 08bd4c
fi
Packit 08bd4c
Packit 08bd4c
AC_ARG_WITH([iconv],
Packit 08bd4c
  AS_HELP_STRING([--without-iconv], [Don't try to link against iconv]))
Packit 08bd4c
Packit 08bd4c
if test "x$with_iconv" != "xno"; then
Packit 08bd4c
  AM_ICONV
Packit 08bd4c
  AC_CHECK_HEADERS([iconv.h],[],[],[#include <stdlib.h>])
Packit 08bd4c
  if test "x$am_cv_func_iconv" = "xyes"; then
Packit 08bd4c
    AC_CHECK_HEADERS([localcharset.h])
Packit 08bd4c
    am_save_LIBS="$LIBS"
Packit 08bd4c
    LIBS="${LIBS} ${LIBICONV}"
Packit 08bd4c
    AC_CHECK_FUNCS([locale_charset])
Packit 08bd4c
    LIBS="${am_save_LIBS}"
Packit 08bd4c
    if test "x$ac_cv_func_locale_charset" != "xyes"; then
Packit 08bd4c
      # If locale_charset() is not in libiconv, we have to find libcharset. 
Packit 08bd4c
      AC_CHECK_LIB(charset,locale_charset)
Packit 08bd4c
    fi
Packit 08bd4c
  fi
Packit 08bd4c
fi
Packit 08bd4c
Packit 08bd4c
AC_ARG_WITH([lz4],
Packit 08bd4c
  AS_HELP_STRING([--without-lz4], [Don't build support for lz4 through liblz4]))
Packit 08bd4c
Packit 08bd4c
if test "x$with_lz4" != "xno"; then
Packit 08bd4c
  AC_CHECK_HEADERS([lz4.h lz4hc.h])
Packit 08bd4c
  AC_CHECK_LIB(lz4,LZ4_decompress_safe)
Packit 08bd4c
fi
Packit 08bd4c
Packit 08bd4c
AC_ARG_WITH([lzma],
Packit 08bd4c
  AS_HELP_STRING([--without-lzma], [Don't build support for xz through lzma]))
Packit 08bd4c
Packit 08bd4c
if test "x$with_lzma" != "xno"; then
Packit 08bd4c
  AC_CHECK_HEADERS([lzma.h])
Packit 08bd4c
  AC_CHECK_LIB(lzma,lzma_stream_decoder)
Packit 08bd4c
  # Some pre-release (but widely distributed) versions of liblzma
Packit 08bd4c
  # included a disabled version of lzma_stream_encoder_mt that
Packit 08bd4c
  # fools a naive AC_CHECK_LIB or AC_CHECK_FUNC, so we need
Packit 08bd4c
  # to do something more complex here:
Packit 08bd4c
  AC_CACHE_CHECK(
Packit 08bd4c
    [whether we have multithread support in lzma],
Packit 08bd4c
    ac_cv_lzma_has_mt,
Packit 08bd4c
    [AC_LINK_IFELSE([
Packit 08bd4c
      AC_LANG_PROGRAM([[#include <lzma.h>]
Packit 08bd4c
                       [#if LZMA_VERSION < 50020000]
Packit 08bd4c
                       [#error unsupported]
Packit 08bd4c
                       [#endif]],
Packit 08bd4c
                      [[lzma_stream_encoder_mt(0, 0);]])],
Packit 08bd4c
      [ac_cv_lzma_has_mt=yes], [ac_cv_lzma_has_mt=no])])
Packit 08bd4c
  if test "x$ac_cv_lzma_has_mt" != xno; then
Packit 08bd4c
	  AC_DEFINE([HAVE_LZMA_STREAM_ENCODER_MT], [1], [Define to 1 if you have the `lzma_stream_encoder_mt' function.])
Packit 08bd4c
  fi
Packit 08bd4c
fi
Packit 08bd4c
Packit 08bd4c
AC_ARG_WITH([lzo2],
Packit 08bd4c
  AS_HELP_STRING([--with-lzo2], [Build with LZO support from liblzo2]))
Packit 08bd4c
Packit 08bd4c
if test "x$with_lzo2" = "xyes"; then
Packit 08bd4c
  AC_CHECK_HEADERS([lzo/lzoconf.h lzo/lzo1x.h])
Packit 08bd4c
  AC_CHECK_LIB(lzo2,lzo1x_decompress_safe)
Packit 08bd4c
fi
Packit 08bd4c
Packit 08bd4c
AC_ARG_WITH([cng],
Packit 08bd4c
  AS_HELP_STRING([--without-cng], [Don't build support of CNG(Crypto Next Generation)]))
Packit 08bd4c
Packit 08bd4c
AC_ARG_WITH([nettle],
Packit 08bd4c
  AS_HELP_STRING([--without-nettle], [Don't build with crypto support from Nettle]))
Packit 08bd4c
AC_ARG_WITH([openssl],
Packit 08bd4c
  AS_HELP_STRING([--without-openssl], [Don't build support for mtree and xar hashes through openssl]))
Packit 08bd4c
case "$host_os" in
Packit 08bd4c
  *darwin* ) with_openssl=no ;;
Packit 08bd4c
esac
Packit 08bd4c
Packit 08bd4c
AC_ARG_WITH([xml2],
Packit 08bd4c
  AS_HELP_STRING([--without-xml2], [Don't build support for xar through libxml2]))
Packit 08bd4c
AC_ARG_WITH([expat],
Packit 08bd4c
  AS_HELP_STRING([--without-expat], [Don't build support for xar through expat]))
Packit 08bd4c
Packit 08bd4c
if test "x$with_xml2" != "xno"; then
Packit 08bd4c
  PKG_PROG_PKG_CONFIG
Packit 08bd4c
  PKG_CHECK_MODULES(LIBXML2_PC, [libxml-2.0], [
Packit 08bd4c
    CPPFLAGS="${CPPFLAGS} ${LIBXML2_PC_CFLAGS}"
Packit 08bd4c
    LIBS="${LIBS} ${LIBXML2_PC_LIBS}"
Packit 08bd4c
    AC_CHECK_LIB(xml2,xmlInitParser,[true],AC_MSG_FAILURE(Missing xml2 library))
Packit 08bd4c
  ], [
Packit 08bd4c
    AC_CHECK_LIB(xml2,xmlInitParser)
Packit 08bd4c
  ])
Packit 08bd4c
  AC_CHECK_HEADERS([libxml/xmlreader.h libxml/xmlwriter.h])
Packit 08bd4c
fi
Packit 08bd4c
if test "x$ac_cv_header_libxml_xmlreader_h" != "xyes"; then
Packit 08bd4c
  if test "x$with_expat" != "xno"; then
Packit 08bd4c
    AC_CHECK_HEADERS([expat.h])
Packit 08bd4c
    AC_CHECK_LIB(expat,XML_ParserCreate)
Packit 08bd4c
  fi
Packit 08bd4c
fi
Packit 08bd4c
Packit 08bd4c
AC_ARG_ENABLE([posix-regex-lib],
Packit 08bd4c
  [AS_HELP_STRING([--enable-posix-regex-lib],
Packit 08bd4c
    [choose what library to use for POSIX regular expression support (default: auto)])
Packit 08bd4c
  AS_HELP_STRING([--enable-posix-regex-lib=libc], [use libc POSIX regular expression support])
Packit 08bd4c
  AS_HELP_STRING([--enable-posix-regex-lib=libregex], [use libregex POSIX regular expression support])
Packit 08bd4c
  AS_HELP_STRING([--enable-posix-regex-lib=libpcreposix], [use libpcreposix POSIX regular expression support])
Packit 08bd4c
  AS_HELP_STRING([--disable-posix-regex-lib], [don't enable POSIX regular expression support])],
Packit 08bd4c
  [], [enable_posix_regex_lib=auto])
Packit 08bd4c
Packit 08bd4c
posix_regex_lib_found=
Packit 08bd4c
if test "$enable_posix_regex_lib" = "auto" || test "$enable_posix_regex_lib" = "libc" || test "$enable_posix_regex_lib" = "libregex"; then
Packit 08bd4c
  AC_CHECK_HEADERS([regex.h])
Packit 08bd4c
  if test "x$ac_cv_header_regex_h" != "xno"; then
Packit 08bd4c
    AC_CHECK_FUNC(regcomp)
Packit 08bd4c
    if test "x$ac_cv_func_regcomp" = xyes; then
Packit 08bd4c
      posix_regex_lib_found=1
Packit 08bd4c
    else
Packit 08bd4c
      AC_CHECK_LIB(regex,regcomp)
Packit 08bd4c
      if test "x$ac_cv_lib_regex_regcomp" = xyes; then
Packit 08bd4c
        posix_regex_lib_found=1
Packit 08bd4c
      fi
Packit 08bd4c
    fi
Packit 08bd4c
  fi
Packit 08bd4c
fi
Packit 08bd4c
if test -z $posix_regex_lib_found && (test "$enable_posix_regex_lib" = "auto" || test "$enable_posix_regex_lib" = "libpcreposix"); then
Packit 08bd4c
  AC_CHECK_HEADERS([pcreposix.h])
Packit 08bd4c
  AC_CHECK_LIB(pcreposix,regcomp)
Packit 08bd4c
  if test "x$ac_cv_lib_pcreposix_regcomp" != xyes; then
Packit 08bd4c
    AC_MSG_NOTICE(trying libpcreposix check again with libpcre)
Packit 08bd4c
	unset ac_cv_lib_pcreposix_regcomp
Packit 08bd4c
	AC_CHECK_LIB(pcre,pcre_exec)
Packit 08bd4c
    AC_CHECK_LIB(pcreposix,regcomp)
Packit 08bd4c
    if test "x$ac_cv_lib_pcre_pcre_exec" = xyes && test "x$ac_cv_lib_pcreposix_regcomp" = xyes; then
Packit 08bd4c
      AC_MSG_CHECKING(if PCRE_STATIC needs to be defined)
Packit 08bd4c
      AC_LINK_IFELSE(
Packit 08bd4c
        [AC_LANG_SOURCE(#include <pcreposix.h>
Packit 08bd4c
          int main() { return regcomp(NULL, NULL, 0); })],
Packit 08bd4c
        [without_pcre_static=yes],
Packit 08bd4c
        [without_pcre_static=no])
Packit 08bd4c
      AC_LINK_IFELSE(
Packit 08bd4c
        [AC_LANG_SOURCE(#define PCRE_STATIC
Packit 08bd4c
          #include <pcreposix.h>
Packit 08bd4c
          int main() { return regcomp(NULL, NULL, 0); })],
Packit 08bd4c
        [with_pcre_static=yes],
Packit 08bd4c
        [with_pcre_static=no])
Packit 08bd4c
      if test "x$without_pcre_static" != xyes && test "x$with_pcre_static" = xyes; then
Packit 08bd4c
        AC_MSG_RESULT(yes)
Packit 08bd4c
        AC_DEFINE([PCRE_STATIC], [1], [Define to 1 if PCRE_STATIC needs to be defined.])
Packit 08bd4c
      elif test "x$without_pcre_static" = xyes || test "x$with_pcre_static" = xyes; then
Packit 08bd4c
        AC_MSG_RESULT(no)
Packit 08bd4c
      fi
Packit 08bd4c
      posix_regex_lib_found=1
Packit 08bd4c
    fi
Packit 08bd4c
  else
Packit 08bd4c
    posix_regex_lib_found=1
Packit 08bd4c
  fi
Packit 08bd4c
fi
Packit 08bd4c
Packit 08bd4c
# TODO: Give the user the option of using a pre-existing system
Packit 08bd4c
# libarchive.  This will define HAVE_LIBARCHIVE which will cause
Packit 08bd4c
# bsdtar_platform.h to use #include <...> for the libarchive headers.
Packit 08bd4c
# Need to include Makefile.am magic to link against system
Packit 08bd4c
# -larchive in that case.
Packit 08bd4c
#AC_CHECK_LIB(archive,archive_version)
Packit 08bd4c
Packit 08bd4c
# Checks for supported compiler flags
Packit 08bd4c
AX_APPEND_COMPILE_FLAGS([-Wall -Wformat -Wformat-security])
Packit 08bd4c
Packit 08bd4c
# Checks for typedefs, structures, and compiler characteristics.
Packit 08bd4c
AC_C_CONST
Packit 08bd4c
# la_TYPE_UID_T defaults to "int", which is incorrect for MinGW
Packit 08bd4c
# and MSVC. Use a customized version.
Packit 08bd4c
la_TYPE_UID_T
Packit 08bd4c
AC_TYPE_MODE_T
Packit 08bd4c
# AC_TYPE_OFF_T defaults to "long", which limits us to 4GB files on
Packit 08bd4c
# most systems... default to "long long" instead.
Packit 08bd4c
AC_CHECK_TYPE(off_t, [long long])
Packit 08bd4c
AC_TYPE_SIZE_T
Packit 08bd4c
AC_CHECK_TYPE(id_t, [unsigned long])
Packit 08bd4c
AC_CHECK_TYPE(uintptr_t, [unsigned int])
Packit 08bd4c
Packit 08bd4c
# Check for tm_gmtoff in struct tm
Packit 08bd4c
AC_CHECK_MEMBERS([struct tm.tm_gmtoff, struct tm.__tm_gmtoff],,,
Packit 08bd4c
[
Packit 08bd4c
#include <time.h>
Packit 08bd4c
])
Packit 08bd4c
Packit 08bd4c
# Check for f_namemax in struct statfs
Packit 08bd4c
AC_CHECK_MEMBERS([struct statfs.f_namemax],,,
Packit 08bd4c
[
Packit 08bd4c
#include <sys/param.h>
Packit 08bd4c
#include <sys/mount.h>
Packit 08bd4c
])
Packit 08bd4c
Packit 08bd4c
# Check for f_iosize in struct statvfs
Packit 08bd4c
AC_CHECK_MEMBERS([struct statvfs.f_iosize],,,
Packit 08bd4c
[
Packit 08bd4c
#include <sys/statvfs.h>
Packit 08bd4c
])
Packit 08bd4c
Packit 08bd4c
# Check for birthtime in struct stat
Packit 08bd4c
AC_CHECK_MEMBERS([struct stat.st_birthtime])
Packit 08bd4c
Packit 08bd4c
# Check for high-resolution timestamps in struct stat
Packit 08bd4c
AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec])
Packit 08bd4c
AC_CHECK_MEMBERS([struct stat.st_mtimespec.tv_nsec])
Packit 08bd4c
AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec])
Packit 08bd4c
AC_CHECK_MEMBERS([struct stat.st_mtime_n]) # AIX
Packit 08bd4c
AC_CHECK_MEMBERS([struct stat.st_umtime]) # Tru64
Packit 08bd4c
AC_CHECK_MEMBERS([struct stat.st_mtime_usec]) # Hurd
Packit 08bd4c
# Check for block size support in struct stat
Packit 08bd4c
AC_CHECK_MEMBERS([struct stat.st_blksize])
Packit 08bd4c
# Check for st_flags in struct stat (BSD fflags)
Packit 08bd4c
AC_CHECK_MEMBERS([struct stat.st_flags])
Packit 08bd4c
Packit 08bd4c
# If you have uintmax_t, we assume printf supports %ju
Packit 08bd4c
# If you have unsigned long long, we assume printf supports %llu
Packit 08bd4c
# TODO: Check for %ju and %llu support directly.
Packit 08bd4c
AC_CHECK_TYPES([uintmax_t, unsigned long long])
Packit 08bd4c
Packit 08bd4c
# We use C99-style integer types
Packit 08bd4c
# Declare them if the local platform doesn't already do so.
Packit 08bd4c
AC_TYPE_INTMAX_T
Packit 08bd4c
AC_TYPE_UINTMAX_T
Packit 08bd4c
AC_TYPE_INT64_T
Packit 08bd4c
AC_TYPE_UINT64_T
Packit 08bd4c
AC_TYPE_INT32_T
Packit 08bd4c
AC_TYPE_UINT32_T
Packit 08bd4c
AC_TYPE_INT16_T
Packit 08bd4c
AC_TYPE_UINT16_T
Packit 08bd4c
AC_TYPE_UINT8_T
Packit 08bd4c
Packit 08bd4c
AC_CHECK_DECLS([SIZE_MAX, INT32_MAX, INT32_MIN])
Packit 08bd4c
AC_CHECK_DECLS([INT64_MAX, INT64_MIN, UINT64_MAX, UINT32_MAX])
Packit 08bd4c
AC_CHECK_DECLS([INTMAX_MAX, INTMAX_MIN, UINTMAX_MAX])
Packit 08bd4c
Packit 08bd4c
AC_CHECK_DECL([SSIZE_MAX],
Packit 08bd4c
		[AC_DEFINE(HAVE_DECL_SSIZE_MAX, 1, [Define to 1 if you have the declaration of `SSIZE_MAX', and to 0 if you don't.])],
Packit 08bd4c
		[],
Packit 08bd4c
		[#include <limits.h>])
Packit 08bd4c
Packit 08bd4c
AC_CHECK_DECL([EFTYPE],
Packit 08bd4c
		[AC_DEFINE(HAVE_EFTYPE, 1, [A possible errno value for invalid file format errors])],
Packit 08bd4c
		[],
Packit 08bd4c
		[#include <errno.h>])
Packit 08bd4c
AC_CHECK_DECL([EILSEQ],
Packit 08bd4c
		[AC_DEFINE(HAVE_EILSEQ, 1, [A possible errno value for invalid file format errors])],
Packit 08bd4c
		[],
Packit 08bd4c
		[#include <errno.h>])
Packit 08bd4c
AC_CHECK_TYPE([wchar_t],
Packit 08bd4c
	        [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_[]wchar_t), 1, [Define to 1 if the system has the type `wchar_t'.])dnl
Packit 08bd4c
		AC_CHECK_SIZEOF([wchar_t])],
Packit 08bd4c
		[])
Packit 08bd4c
Packit 08bd4c
AC_HEADER_TIME
Packit 08bd4c
Packit 08bd4c
# Checks for library functions.
Packit 08bd4c
AC_PROG_GCC_TRADITIONAL
Packit 08bd4c
AC_HEADER_MAJOR
Packit 08bd4c
AC_FUNC_FSEEKO
Packit 08bd4c
AC_FUNC_MEMCMP
Packit 08bd4c
AC_FUNC_LSTAT
Packit 08bd4c
AC_FUNC_STAT
Packit 08bd4c
AC_FUNC_STRERROR_R
Packit 08bd4c
AC_FUNC_STRFTIME
Packit 08bd4c
AC_FUNC_VPRINTF
Packit 08bd4c
# check for:
Packit 08bd4c
#   CreateHardLinkA(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES)
Packit 08bd4c
# To avoid necessity for including windows.h or special forward declaration
Packit 08bd4c
# workarounds, we use 'void *' for 'struct SECURITY_ATTRIBUTES *'
Packit 08bd4c
AC_CHECK_STDCALL_FUNC([CreateHardLinkA],[const char *, const char *, void *])
Packit 08bd4c
AC_CHECK_FUNCS([arc4random_buf chflags chown chroot ctime_r])
Packit 08bd4c
AC_CHECK_FUNCS([fchdir fchflags fchmod fchown fcntl fdopendir fork])
Packit 08bd4c
AC_CHECK_FUNCS([fstat fstatat fstatfs fstatvfs ftruncate])
Packit 08bd4c
AC_CHECK_FUNCS([futimens futimes futimesat])
Packit 08bd4c
AC_CHECK_FUNCS([geteuid getpid getgrgid_r getgrnam_r])
Packit 08bd4c
AC_CHECK_FUNCS([getpwnam_r getpwuid_r getvfsbyname gmtime_r])
Packit 08bd4c
AC_CHECK_FUNCS([lchflags lchmod lchown link localtime_r lstat lutimes])
Packit 08bd4c
AC_CHECK_FUNCS([mbrtowc memmove memset])
Packit 08bd4c
AC_CHECK_FUNCS([mkdir mkfifo mknod mkstemp])
Packit 08bd4c
AC_CHECK_FUNCS([nl_langinfo openat pipe poll posix_spawnp readlink readlinkat])
Packit 08bd4c
AC_CHECK_FUNCS([readpassphrase])
Packit 08bd4c
AC_CHECK_FUNCS([select setenv setlocale sigaction statfs statvfs])
Packit 08bd4c
AC_CHECK_FUNCS([strchr strdup strerror strncpy_s strrchr symlink timegm])
Packit 08bd4c
AC_CHECK_FUNCS([tzset unsetenv utime utimensat utimes vfork])
Packit 08bd4c
AC_CHECK_FUNCS([wcrtomb wcscmp wcscpy wcslen wctomb wmemcmp wmemcpy wmemmove])
Packit 08bd4c
AC_CHECK_FUNCS([_ctime64_s _fseeki64])
Packit 08bd4c
AC_CHECK_FUNCS([_get_timezone _localtime64_s _mkgmtime64])
Packit 08bd4c
# detects cygwin-1.7, as opposed to older versions
Packit 08bd4c
AC_CHECK_FUNCS([cygwin_conv_path])
Packit 08bd4c
Packit 08bd4c
# DragonFly uses vfsconf, FreeBSD xvfsconf.
Packit 08bd4c
AC_CHECK_TYPES(struct vfsconf,,,
Packit 08bd4c
	[#if HAVE_SYS_TYPES_H
Packit 08bd4c
	#include <sys/types.h>
Packit 08bd4c
	#endif
Packit 08bd4c
	#include <sys/mount.h>
Packit 08bd4c
	])
Packit 08bd4c
Packit 08bd4c
AC_CHECK_TYPES(struct xvfsconf,,,
Packit 08bd4c
	[#if HAVE_SYS_TYPES_H
Packit 08bd4c
	#include <sys/types.h>
Packit 08bd4c
	#endif
Packit 08bd4c
	#include <sys/mount.h>
Packit 08bd4c
	])
Packit 08bd4c
Packit 08bd4c
# There are several variants of readdir_r around; we only
Packit 08bd4c
# accept the POSIX-compliant version.
Packit 08bd4c
AC_COMPILE_IFELSE(
Packit 08bd4c
 [AC_LANG_PROGRAM([[#include <dirent.h>]],
Packit 08bd4c
                  [[DIR *dir; struct dirent e, *r;
Packit 08bd4c
		    return(readdir_r(dir, &e, &r);;]])],
Packit 08bd4c
 [AC_DEFINE(HAVE_READDIR_R,1,[Define to 1 if you have a POSIX compatible readdir_r])]
Packit 08bd4c
)
Packit 08bd4c
# dirfd can be either a function or a macro.
Packit 08bd4c
AC_COMPILE_IFELSE(
Packit 08bd4c
 [AC_LANG_PROGRAM([[#include <dirent.h>
Packit 08bd4c
                    DIR *dir;]],
Packit 08bd4c
                  [[return(dirfd(dir));]])],
Packit 08bd4c
 [AC_DEFINE(HAVE_DIRFD,1,[Define to 1 if you have a dirfd function or macro])]
Packit 08bd4c
)
Packit 08bd4c
Packit 08bd4c
# FreeBSD's nl_langinfo supports an option to specify whether the
Packit 08bd4c
# current locale uses month/day or day/month ordering.  It makes the
Packit 08bd4c
# output a little prettier...
Packit 08bd4c
AC_CHECK_DECL([D_MD_ORDER],
Packit 08bd4c
[AC_DEFINE(HAVE_D_MD_ORDER, 1, [Define to 1 if nl_langinfo supports D_MD_ORDER])],
Packit 08bd4c
[],
Packit 08bd4c
[#if HAVE_LANGINFO_H
Packit 08bd4c
#include <langinfo.h>
Packit 08bd4c
#endif
Packit 08bd4c
])
Packit 08bd4c
Packit 08bd4c
# Check for dirent.d_namlen field explicitly
Packit 08bd4c
# (This is a bit more straightforward than, if not quite as portable as,
Packit 08bd4c
# the recipe given by the autoconf maintainers.)
Packit 08bd4c
AC_CHECK_MEMBER(struct dirent.d_namlen,,,
Packit 08bd4c
[#if HAVE_DIRENT_H
Packit 08bd4c
#include <dirent.h>
Packit 08bd4c
#endif
Packit 08bd4c
])
Packit 08bd4c
Packit 08bd4c
# Check for Extended Attributes support
Packit 08bd4c
AC_ARG_ENABLE([xattr],
Packit 08bd4c
		AS_HELP_STRING([--disable-xattr],
Packit 08bd4c
		[Disable Extended Attributes support (default: check)]))
Packit 08bd4c
Packit 08bd4c
if test "x$enable_xattr" != "xno"; then
Packit 08bd4c
    AC_SEARCH_LIBS([setxattr], [attr])
Packit 08bd4c
    AC_CHECK_DECLS([EXTATTR_NAMESPACE_USER], [], [], [#include <sys/types.h>
Packit 08bd4c
#include <sys/extattr.h>
Packit 08bd4c
])
Packit 08bd4c
    AC_CHECK_DECLS([XATTR_NOFOLLOW], [], [], [#include <sys/xattr.h>
Packit 08bd4c
])
Packit 08bd4c
    if test "x$ac_cv_header_sys_xattr_h" = "xyes" \
Packit 08bd4c
	 -a "x$ac_cv_have_decl_XATTR_NOFOLLOW" = "xyes"; then
Packit 08bd4c
	# Darwin extended attributes support
Packit 08bd4c
	AC_CACHE_VAL([ac_cv_archive_xattr_darwin],
Packit 08bd4c
	  [AC_CHECK_FUNCS(fgetxattr \
Packit 08bd4c
			  flistxattr \
Packit 08bd4c
			  fsetxattr \
Packit 08bd4c
			  getxattr \
Packit 08bd4c
			  listxattr \
Packit 08bd4c
			  setxattr,
Packit 08bd4c
	  [ac_cv_archive_xattr_darwin=yes],
Packit 08bd4c
	  [ac_cv_archive_xattr_darwin=no],
Packit 08bd4c
	  [#include <sys/xattr.h>
Packit 08bd4c
])
Packit 08bd4c
	]
Packit 08bd4c
      )
Packit 08bd4c
    elif test "x$ac_cv_header_sys_extattr_h" = "xyes" \
Packit 08bd4c
           -a "x$ac_cv_have_decl_EXTATTR_NAMESPACE_USER" = "xyes"; then
Packit 08bd4c
	# FreeBSD extended attributes support
Packit 08bd4c
	AC_CACHE_VAL([ac_cv_archive_xattr_freebsd],
Packit 08bd4c
	  [AC_CHECK_FUNCS(extattr_get_fd \
Packit 08bd4c
			  extattr_get_file \
Packit 08bd4c
			  extattr_get_link \
Packit 08bd4c
			  extattr_list_fd \
Packit 08bd4c
			  extattr_list_file \
Packit 08bd4c
			  extattr_list_link \
Packit 08bd4c
			  extattr_set_fd \
Packit 08bd4c
			  extattr_set_link,
Packit 08bd4c
	  [ac_cv_archive_xattr_freebsd=yes],
Packit 08bd4c
	  [ac_cv_archive_xattr_freebsd=no],
Packit 08bd4c
	  [#include <sys/types.h>
Packit 08bd4c
#include <sys/extattr.h>
Packit 08bd4c
])
Packit 08bd4c
	  ]
Packit 08bd4c
	)
Packit 08bd4c
    elif test "x$ac_cv_header_sys_xattr_h" = "xyes" \
Packit 08bd4c
	   -o "x$ac_cv_header_attr_xattr_h" = "xyes"; then
Packit 08bd4c
	# Linux extended attributes support
Packit 08bd4c
	AC_CACHE_VAL([ac_cv_archive_xattr_linux],
Packit 08bd4c
	  [AC_CHECK_FUNCS(fgetxattr \
Packit 08bd4c
			  flistxattr \
Packit 08bd4c
			  fsetxattr \
Packit 08bd4c
			  getxattr \
Packit 08bd4c
			  lgetxattr \
Packit 08bd4c
			  listxattr \
Packit 08bd4c
			  llistxattr \
Packit 08bd4c
			  lsetxattr,
Packit 08bd4c
	  [ac_cv_archive_xattr_linux=yes],
Packit 08bd4c
	  [ac_cv_archive_xattr_linux=no],
Packit 08bd4c
	  [#if HAVE_SYS_TYPES_H
Packit 08bd4c
#include <sys/types.h>
Packit 08bd4c
#endif
Packit 08bd4c
#if HAVE_SYS_XATTR_H
Packit 08bd4c
#include <sys/xattr.h>
Packit 08bd4c
#endif
Packit 08bd4c
#if HAVE_ATTR_XATTR_H
Packit 08bd4c
#include <attr/xatr.h>
Packit 08bd4c
#endif
Packit 08bd4c
])
Packit 08bd4c
	]
Packit 08bd4c
      )
Packit 08bd4c
    elif test "x$ac_cv_header_sys_ea_h" = "xyes"; then
Packit 08bd4c
	# AIX extended attributes support
Packit 08bd4c
	AC_CACHE_VAL([ac_cv_archive_xattr_aix],
Packit 08bd4c
	  [AC_CHECK_FUNCS(fgetea \
Packit 08bd4c
			  flistea \
Packit 08bd4c
			  fsetea \
Packit 08bd4c
			  getea \
Packit 08bd4c
			  lgetea \
Packit 08bd4c
			  listea \
Packit 08bd4c
			  llistea \
Packit 08bd4c
			  lsetea,
Packit 08bd4c
	  [ac_cv_archive_xattr_aix=yes],
Packit 08bd4c
	  [ac_cv_archive_xattr_aix=no],
Packit 08bd4c
	  [#include <sys/ea.h>
Packit 08bd4c
])
Packit 08bd4c
	  ]
Packit 08bd4c
	)
Packit 08bd4c
    fi
Packit 08bd4c
Packit 08bd4c
    AC_MSG_CHECKING([for extended attributes support])
Packit 08bd4c
    if test "x$ac_cv_archive_xattr_linux" = "xyes"; then
Packit 08bd4c
	AC_DEFINE([ARCHIVE_XATTR_LINUX], [1], [Linux xattr support])
Packit 08bd4c
	AC_MSG_RESULT([Linux])
Packit 08bd4c
    elif test "x$ac_cv_archive_xattr_darwin" = "xyes"; then
Packit 08bd4c
	AC_DEFINE([ARCHIVE_XATTR_DARWIN], [1], [Darwin xattr support])
Packit 08bd4c
	AC_MSG_RESULT([Darwin])
Packit 08bd4c
    elif test "x$ac_cv_archive_xattr_freebsd" = "xyes"; then
Packit 08bd4c
	AC_DEFINE([ARCHIVE_XATTR_FREEBSD], [1], [FreeBSD xattr support])
Packit 08bd4c
	AC_MSG_RESULT([FreeBSD])
Packit 08bd4c
    elif test "x$ac_cv_archive_xattr_aix" = "xyes"; then
Packit 08bd4c
	AC_DEFINE([ARCHIVE_XATTR_AIX], [1], [AIX xattr support])
Packit 08bd4c
	AC_MSG_RESULT([AIX])
Packit 08bd4c
    else
Packit 08bd4c
	AC_MSG_RESULT([none])
Packit 08bd4c
    fi
Packit 08bd4c
fi
Packit 08bd4c
Packit 08bd4c
# Check for ACL support
Packit 08bd4c
#
Packit 08bd4c
# The ACL support in libarchive is written against the POSIX1e draft,
Packit 08bd4c
# which was never officially approved and varies quite a bit across
Packit 08bd4c
# platforms.  Worse, some systems have completely non-POSIX acl functions,
Packit 08bd4c
# which makes the following checks rather more complex than I would like.
Packit 08bd4c
#
Packit 08bd4c
AC_ARG_ENABLE([acl],
Packit 08bd4c
		AS_HELP_STRING([--disable-acl],
Packit 08bd4c
		[Disable ACL support (default: check)]))
Packit 08bd4c
Packit 08bd4c
if test "x$enable_acl" != "xno"; then
Packit 08bd4c
    # Libacl
Packit 08bd4c
    AC_CHECK_LIB([acl], [acl_get_file])
Packit 08bd4c
Packit 08bd4c
    AC_CHECK_TYPES([acl_t, acl_entry_t, acl_permset_t, acl_tag_t], [], [], [
Packit 08bd4c
      #if HAVE_SYS_TYPES_H
Packit 08bd4c
      #include <sys/types.h>
Packit 08bd4c
      #endif
Packit 08bd4c
      #if HAVE_SYS_ACL_H
Packit 08bd4c
      #include <sys/acl.h>
Packit 08bd4c
      #endif
Packit 08bd4c
    ])
Packit 08bd4c
Packit 08bd4c
    AC_CHECK_LIB([richacl], [richacl_get_file])
Packit 08bd4c
Packit 08bd4c
    AC_CHECK_TYPES([[struct richace], [struct richacl]], [], [], [
Packit 08bd4c
      #if HAVE_SYS_RICHACL_H
Packit 08bd4c
      #include <sys/richacl.h>
Packit 08bd4c
      #endif
Packit 08bd4c
    ])
Packit 08bd4c
Packit 08bd4c
    # Solaris and derivates ACLs
Packit 08bd4c
    AC_CHECK_FUNCS(acl facl)
Packit 08bd4c
Packit 08bd4c
    if test "x$ac_cv_lib_richacl_richacl_get_file" = "xyes" \
Packit 08bd4c
	 -a "x$ac_cv_type_struct_richace" = "xyes" \
Packit 08bd4c
	 -a "x$ac_cv_type_struct_richacl" = "xyes"; then
Packit 08bd4c
	AC_CACHE_VAL([ac_cv_archive_acl_librichacl],
Packit 08bd4c
	  [AC_CHECK_FUNCS(richacl_alloc \
Packit 08bd4c
			  richacl_equiv_mode \
Packit 08bd4c
			  richacl_free \
Packit 08bd4c
			  richacl_get_fd \
Packit 08bd4c
			  richacl_get_file \
Packit 08bd4c
			  richacl_set_fd \
Packit 08bd4c
			  richacl_set_file,
Packit 08bd4c
	  [ac_cv_archive_acl_librichacl=yes], [ac_cv_archive_acl_librichacl=no],	  [#include <sys/richacl.h>])])
Packit 08bd4c
    fi
Packit 08bd4c
Packit 08bd4c
    if test "x$ac_cv_func_acl" = "xyes" \
Packit 08bd4c
	 -a "x$ac_cv_func_facl" = "xyes"; then
Packit 08bd4c
	AC_CHECK_TYPES([aclent_t], [], [], [[#include <sys/acl.h>]])
Packit 08bd4c
	if test "x$ac_cv_type_aclent_t" = "xyes"; then
Packit 08bd4c
	    AC_CACHE_VAL([ac_cv_archive_acl_sunos],
Packit 08bd4c
	      [AC_CHECK_DECLS([GETACL, SETACL, GETACLCNT],
Packit 08bd4c
	      [ac_cv_archive_acl_sunos=yes], [ac_cv_archive_acl_sunos=no],
Packit 08bd4c
	      [#include <sys/acl.h>])])
Packit 08bd4c
	    AC_CHECK_TYPES([ace_t], [], [], [[#include <sys/acl.h>]])
Packit 08bd4c
	    if test "x$ac_cv_type_ace_t" = "xyes"; then
Packit 08bd4c
		AC_CACHE_VAL([ac_cv_archive_acl_sunos_nfs4],
Packit 08bd4c
		  [AC_CHECK_DECLS([ACE_GETACL, ACE_SETACL, ACE_GETACLCNT],
Packit 08bd4c
		  [ac_cv_archive_acl_sunos_nfs4=yes],
Packit 08bd4c
		  [ac_cv_archive_acl_sonos_nfs4=no],
Packit 08bd4c
		  [#include <sys/acl.h>])])
Packit 08bd4c
	    fi
Packit 08bd4c
	fi
Packit 08bd4c
    elif test "x$ac_cv_type_acl_t" = "xyes" \
Packit 08bd4c
	 -a "x$ac_cv_type_acl_entry_t" = "xyes" \
Packit 08bd4c
	 -a "x$ac_cv_type_acl_permset_t" = "xyes" \
Packit 08bd4c
	 -a "x$ac_cv_type_acl_tag_t" = "xyes"; then
Packit 08bd4c
	# POSIX.1e ACL functions
Packit 08bd4c
	AC_CACHE_VAL([ac_cv_posix_acl_funcs],
Packit 08bd4c
	  [AC_CHECK_FUNCS(acl_add_perm \
Packit 08bd4c
			  acl_clear_perms \
Packit 08bd4c
			  acl_create_entry \
Packit 08bd4c
			  acl_delete_def_file \
Packit 08bd4c
			  acl_free \
Packit 08bd4c
			  acl_get_entry \
Packit 08bd4c
			  acl_get_fd \
Packit 08bd4c
			  acl_get_file \
Packit 08bd4c
			  acl_get_permset \
Packit 08bd4c
			  acl_get_qualifier \
Packit 08bd4c
			  acl_get_tag_type \
Packit 08bd4c
			  acl_init \
Packit 08bd4c
			  acl_set_fd \
Packit 08bd4c
			  acl_set_file \
Packit 08bd4c
			  acl_set_qualifier \
Packit 08bd4c
			  acl_set_tag_type,
Packit 08bd4c
	  [ac_cv_posix_acl_funcs=yes], [ac_cv_posix_acl_funcs=no],
Packit 08bd4c
	  [#if HAVE_SYS_TYPES_H
Packit 08bd4c
	   #include <sys/types.h>
Packit 08bd4c
	   #endif
Packit 08bd4c
	   #if HAVE_SYS_ACL_H
Packit 08bd4c
	   #include <sys/acl.h>
Packit 08bd4c
	   #endif
Packit 08bd4c
	  ])
Packit 08bd4c
	])
Packit 08bd4c
Packit 08bd4c
	AC_CHECK_FUNCS(acl_get_perm)
Packit 08bd4c
Packit 08bd4c
	if test "x$ac_cv_posix_acl_funcs" = "xyes" \
Packit 08bd4c
	     -a "x$ac_cv_header_acl_libacl_h" = "xyes" \
Packit 08bd4c
	     -a "x$ac_cv_lib_acl_acl_get_file" = "xyes" \
Packit 08bd4c
	     -a "x$ac_cv_func_acl_get_perm"; then
Packit 08bd4c
	    AC_CACHE_VAL([ac_cv_archive_acl_libacl],
Packit 08bd4c
	      [ac_cv_archive_acl_libacl=yes])
Packit 08bd4c
	    AC_DEFINE([ARCHIVE_ACL_LIBACL], [1],
Packit 08bd4c
	      [POSIX.1e ACL support via libacl])
Packit 08bd4c
	else
Packit 08bd4c
	     # FreeBSD/Darwin
Packit 08bd4c
	     AC_CHECK_FUNCS(acl_add_flag_np \
Packit 08bd4c
			    acl_clear_flags_np \
Packit 08bd4c
			    acl_get_brand_np \
Packit 08bd4c
			    acl_get_entry_type_np \
Packit 08bd4c
			    acl_get_flag_np \
Packit 08bd4c
			    acl_get_flagset_np \
Packit 08bd4c
			    acl_get_fd_np \
Packit 08bd4c
			    acl_get_link_np \
Packit 08bd4c
			    acl_get_perm_np \
Packit 08bd4c
			    acl_is_trivial_np \
Packit 08bd4c
			    acl_set_entry_type_np \
Packit 08bd4c
			    acl_set_fd_np \
Packit 08bd4c
			    acl_set_link_np,,,
Packit 08bd4c
	      [#include <sys/types.h>
Packit 08bd4c
	       #include <sys/acl.h>])
Packit 08bd4c
Packit 08bd4c
	    AC_CHECK_FUNCS(mbr_uid_to_uuid \
Packit 08bd4c
			   mbr_uuid_to_id \
Packit 08bd4c
			   mbr_gid_to_uuid,,,
Packit 08bd4c
	      [#include <membership.h>])
Packit 08bd4c
Packit 08bd4c
	    AC_CHECK_DECLS([ACL_TYPE_EXTENDED, ACL_TYPE_NFS4, ACL_USER,
Packit 08bd4c
	      ACL_SYNCHRONIZE], [], [],
Packit 08bd4c
	      [#include <sys/types.h>
Packit 08bd4c
	       #include <sys/acl.h>])
Packit 08bd4c
	    if test "x$ac_cv_posix_acl_funcs" = "xyes" \
Packit 08bd4c
	         -a "x$ac_cv_func_acl_get_fd_np" = "xyes" \
Packit 08bd4c
                 -a "x$ac_cv_func_acl_get_perm" != "xyes" \
Packit 08bd4c
	         -a "x$ac_cv_func_acl_get_perm_np" = "xyes" \
Packit 08bd4c
	         -a "x$ac_cv_func_acl_set_fd_np" = "xyes"; then
Packit 08bd4c
		if test "x$ac_cv_have_decl_ACL_USER" = "xyes"; then
Packit 08bd4c
		    AC_CACHE_VAL([ac_cv_archive_acl_freebsd],
Packit 08bd4c
		      [ac_cv_archive_acl_freebsd=yes])
Packit 08bd4c
		    if test "x$ac_cv_have_decl_ACL_TYPE_NFS4" = "xyes" \
Packit 08bd4c
		         -a "x$ac_cv_func_acl_add_flag_np" = "xyes" \
Packit 08bd4c
		         -a "x$ac_cv_func_acl_get_brand_np" = "xyes" \
Packit 08bd4c
		         -a "x$ac_cv_func_acl_get_entry_type_np" = "xyes" \
Packit 08bd4c
		         -a "x$ac_cv_func_acl_get_flagset_np" = "xyes" \
Packit 08bd4c
		         -a "x$ac_cv_func_acl_set_entry_type_np" = "xyes"; then
Packit 08bd4c
			AC_CACHE_VAL([ac_cv_archive_acl_freebsd_nfs4],
Packit 08bd4c
			  [ac_cv_archive_acl_freebsd_nfs4=yes])
Packit 08bd4c
		    fi
Packit 08bd4c
	        elif test "x$ac_cv_have_decl_ACL_TYPE_EXTENDED" = "xyes" \
Packit 08bd4c
		       -a "x$ac_cv_func_acl_add_flag_np" = "xyes" \
Packit 08bd4c
		       -a "x$ac_cv_func_acl_get_flagset_np" = "xyes" \
Packit 08bd4c
		       -a "x$ac_cv_func_acl_get_link_np" = "xyes" \
Packit 08bd4c
		       -a "x$ac_cv_func_acl_set_link_np" = "xyes" \
Packit 08bd4c
		       -a "x$ac_cv_func_mbr_uid_to_uuid" = "xyes" \
Packit 08bd4c
		       -a "x$ac_cv_func_mbr_uuid_to_id" = "xyes" \
Packit 08bd4c
		       -a "x$ac_cv_func_mbr_gid_to_uuid" = "xyes"; then
Packit 08bd4c
		    AC_CACHE_VAL([ac_cv_archive_acl_darwin],
Packit 08bd4c
		      [ac_cv_archive_acl_darwin=yes])
Packit 08bd4c
	        fi
Packit 08bd4c
	    fi
Packit 08bd4c
	fi
Packit 08bd4c
    fi
Packit 08bd4c
    AC_MSG_CHECKING([for ACL support])
Packit 08bd4c
    if test "x$ac_cv_archive_acl_libacl" = "xyes" \
Packit 08bd4c
	 -a "x$ac_cv_archive_acl_librichacl" = "xyes"; then
Packit 08bd4c
	AC_MSG_RESULT([libacl (POSIX.1e) + librichacl (NFSv4)])
Packit 08bd4c
	AC_DEFINE([ARCHIVE_ACL_LIBACL], [1],
Packit 08bd4c
	  [Linux POSIX.1e ACL support via libacl])
Packit 08bd4c
	AC_DEFINE([ARCHIVE_ACL_LIBRICHACL], [1],
Packit 08bd4c
	  [Linux NFSv4 ACL support via librichacl])
Packit 08bd4c
    elif test "x$ac_cv_archive_acl_libacl" = "xyes"; then
Packit 08bd4c
	AC_MSG_RESULT([libacl (POSIX.1e)])
Packit 08bd4c
	AC_DEFINE([ARCHIVE_ACL_LIBACL], [1],
Packit 08bd4c
	  [Linux POSIX.1e ACL support via libacl])
Packit 08bd4c
    elif test "x$ac_cv_archive_acl_librichacl" = "xyes"; then
Packit 08bd4c
	AC_MSG_RESULT([librichacl (NFSv4)])
Packit 08bd4c
	AC_DEFINE([ARCHIVE_ACL_LIBRICHACL], [1],
Packit 08bd4c
	  [Linux NFSv4 ACL support via librichacl])
Packit 08bd4c
    elif test "x$ac_cv_archive_acl_darwin" = "xyes"; then
Packit 08bd4c
	AC_DEFINE([ARCHIVE_ACL_DARWIN], [1], [Darwin ACL support])
Packit 08bd4c
	AC_MSG_RESULT([Darwin (limited NFSv4)])
Packit 08bd4c
    elif test "x$ac_cv_archive_acl_sunos" = "xyes"; then
Packit 08bd4c
	AC_DEFINE([ARCHIVE_ACL_SUNOS], [1], [Solaris ACL support])
Packit 08bd4c
	if test "x$ac_cv_archive_acl_sunos_nfs4" = "xyes"; then
Packit 08bd4c
	    AC_DEFINE([ARCHIVE_ACL_SUNOS_NFS4], [1],
Packit 08bd4c
	      [Solaris NFSv4 ACL support])
Packit 08bd4c
	    AC_MSG_RESULT([Solaris (POSIX.1e and NFSv4)])
Packit 08bd4c
	else
Packit 08bd4c
	    AC_MSG_RESULT([Solaris (POSIX.1e)])
Packit 08bd4c
	fi
Packit 08bd4c
    elif test "x$ac_cv_archive_acl_freebsd" = "xyes"; then
Packit 08bd4c
	AC_DEFINE([ARCHIVE_ACL_FREEBSD], [1], [FreeBSD ACL support])
Packit 08bd4c
	if test "x$ac_cv_archive_acl_freebsd_nfs4" = "xyes"; then
Packit 08bd4c
	    AC_DEFINE([ARCHIVE_ACL_FREEBSD_NFS4], [1],
Packit 08bd4c
	      [FreeBSD NFSv4 ACL support])
Packit 08bd4c
	    AC_MSG_RESULT([FreeBSD (POSIX.1e and NFSv4)])
Packit 08bd4c
	else
Packit 08bd4c
	    AC_MSG_RESULT([FreeBSD (POSIX.1e)])
Packit 08bd4c
	fi
Packit 08bd4c
    else
Packit 08bd4c
	AC_MSG_RESULT([none])
Packit 08bd4c
    fi
Packit 08bd4c
fi
Packit 08bd4c
Packit 08bd4c
Packit 08bd4c
AM_CONDITIONAL([INC_LINUX_ACL],
Packit 08bd4c
  [test "x$ac_cv_archive_acl_libacl" = "xyes" \
Packit 08bd4c
     -o "x$ac_cv_archive_acl_librichacl" = "xyes"])
Packit 08bd4c
AM_CONDITIONAL([INC_SUNOS_ACL], [test "x$ac_cv_archive_acl_sunos" = "xyes"])
Packit 08bd4c
AM_CONDITIONAL([INC_DARWIN_ACL],
Packit 08bd4c
	  [test "x$ac_cv_archive_acl_darwin" = "xyes"])
Packit 08bd4c
AM_CONDITIONAL([INC_FREEBSD_ACL],
Packit 08bd4c
	  [test "x$ac_cv_archive_acl_freebsd" = "xyes"])
Packit 08bd4c
Packit 08bd4c
# Additional requirements
Packit 08bd4c
AC_SYS_LARGEFILE
Packit 08bd4c
Packit 08bd4c
dnl NOTE: Crypto checks must run last.
Packit 08bd4c
AC_DEFUN([CRYPTO_CHECK], [
Packit 08bd4c
  if test "$found_$1" != yes; then
Packit 08bd4c
    saved_CPPFLAGS="$CPPFLAGS"
Packit 08bd4c
    CPPFLAGS="$CPPFLAGS -I. -I$srcdir -I$srcdir/libarchive"
Packit 08bd4c
    touch "check_crypto_md.h"
Packit 08bd4c
    AC_MSG_CHECKING([support for ARCHIVE_CRYPTO_$1_$2])
Packit 08bd4c
    AC_LINK_IFELSE([AC_LANG_SOURCE([
Packit 08bd4c
#define ARCHIVE_$1_COMPILE_TEST
Packit 08bd4c
#define ARCHIVE_CRYPTO_$1_$2
Packit 08bd4c
#define PLATFORM_CONFIG_H "check_crypto_md.h"
Packit 08bd4c
Packit 08bd4c
$(cat "$srcdir/libarchive/archive_digest.c")
Packit 08bd4c
Packit 08bd4c
int
Packit 08bd4c
main(int argc, char **argv)
Packit 08bd4c
{
Packit 08bd4c
  archive_$3_ctx ctx;
Packit 08bd4c
  archive_$3_init(&ctx;;
Packit 08bd4c
  archive_$3_update(&ctx, *argv, argc);
Packit 08bd4c
  archive_$3_final(&ctx, NULL);
Packit 08bd4c
  return 0;
Packit 08bd4c
}
Packit 08bd4c
])],
Packit 08bd4c
    [ AC_MSG_RESULT([yes])
Packit 08bd4c
      found_$1=yes
Packit 08bd4c
      found_$2=yes
Packit 08bd4c
      AC_DEFINE(ARCHIVE_CRYPTO_$1_$2, 1, [ $1 via ARCHIVE_CRYPTO_$1_$2 supported.])
Packit 08bd4c
    ],
Packit 08bd4c
    [ AC_MSG_RESULT([no])])
Packit 08bd4c
    CPPFLAGS="$saved_CPPFLAGS"
Packit 08bd4c
    rm "check_crypto_md.h"
Packit 08bd4c
  fi
Packit 08bd4c
])
Packit 08bd4c
Packit 08bd4c
AC_DEFUN([CRYPTO_CHECK_WIN], [
Packit 08bd4c
  if test "$found_$1" != yes; then
Packit 08bd4c
    AC_MSG_CHECKING([support for ARCHIVE_CRYPTO_$1_WIN])
Packit 08bd4c
    AC_LINK_IFELSE([AC_LANG_SOURCE([
Packit 08bd4c
#define ARCHIVE_$1_COMPILE_TEST
Packit 08bd4c
#include <windows.h>
Packit 08bd4c
#include <wincrypt.h>
Packit 08bd4c
Packit 08bd4c
int
Packit 08bd4c
main(int argc, char **argv)
Packit 08bd4c
{
Packit 08bd4c
	(void)argc;
Packit 08bd4c
	(void)argv;
Packit 08bd4c
Packit 08bd4c
	return ($2);
Packit 08bd4c
}
Packit 08bd4c
])],
Packit 08bd4c
    [ AC_MSG_RESULT([yes])
Packit 08bd4c
      found_$1=yes
Packit 08bd4c
      found_WIN=yes
Packit 08bd4c
      AC_DEFINE(ARCHIVE_CRYPTO_$1_WIN, 1, [ $1 via ARCHIVE_CRYPTO_$1_WIN supported.])
Packit 08bd4c
    ],
Packit 08bd4c
    [ AC_MSG_RESULT([no])])
Packit 08bd4c
  fi
Packit 08bd4c
])
Packit 08bd4c
Packit 08bd4c
case "$host_os" in
Packit 08bd4c
  *mingw* | *cygwin* | *msys*)
Packit 08bd4c
	;;
Packit 08bd4c
  *)
Packit 08bd4c
	CRYPTO_CHECK(MD5, LIBC, md5)
Packit 08bd4c
	CRYPTO_CHECK(MD5, LIBSYSTEM, md5)
Packit 08bd4c
	CRYPTO_CHECK(RMD160, LIBC, rmd160)
Packit 08bd4c
	CRYPTO_CHECK(SHA1, LIBC, sha1)
Packit 08bd4c
	CRYPTO_CHECK(SHA1, LIBSYSTEM, sha1)
Packit 08bd4c
	CRYPTO_CHECK(SHA256, LIBC, sha256)
Packit 08bd4c
	CRYPTO_CHECK(SHA256, LIBC2, sha256)
Packit 08bd4c
	CRYPTO_CHECK(SHA256, LIBC3, sha256)
Packit 08bd4c
	CRYPTO_CHECK(SHA256, LIBSYSTEM, sha256)
Packit 08bd4c
	CRYPTO_CHECK(SHA384, LIBC, sha384)
Packit 08bd4c
	CRYPTO_CHECK(SHA384, LIBC2, sha384)
Packit 08bd4c
	CRYPTO_CHECK(SHA384, LIBC3, sha384)
Packit 08bd4c
	CRYPTO_CHECK(SHA384, LIBSYSTEM, sha384)
Packit 08bd4c
	CRYPTO_CHECK(SHA512, LIBC, sha512)
Packit 08bd4c
	CRYPTO_CHECK(SHA512, LIBC2, sha512)
Packit 08bd4c
	CRYPTO_CHECK(SHA512, LIBC3, sha512)
Packit 08bd4c
	CRYPTO_CHECK(SHA512, LIBSYSTEM, sha512)
Packit 08bd4c
	;;
Packit 08bd4c
esac
Packit 08bd4c
Packit 08bd4c
if test "x$with_cng" != "xno"; then
Packit 08bd4c
    AC_CHECK_HEADERS([bcrypt.h],[
Packit 08bd4c
        LIBS="$LIBS -lbcrypt"
Packit 08bd4c
    ],[],
Packit 08bd4c
    [[#ifdef HAVE_WINDOWS_H
Packit 08bd4c
    # include <windows.h>
Packit 08bd4c
    #endif
Packit 08bd4c
    ]])
Packit 08bd4c
fi
Packit 08bd4c
Packit 08bd4c
if test "x$with_nettle" != "xno"; then
Packit 08bd4c
    AC_CHECK_HEADERS([nettle/md5.h nettle/ripemd160.h nettle/sha.h])
Packit 08bd4c
    AC_CHECK_HEADERS([nettle/pbkdf2.h nettle/aes.h nettle/hmac.h])
Packit 08bd4c
    saved_LIBS=$LIBS
Packit 08bd4c
    AC_CHECK_LIB(nettle,nettle_sha1_init)
Packit 08bd4c
    CRYPTO_CHECK(MD5, NETTLE, md5)
Packit 08bd4c
    CRYPTO_CHECK(RMD160, NETTLE, rmd160)
Packit 08bd4c
    CRYPTO_CHECK(SHA1, NETTLE, sha1)
Packit 08bd4c
    CRYPTO_CHECK(SHA256, NETTLE, sha256)
Packit 08bd4c
    CRYPTO_CHECK(SHA384, NETTLE, sha384)
Packit 08bd4c
    CRYPTO_CHECK(SHA512, NETTLE, sha512)
Packit 08bd4c
    if test "x$found_NETTLE" != "xyes"; then
Packit 08bd4c
      LIBS=$saved_LIBS
Packit 08bd4c
    fi
Packit 08bd4c
fi
Packit 08bd4c
Packit 08bd4c
if test "x$with_openssl" != "xno"; then
Packit 08bd4c
    AC_CHECK_HEADERS([openssl/evp.h])
Packit 08bd4c
    saved_LIBS=$LIBS
Packit 08bd4c
    case "$host_os" in
Packit 08bd4c
      *mingw* | *cygwin* | *msys*)
Packit 08bd4c
        case "$host_cpu" in
Packit 08bd4c
          x86_64)
Packit 08bd4c
            AC_CHECK_LIB(eay64,OPENSSL_config)
Packit 08bd4c
            if test "x$ac_cv_lib_eay64_main" != "xyes"; then
Packit 08bd4c
              AC_CHECK_LIB(eay32,OPENSSL_config)
Packit 08bd4c
            fi
Packit 08bd4c
            ;;
Packit 08bd4c
          *)
Packit 08bd4c
            AC_CHECK_LIB(eay32,OPENSSL_config)
Packit 08bd4c
            ;;
Packit 08bd4c
        esac
Packit 08bd4c
        ;;
Packit 08bd4c
      *)
Packit 08bd4c
        AC_CHECK_LIB(crypto,OPENSSL_config)
Packit 08bd4c
        ;;
Packit 08bd4c
    esac
Packit 08bd4c
    CRYPTO_CHECK(MD5, OPENSSL, md5)
Packit 08bd4c
    CRYPTO_CHECK(RMD160, OPENSSL, rmd160)
Packit 08bd4c
    CRYPTO_CHECK(SHA1, OPENSSL, sha1)
Packit 08bd4c
    CRYPTO_CHECK(SHA256, OPENSSL, sha256)
Packit 08bd4c
    CRYPTO_CHECK(SHA384, OPENSSL, sha384)
Packit 08bd4c
    CRYPTO_CHECK(SHA512, OPENSSL, sha512)
Packit 08bd4c
    if test "x$found_OPENSSL" != "xyes"; then
Packit 08bd4c
      LIBS=$saved_LIBS
Packit 08bd4c
    else
Packit 08bd4c
      AC_CHECK_FUNCS([PKCS5_PBKDF2_HMAC_SHA1])
Packit 08bd4c
    fi
Packit 08bd4c
    AC_CHECK_LIB(crypto,EVP_CIPHER_CTX_init)
Packit 08bd4c
fi
Packit 08bd4c
Packit 08bd4c
# Probe libmd AFTER OpenSSL/libcrypto.
Packit 08bd4c
# The two are incompatible and OpenSSL is more complete.
Packit 08bd4c
AC_CHECK_HEADERS([md5.h ripemd.h sha.h sha256.h sha512.h])
Packit 08bd4c
saved_LIBS=$LIBS
Packit 08bd4c
AC_CHECK_LIB(md,MD5Init)
Packit 08bd4c
CRYPTO_CHECK(MD5, LIBMD, md5)
Packit 08bd4c
CRYPTO_CHECK(RMD160, LIBMD, rmd160)
Packit 08bd4c
CRYPTO_CHECK(SHA1, LIBMD, sha1)
Packit 08bd4c
CRYPTO_CHECK(SHA256, LIBMD, sha256)
Packit 08bd4c
CRYPTO_CHECK(SHA512, LIBMD, sha512)
Packit 08bd4c
if test "x$found_LIBMD" != "xyes"; then
Packit 08bd4c
  LIBS=$saved_LIBS
Packit 08bd4c
fi
Packit 08bd4c
Packit 08bd4c
case "$host_os" in
Packit 08bd4c
  *mingw* | *cygwin* | *msys*)
Packit 08bd4c
	CRYPTO_CHECK_WIN(MD5, CALG_MD5)
Packit 08bd4c
	CRYPTO_CHECK_WIN(SHA1, CALG_SHA1)
Packit 08bd4c
	CRYPTO_CHECK_WIN(SHA256, CALG_SHA_256)
Packit 08bd4c
	CRYPTO_CHECK_WIN(SHA384, CALG_SHA_384)
Packit 08bd4c
	CRYPTO_CHECK_WIN(SHA512, CALG_SHA_512)
Packit 08bd4c
	;;
Packit 08bd4c
esac
Packit 08bd4c
Packit 08bd4c
# Ensure test directories are present if building out-of-tree
Packit 08bd4c
AC_CONFIG_COMMANDS([mkdirs],
Packit 08bd4c
		   [mkdir -p libarchive/test tar/test cat/test cpio/test])
Packit 08bd4c
Packit 08bd4c
AC_OUTPUT