Blame configure.ac

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