X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=configure.ac;h=04e5a6425c2c70668acdd8b949a9769162e79ac7;hp=288a64b184adf3e5ef2427e0dc64e94c3f153387;hb=db6646022cb5b94d566bdb1c3f5de6b10e6939d0;hpb=09e9bf4f6dfc6a196aa2c85f85b7da81e6bd70f7 diff --git a/configure.ac b/configure.ac index 288a64b1..04e5a642 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([wimlib], [1.6.1-BETA], [ebiggers3@gmail.com]) +AC_INIT([wimlib], [1.7.2-BETA], [ebiggers3@gmail.com]) AC_CONFIG_SRCDIR([src/wim.c]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_AUX_DIR([build-aux]) @@ -24,23 +24,24 @@ AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([Makefile] [doc/Doxyfile] [wimlib.pc] - [doc/"$IMAGEX_PROGNAME".1:doc/imagex.1.in] - [doc/"$IMAGEX_PROGNAME"-append.1:doc/imagex-append.1.in] - [doc/"$IMAGEX_PROGNAME"-apply.1:doc/imagex-apply.1.in] - [doc/"$IMAGEX_PROGNAME"-capture.1:doc/imagex-capture.1.in] - [doc/"$IMAGEX_PROGNAME"-delete.1:doc/imagex-delete.1.in] - [doc/"$IMAGEX_PROGNAME"-dir.1:doc/imagex-dir.1.in] - [doc/"$IMAGEX_PROGNAME"-export.1:doc/imagex-export.1.in] - [doc/"$IMAGEX_PROGNAME"-extract.1:doc/imagex-extract.1.in] - [doc/"$IMAGEX_PROGNAME"-info.1:doc/imagex-info.1.in] - [doc/"$IMAGEX_PROGNAME"-join.1:doc/imagex-join.1.in] - [doc/"$IMAGEX_PROGNAME"-mount.1:doc/imagex-mount.1.in] - [doc/"$IMAGEX_PROGNAME"-mountrw.1:doc/imagex-mountrw.1.in] - [doc/"$IMAGEX_PROGNAME"-optimize.1:doc/imagex-optimize.1.in] - [doc/"$IMAGEX_PROGNAME"-split.1:doc/imagex-split.1.in] - [doc/"$IMAGEX_PROGNAME"-unmount.1:doc/imagex-unmount.1.in] - [doc/"$IMAGEX_PROGNAME"-update.1:doc/imagex-update.1.in] - [doc/mkwinpeimg.1]) + [doc/man1/"$IMAGEX_PROGNAME".1:doc/man1/imagex.1.in] + [doc/man1/"$IMAGEX_PROGNAME"-append.1:doc/man1/imagex-append.1.in] + [doc/man1/"$IMAGEX_PROGNAME"-apply.1:doc/man1/imagex-apply.1.in] + [doc/man1/"$IMAGEX_PROGNAME"-capture.1:doc/man1/imagex-capture.1.in] + [doc/man1/"$IMAGEX_PROGNAME"-delete.1:doc/man1/imagex-delete.1.in] + [doc/man1/"$IMAGEX_PROGNAME"-dir.1:doc/man1/imagex-dir.1.in] + [doc/man1/"$IMAGEX_PROGNAME"-export.1:doc/man1/imagex-export.1.in] + [doc/man1/"$IMAGEX_PROGNAME"-extract.1:doc/man1/imagex-extract.1.in] + [doc/man1/"$IMAGEX_PROGNAME"-info.1:doc/man1/imagex-info.1.in] + [doc/man1/"$IMAGEX_PROGNAME"-join.1:doc/man1/imagex-join.1.in] + [doc/man1/"$IMAGEX_PROGNAME"-mount.1:doc/man1/imagex-mount.1.in] + [doc/man1/"$IMAGEX_PROGNAME"-mountrw.1:doc/man1/imagex-mountrw.1.in] + [doc/man1/"$IMAGEX_PROGNAME"-optimize.1:doc/man1/imagex-optimize.1.in] + [doc/man1/"$IMAGEX_PROGNAME"-split.1:doc/man1/imagex-split.1.in] + [doc/man1/"$IMAGEX_PROGNAME"-unmount.1:doc/man1/imagex-unmount.1.in] + [doc/man1/"$IMAGEX_PROGNAME"-update.1:doc/man1/imagex-update.1.in] + [doc/man1/"$IMAGEX_PROGNAME"-verify.1:doc/man1/imagex-verify.1.in] + [doc/man1/mkwinpeimg.1]) AC_CONFIG_FILES([programs/mkwinpeimg], [chmod +x programs/mkwinpeimg]) @@ -48,13 +49,13 @@ AC_PROG_CC AM_PROG_CC_C_O AC_CANONICAL_HOST -AC_CHECK_FUNCS([utimensat lutimes utime flock mempcpy]) +AC_CHECK_FUNCS([futimens utimensat utime flock mempcpy \ + openat fstatat readlinkat fdopendir]) # Note: some of the following header checks are only to define the appropriate # HAVE_*_H macro so that the NTFS-3g headers don't get confused and try to skip # including certain headers. AC_CHECK_HEADERS([alloca.h \ - attr/xattr.h \ byteswap.h \ endian.h \ errno.h \ @@ -67,6 +68,7 @@ AC_CHECK_HEADERS([alloca.h \ sys/endian.h \ sys/file.h \ sys/param.h \ + sys/sysctl.h \ sys/times.h \ time.h \ utime.h]) @@ -138,7 +140,7 @@ if test "x$ENABLE_MORE_ASSERTIONS" = "xyes"; then fi -AC_MSG_CHECKING([whether to include compression verification]) +AC_MSG_CHECKING([whether to include automatic compression verification]) AC_ARG_ENABLE([verify_compression], AS_HELP_STRING([--enable-verify-compression], [always check if blocks we compress can be correctly @@ -169,61 +171,36 @@ fi PTHREAD_LDADD="-lpthread" AC_SUBST([PTHREAD_LDADD], [$PTHREAD_LDADD]) -WITH_NTFS_3G_DEFAULT="yes" -WITH_FUSE_DEFAULT="yes" +WITH_NTFS_3G_DEFAULT="no" +WITH_FUSE_DEFAULT="no" WINDOWS_NATIVE_BUILD="no" VISIBILITY_CFLAGS="-fvisibility=hidden" WINDOWS_CFLAGS="" WINDOWS_CPPFLAGS="" WINDOWS_LDFLAGS="" WINDOWS_LDADD="" -ENABLE_XATTR_DEFAULT="autodetect" -case "$host" in - *-*-mingw*) +case "$host_os" in + mingw*) # Native Windows - WITH_NTFS_3G_DEFAULT="no" - WITH_FUSE_DEFAULT="no" WINDOWS_NATIVE_BUILD="yes" VISIBILITY_CFLAGS="" WINDOWS_CFLAGS="-municode" WINDOWS_CPPFLAGS="-D_POSIX -DUNICODE -D_UNICODE -D_CRT_NON_CONFORMING_SWPRINTFS" WINDOWS_LDFLAGS="-no-undefined" WINDOWS_LDADD="-lshlwapi" - ENABLE_XATTR_DEFAULT="no" ;; - *-*-cygwin*) - # Cygwin (WARNING: not well supported) - AC_MSG_WARN([wimlib has not been tested with Cygwin! Please do - a Windows-native build with MinGW-w64 instead]) - WITH_NTFS_3G_DEFAULT="no" - WITH_FUSE_DEFAULT="no" - VISIBILITY_CFLAGS="" + linux*) + # Linux + WITH_FUSE_DEFAULT="yes" + WITH_NTFS_3G_DEFAULT="yes" ;; *) - # UNIX / other + # Other UNIX + WITH_NTFS_3G_DEFAULT="yes" ;; esac -AC_ARG_WITH([ntdll], - AS_HELP_STRING([--without-ntdll], [Windows only: do not try to - use functions from ntdll. By default, in some parts - of its code, wimlib uses Windows NT system calls to - work around flaws in the Win32 API. This support - can be omitted if needed, but some annoying bugs - will surface (e.g. permission denied errors even - when running as the Administrator).]), - [WITH_NTDLL=$withval], - [WITH_NTDLL=yes]) - -if test "x$WINDOWS_NATIVE_BUILD" = "xyes"; then - if test "x$WITH_NTDLL" = "xyes"; then - WINDOWS_LDADD="$WINDOWS_LDADD" - AC_DEFINE([WITH_NTDLL], [1], [Define to 1 to try to use ntdll - functions]) - fi -fi - AC_SUBST([VISIBILITY_CFLAGS], [$VISIBILITY_CFLAGS]) AC_SUBST([WINDOWS_LDFLAGS], [$WINDOWS_LDFLAGS]) AC_SUBST([WINDOWS_LDADD], [$WINDOWS_LDADD]) @@ -231,34 +208,42 @@ AC_SUBST([WINDOWS_CPPFLAGS], [$WINDOWS_CPPFLAGS]) AC_SUBST([WINDOWS_CFLAGS], [$WINDOWS_CFLAGS]) AM_CONDITIONAL([WINDOWS_NATIVE_BUILD], [test "x$WINDOWS_NATIVE_BUILD" = "xyes"]) + +AM_ICONV +if test "x$am_cv_func_iconv" != "xyes"; then + AC_MSG_ERROR([Cannot find the iconv() function. iconv() is used to + convert between encodings of WIM filenames and XML data. + wimlib cannot be compiled without it. iconv() is + available in the latest version of glibc and sometimes in + other libraries.]) +fi + AC_MSG_CHECKING([whether to include support for ntfs-3g]) AC_ARG_WITH([ntfs-3g], - AS_HELP_STRING([--without-ntfs-3g], [build without NTFS-3g. - On UNIX, this will disable the ability to use NTFS-specific - information when capturing or applying WIMs to a - NTFS filesystem.]), - [WITH_NTFS_3G=$withval], - [WITH_NTFS_3G=$WITH_NTFS_3G_DEFAULT] - ) + [AS_HELP_STRING([--without-ntfs-3g], + [build without libntfs-3g. This will disable the + ability to capture or apply a WIM image directly + from/to an unmounted NTFS volume.])], + [WITH_NTFS_3G=$withval], + [WITH_NTFS_3G=$WITH_NTFS_3G_DEFAULT]) + AC_MSG_RESULT([$WITH_NTFS_3G]) if test "x$WITH_NTFS_3G" = "xyes"; then - AC_DEFINE([WITH_NTFS_3G], [1], [On UNIX, define to 1 to enable support - for NTFS-specific information]) + AC_DEFINE([WITH_NTFS_3G], [1], [Define to 1 to enable NTFS-3g support.]) dnl This effectively checks for NTFS-3g 2011.4.12 or later AC_CHECK_LIB([ntfs-3g], [ntfs_xattr_system_setxattr], [], [AC_MSG_ERROR([Cannot find libntfs-3g version 2011-4-12 - or later. Without libntfs-3g, wimlib cannot include support for - capturing and applying WIMs on NTFS filesystems while preserving - NTFS-specific data such as security descriptors and alternate data - streams. You should either install libntfs-3g, or configure with - --without-ntfs-3g to disable support for these NTFS-specific - features.])]) + or later! Without libntfs-3g, wimlib cannot include support for + capturing or applying a WIM image directly from/to an unmounted NTFS + volume while preserving NTFS-specific data such as security descriptors + and named data streams. Either install libntfs-3g, or configure + --without-ntfs-3g to disable this feature.])]) PKG_CHECK_MODULES([LIBNTFS_3G], [libntfs-3g]) PKGCONFIG_PRIVATE_REQUIRES="$PKGCONFIG_PRIVATE_REQUIRES libntfs-3g" - dnl This checks for a NTFS-3g interface that was changed in the + dnl This checks for an NTFS-3g interface that was changed in the dnl 2013.1.13 release AC_CHECK_DECL([NTFS_MNT_RDONLY], [AC_DEFINE([HAVE_NTFS_MNT_RDONLY], @@ -269,40 +254,37 @@ if test "x$WITH_NTFS_3G" = "xyes"; then fi AM_CONDITIONAL([WITH_NTFS_3G], [test "x$WITH_NTFS_3G" = "xyes"]) -AM_ICONV -if test "x$am_cv_func_iconv" != "xyes"; then - AC_MSG_ERROR([Cannot find the iconv() function. - iconv() is used to convert between encodings of WIM filenames and XML data. - wimlib cannot be compiled without it. iconv() is available in the latest - version of glibc and sometimes in other libraries.]) -fi - AC_MSG_CHECKING([whether to include support for mounting WIMs]) AC_ARG_WITH([fuse], - AS_HELP_STRING([--without-fuse], [build without libfuse. - This will disable the ability to mount - WIM files.]), + [AS_HELP_STRING([--without-fuse], + [build without libfuse. This will disable the ability + to mount WIM images.])], [WITH_FUSE=$withval], - [WITH_FUSE=$WITH_FUSE_DEFAULT] - ) + [WITH_FUSE=$WITH_FUSE_DEFAULT]) + AC_MSG_RESULT([$WITH_FUSE]) if test "x$WITH_FUSE" = "xyes"; then AC_DEFINE([WITH_FUSE], [1], [Define to 1 if using FUSE.]) + AC_CHECK_LIB([fuse], [fuse_main_real], [], + [AC_MSG_ERROR([Cannot find libfuse! + Without libfuse, wimlib cannot include support for mounting WIM images. + Either install libfuse, or configure --without-fuse to disable this + feature.])]) + + AC_CHECK_LIB([rt], [mq_open], [], + [AC_MSG_ERROR([Cannot find librt (the POSIX.1b Realtime + Extensions Library)! wimlib needs this for the POSIX message queue + functions, which are used in the code for mounting WIM images. Recent + versions of glibc include this library. Either install this library, or + configure --without-fuse to disable support for mounting WIM images.])]) + + AC_CHECK_LIB([attr], [getxattr], [], + [AC_MSG_ERROR([Cannot find libattr! + wimlib needs this for the extended attribute functions, which are used + in the code for mounting WIM images. Either install this library, or + configure --without-fuse to disable support for mounting WIM images.])]) - AC_CHECK_LIB([fuse], [fuse_main_real], [have_fuse=true], - [AC_MSG_ERROR([Cannot find libfuse. - Without libfuse, wimlib cannot include support for mounting WIMs. You - should either install libfuse, or configure with --without-fuse to - disable support for mounting WIMs.]) - ]) - AC_CHECK_LIB([rt], [mq_open], [have_posix_mq=true], - [AC_MSG_ERROR([Cannot find librt for POSIX message queue - functions. Without these functions, wimlib cannot include support for - mounting WIMs. You should either update your C library to a recent - version of glibc, or configure with --without-fuse to disable support - for mounting WIMs.]) - ]) PKG_CHECK_MODULES([LIBFUSE], [fuse]) PKGCONFIG_PRIVATE_REQUIRES="$PKGCONFIG_PRIVATE_REQUIRES fuse" PKGCONFIG_PRIVATE_LIBS="$PKGCONFIG_PRIVATE_LIBS -lrt" @@ -310,44 +292,32 @@ if test "x$WITH_FUSE" = "xyes"; then fi AM_CONDITIONAL([WITH_FUSE], [test "x$WITH_FUSE" = "xyes"]) -ENABLE_XATTR=no -AC_ARG_ENABLE([xattr], - [AS_HELP_STRING([--enable-xattr], [Enable the xattr interface to access WIM - alternate data streams (default: autodetect)])], - [ENABLE_XATTR=$enableval], - [if test "x$ENABLE_XATTR_DEFAULT" = "xautodetect"; then - AC_CHECK_FUNC([setxattr], - [AC_CHECK_HEADER([attr/xattr.h], - [ENABLE_XATTR=yes], - [AC_MSG_WARN([Cannot find the "attr/xattr.h" header. You will not be - able to use the xattr interface to access WIM alternate data - streams.])])], - [AC_MSG_WARN([Cannot find the setxattr() function. You will not be - able to use the xattr interface to access WIM alternate data - streams.])]) - fi]) - -if test "x$ENABLE_XATTR" = "xyes"; then - AC_DEFINE([ENABLE_XATTR], [1], [Define to 1 if using the xattr - interface to WIM alternate data streams]) -fi - -AC_MSG_CHECKING([whether to use SSSE3-accelerated SHA1 ]) +AC_MSG_CHECKING([whether to use SSSE3-accelerated SHA-1]) AC_ARG_ENABLE([ssse3-sha1], - AS_HELP_STRING([--enable-ssse3-sha1], [use assembly language implementation - of SHA1 from Intel, accelerated with vector - instructions (SSSE3-enabled CPU required)]), - [ENABLE_SSSE3_SHA1=$enableval], - [ENABLE_SSSE3_SHA1=no] - ) + [AS_HELP_STRING([--enable-ssse3-sha1], + [Include SSSE3-accelerated SHA-1 implementation by + Intel. This implies --without-libcrypto.])], + [ENABLE_SSSE3_SHA1=$enableval], + [ENABLE_SSSE3_SHA1=no]) AC_MSG_RESULT([$ENABLE_SSSE3_SHA1]) if test "x$ENABLE_SSSE3_SHA1" = "xyes"; then AC_DEFINE([ENABLE_SSSE3_SHA1], [1], - [Define to 1 if using vectorized implementation of SHA1]) - SSSE3_SHA1_OBJ=sha1-ssse3.lo - AX_PROG_NASM - AC_SUBST([NASM], [$nasm]) + [Define to 1 if using SSSE3 implementation of SHA-1]) + SSSE3_SHA1_OBJ=src/sha1-ssse3.lo + AC_PROG_NASM + NASM_SYMBOL_PREFIX="" + NASM_WINDOWS_FLAGS= + if test "x$WINDOWS_NATIVE_BUILD" = "xyes"; then + NASM_WINDOWS_FLAGS="-DWIN_ABI" + fi + case "$host_os" in + darwin* | rhapsody* | nextstep* | openstep* | macos*) + NASM_SYMBOL_PREFIX="_" + ;; + esac + AC_SUBST([NASM_WINDOWS_FLAGS], $NASM_WINDOWS_FLAGS) + AC_SUBST([NASM_SYMBOL_PREFIX], $NASM_SYMBOL_PREFIX) else SSSE3_SHA1_OBJ= fi @@ -357,21 +327,23 @@ if test "x$ENABLE_SSSE3_SHA1" = "xyes"; then WITH_LIBCRYPTO=no else AC_ARG_WITH([libcrypto], - AS_HELP_STRING([--without-libcrypto], [build in the SHA1 algorithm, - rather than use external libcrypto from - OpenSSL (default is autodetect)]), + [AS_HELP_STRING([--without-libcrypto], + [build in the SHA-1 algorithm, rather than + use external libcrypto from OpenSSL + (default is autodetect)])], [WITH_LIBCRYPTO=$withval], - [AC_CHECK_LIB([crypto], [SHA1], - [WITH_LIBCRYPTO=yes], - [AC_MSG_WARN([Cannot find libcrypto: using stand-alone SHA1 code instead of OpenSSL]) - WITH_LIBCRYPTO=no - ])]) + [AC_CHECK_LIB([crypto], + [SHA1], + [WITH_LIBCRYPTO=yes], + [AC_MSG_WARN([Cannot find libcrypto: using stand-alone + SHA-1 code instead of OpenSSL]) + WITH_LIBCRYPTO=no])]) fi -AC_MSG_CHECKING([whether to use SHA1 function from system libcrypto]) +AC_MSG_CHECKING([whether to use SHA-1 implementation from system libcrypto]) AC_MSG_RESULT([$WITH_LIBCRYPTO]) if test "x$WITH_LIBCRYPTO" = "xyes" -a "x$ENABLE_SSSE3_SHA1" = "xno"; then - AC_DEFINE([WITH_LIBCRYPTO], [1], [Define to 1 if using libcrypto SHA1]) + AC_DEFINE([WITH_LIBCRYPTO], [1], [Define to 1 if using libcrypto SHA-1]) PKG_CHECK_MODULES([LIBCRYPTO], [libcrypto]) PKGCONFIG_PRIVATE_REQUIRES="$PKGCONFIG_PRIVATE_REQUIRES libcrypto" fi