193 files changed, 80411 insertions, 44563 deletions
diff --git a/configure.ac b/configure.ac index 2b578af..830c5fb 100755 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,8 @@ # configure.ac - Source file to generate "./configure" to prepare package for # compilation. # -# Copyright (c) 2000-2006 Anton Altaparmakov +# Copyright (c) 2000-2013 Anton Altaparmakov +# Copyright (c) 2003 Jan Kratochvil # Copyright (c) 2005-2009 Szabolcs Szakacsits # Copyright (C) 2007-2008 Alon Bar-Lev # @@ -23,8 +24,8 @@ # Autoconf AC_PREREQ(2.59) -AC_INIT([ntfs-3g],[2010.5.16],[ntfs-3g-devel@lists.sf.net]) -LIBNTFS_3G_VERSION="76" +AC_INIT([ntfs-3g],[2014.2.15],[ntfs-3g-devel@lists.sf.net]) +LIBNTFS_3G_VERSION="85" AC_CONFIG_SRCDIR([src/ntfs-3g.c]) # Environment @@ -114,6 +115,13 @@ AC_ARG_ENABLE( ) AC_ARG_ENABLE( + [xattr-mappings], + [AS_HELP_STRING([--enable-xattr-mappings],[enable system extended attributes mappings])], + , + [enable_xattr_mappings="no"] +) + +AC_ARG_ENABLE( [device-default-io-ops], [AS_HELP_STRING([--disable-device-default-io-ops],[install default IO ops])], , @@ -121,6 +129,35 @@ AC_ARG_ENABLE( ) AC_ARG_ENABLE( + [ntfs-3g], + [AS_HELP_STRING([--disable-ntfs-3g],[disable the ntfs-3g FUSE driver])], + , + [enable_ntfs_3g="yes"] +) + +AC_ARG_ENABLE( + [ntfsprogs], + [AS_HELP_STRING([--disable-ntfsprogs],[disable ntfsprogs utilities + (default=no)])], + , + [enable_ntfsprogs="yes"] +) + +AC_ARG_ENABLE(crypto, + AS_HELP_STRING(--enable-crypto,enable crypto related code and utilities + (default=no)), , + enable_crypto=no +) + +AC_ARG_ENABLE( + [extras], + [AS_HELP_STRING([--enable-extras],[enable extra ntfsprogs utilities + (default=no)])], + , + [enable_extras="no"] +) + +AC_ARG_ENABLE( [nfconv], [AS_HELP_STRING([--disable-nfconv],[disable the 'nfconv' patch, which adds support for Unicode normalization form conversion when built on Mac OS X @<:@default=enabled for Mac OS X@:>@])], [enable_nfconv="no"], @@ -146,6 +183,9 @@ ifdef( [AC_PROG_LIBTOOL] ) +AC_PROG_INSTALL +PKG_PROG_PKG_CONFIG + AC_PATH_PROG([MV], [mv]) AC_PATH_PROG([RM], [rm]) AC_PATH_PROG([SED], [sed]) @@ -170,27 +210,31 @@ case "${target}" in ;; esac -AC_MSG_CHECKING([fuse compatibility]) -case "${target_os}" in -linux*) - AC_ARG_WITH( - [fuse], - [AS_HELP_STRING([--with-fuse=<internal|external>],[Select FUSE library: internal or external @<:@default=internal@:>@])], - , - [with_fuse="internal"] - ) - ;; -darwin*|netbsd*|solaris*) - with_fuse="external" - ;; -freebsd*) - AC_MSG_ERROR([Please see FreeBSD support at http://www.freshports.org/sysutils/fusefs-ntfs]) - ;; -*) - AC_MSG_ERROR([ntfs-3g can be built for Linux, FreeBSD, Mac OS X, NetBSD, and Solaris only.]) - ;; -esac -AC_MSG_RESULT([${with_fuse}]) +if test "x${enable_ntfs_3g}" = "xyes"; then + AC_MSG_CHECKING([fuse compatibility]) + case "${target_os}" in + linux*|solaris*) + AC_ARG_WITH( + [fuse], + [AS_HELP_STRING([--with-fuse=<internal|external>],[Select FUSE library: internal or external @<:@default=internal@:>@])], + , + [with_fuse="internal"] + ) + ;; + darwin*|netbsd*|kfreebsd*-gnu) + with_fuse="external" + ;; + freebsd*) + AC_MSG_ERROR([Please see FreeBSD support at http://www.freshports.org/sysutils/fusefs-ntfs]) + ;; + *) + AC_MSG_ERROR([ntfs-3g can be built for Linux, FreeBSD, Mac OS X, NetBSD, and Solaris only.]) + ;; + esac + AC_MSG_RESULT([${with_fuse}]) +else + with_fuse="none" +fi case "${target_os}" in solaris*) @@ -230,7 +274,28 @@ if test "${with_fuse}" = "internal"; then [1], [Define to 1 if using internal fuse] ) -else + + AC_MSG_CHECKING([Solaris OS]) + AC_LANG_PUSH([C]) + AC_COMPILE_IFELSE( + [ + AC_LANG_SOURCE( + [[#if !((defined(sun) || defined(__sun)) && (defined(__SVR4) || defined(__svr4__)))]] + [[#error "Not a Solaris system."]] + [[#endif]] + ) + ], + [ + AC_MSG_RESULT([yes]) + LIBFUSE_LITE_CFLAGS="${LIBFUSE_LITE_CFLAGS} -std=c99 -D__SOLARIS__ -D_XOPEN_SOURCE=600 -D__EXTENSIONS__" + LIBFUSE_LITE_LIBS="${LIBFUSE_LITE_LIBS} -lxnet" + ], + [ + AC_MSG_RESULT([no]) + ] + ) + AC_LANG_POP([C]) +elif test "${with_fuse}" = "external"; then if test -z "$PKG_CONFIG"; then AC_PATH_PROG(PKG_CONFIG, pkg-config, no) fi @@ -249,15 +314,156 @@ else FUSE_LIB_PATH=`$PKG_CONFIG --libs-only-L fuse | sed -e 's,/[/]*,/,g' -e 's,[ ]*$,,'` fi +# Autodetect whether we can build crypto stuff or not. +compile_crypto=false +if test "$enable_crypto" != "no"; then + have_libgcrypt=false + AM_PATH_LIBGCRYPT(1.2.2, [ have_libgcrypt=true ], + [ + if test "$enable_crypto" = "yes"; then + AC_MSG_ERROR([ntfsprogs crypto code requires the gcrypt library.]) + else + AC_MSG_WARN([ntfsprogs crypto code requires the gcrypt library.]) + fi + ]) + have_libgnutls=false + PKG_CHECK_MODULES(GNUTLS, gnutls >= 1.4.4, [ have_libgnutls=true ], + if test "$enable_crypto" = "yes"; then + AC_MSG_ERROR([ntfsprogs crypto code requires the gnutls library.]) + else + AC_MSG_WARN([ntfsprogs crypto code requires the gnutls library.]) + fi + ) + if test "$have_libgcrypt" = "true"; then + if test "$have_libgnutls" = "true"; then + compile_crypto=true + AC_DEFINE([ENABLE_CRYPTO], 1, + [Define this to 1 if you want to enable support of + encrypted files in libntfs and utilities.]) + fi + fi +fi +AM_CONDITIONAL(ENABLE_CRYPTO, $compile_crypto) + +# add --with-extra-includes and --with-extra-libs switch to ./configure +all_libraries="$all_libraries $USER_LDFLAGS" +all_includes="$all_includes $USER_INCLUDES" +AC_SUBST(all_includes) +AC_SUBST(all_libraries) + +# Specify support for generating DCE compliant UUIDs (aka GUIDs). We check if +# uuid/uuid.h header is present and the uuid library is present that goes with +# it and then check if uuid_generate() is present and usable. +# +# DCE UUIDs are enabled by default and can be disabled with the --disable-uuid +# option to the configure script. +AC_ARG_WITH(uuid, [ + --with-uuid@<:@=PFX@:>@ generate DCE compliant UUIDs, with optional prefix + to uuid library and headers @<:@default=detect@:>@ + --without-uuid do not generate DCE compliant UUIDs], + if test "$with_uuid" = "yes"; then + extrapath=default + elif test "$with_uuid" = "no"; then + extrapath= + else + extrapath=$with_uuid + fi, + extrapath=default +) +if test "x$extrapath" != "x"; then + if test "x$extrapath" != "xdefault"; then + MKNTFS_CPPFLAGS="$MKNTFS_CPPFLAGS -I$extrapath/include" + MKNTFS_LIBS="$MKNTFS_LIBS -L$extrapath/lib" + fi + + search_for_luuid="yes" + AC_CHECK_HEADER([uuid/uuid.h], + [], + [ + AC_MSG_WARN([ntfsprogs DCE compliant UUID generation code requires the uuid library.]) + search_for_luuid="no" + ], + ) + + if test "x$search_for_luuid" != "xno"; then + # Look for uuid_generate in the standard C library. + AC_CHECK_FUNC([uuid_generate], + [ + AC_DEFINE([ENABLE_UUID], 1, + [Define this to 1 if you want to enable + generation of DCE compliant UUIDs.]) + search_for_luuid="no" + ], + [], + ) + fi + + if test "x$search_for_luuid" != "xno"; then + # Look for uuid_generate in the 'uuid' library. + AC_CHECK_LIB([uuid], [uuid_generate], + [ + AC_DEFINE([ENABLE_UUID], 1, + [Define this to 1 if you want to enable + generation of DCE compliant UUIDs.]) + MKNTFS_LIBS="$MKNTFS_LIBS -luuid" + search_for_luuid="no" + ], + [], + ) + fi + + if test "x$search_for_luuid" != "xno"; then + AC_MSG_WARN([ntfsprogs DCE compliant UUID generation code requires the uuid library.]) + fi +fi + +# Specify support for obtaining the correct BIOS legacy geometry needed for +# Windows to boot in CHS mode. We check if hd.h header is present and the hd +# library is present that goes with it and then check if the hd_list() function +# is present and usable. +# +# Using the hd library is enabled by default and can be disabled with the +# --disable-hd option to the configure script. +AC_ARG_WITH(hd, [ + --with-hd@<:@=PFX@:>@ use Windows compliant disk geometry, with optional + prefix to hd library and headers @<:@default=detect@:>@ + --without-hd do not use Windows compliant disk geometry], + if test "$with_hd" = "yes"; then + extrapath2=default + elif test "$with_hd" = "no"; then + extrapath2= + else + extrapath2=$with_hd + fi, + extrapath2=default +) +if test "x$extrapath2" != "x"; then + if test "x$extrapath2" != "xdefault"; then + LIBNTFS_CPPFLAGS="$LIBNTFS_CPPFLAGS -I$extrapath2/include" + LIBNTFS_LIBS="$LIBNTFS_LIBS -L$extrapath2/lib" + fi + AC_CHECK_HEADER([hd.h], + AC_CHECK_LIB([hd], [hd_list], + AC_DEFINE([ENABLE_HD], 1, + [Define this to 1 if you want to enable use of Windows + compliant disk geometry.]) + LIBNTFS_LIBS="$LIBNTFS_LIBS -lhd" + NTFSPROGS_STATIC_LIBS="$NTFSPROGS_STATIC_LIBS -lhd", + AC_MSG_WARN([ntfsprogs Windows compliant geometry code requires the hd library.]), + ), + AC_MSG_WARN([ntfsprogs Windows compliant geometry code requires the hd library.]), + ) +fi + # Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS([ctype.h fcntl.h libgen.h libintl.h limits.h locale.h \ mntent.h stddef.h stdint.h stdlib.h stdio.h stdarg.h string.h \ strings.h errno.h time.h unistd.h utime.h wchar.h getopt.h features.h \ - endian.h byteswap.h sys/byteorder.h sys/endian.h sys/param.h \ - sys/ioctl.h sys/mkdev.h sys/mount.h sys/stat.h sys/types.h sys/vfs.h \ - sys/statvfs.h sys/sysmacros.h linux/major.h linux/fd.h linux/hdreg.h \ - machine/endian.h windows.h syslog.h]) + regex.h endian.h byteswap.h sys/byteorder.h sys/disk.h sys/endian.h \ + sys/param.h sys/ioctl.h sys/mkdev.h sys/mount.h sys/stat.h sys/types.h \ + sys/vfs.h sys/statvfs.h sys/sysmacros.h linux/major.h linux/fd.h \ + linux/hdreg.h machine/endian.h windows.h syslog.h pwd.h malloc.h]) # Checks for typedefs, structures, and compiler characteristics. AC_HEADER_STDBOOL @@ -273,6 +479,7 @@ AC_C_BIGENDIAN( ] , ) +AC_C_CONST AC_C_INLINE AC_TYPE_OFF_T AC_TYPE_SIZE_T @@ -314,7 +521,7 @@ AC_CHECK_FUNCS([ \ atexit basename daemon dup2 fdatasync ffs getopt_long hasmntopt \ mbsinit memmove memset realpath regcomp setlocale setxattr \ strcasecmp strchr strdup strerror strnlen strsep strtol strtoul \ - sysconf utime utimensat gettimeofday clock_gettime fork \ + sysconf utime utimensat gettimeofday clock_gettime fork memcpy random snprintf \ ]) AC_SYS_LARGEFILE @@ -349,6 +556,7 @@ test "${enable_device_default_io_ops}" = "no" && AC_DEFINE( test "${enable_mtab}" = "no" && AC_DEFINE([IGNORE_MTAB], [1], [Don't update /etc/mtab]) test "${enable_posix_acls}" != "no" && AC_DEFINE([POSIXACLS], [1], [POSIX ACL support]) +test "${enable_xattr_mappings}" != "no" && AC_DEFINE([XATTR_MAPPINGS], [1], [system extended attributes mappings]) test "${enable_really_static}" = "yes" && enable_library="no" test "${enable_library}" = "no" && enable_ldconfig="no" @@ -380,7 +588,13 @@ AC_SUBST([rootbindir]) AC_SUBST([rootsbindir]) AC_SUBST([rootlibdir]) AC_SUBST([LIBNTFS_3G_VERSION]) +AC_SUBST([LIBFUSE_LITE_CFLAGS]) AC_SUBST([LIBFUSE_LITE_LIBS]) +AC_SUBST([MKNTFS_CPPFLAGS]) +AC_SUBST([MKNTFS_LIBS]) +AC_SUBST([LIBNTFS_CPPFLAGS]) +AC_SUBST([LIBNTFS_LIBS]) +AC_SUBST([NTFSPROGS_STATIC_LIBS]) AC_SUBST([OUTPUT_FORMAT]) AM_CONDITIONAL([FUSE_INTERNAL], [test "${with_fuse}" = "internal"]) AM_CONDITIONAL([GENERATE_LDSCRIPT], [test "${enable_ldscript}" = "yes"]) @@ -390,6 +604,9 @@ AM_CONDITIONAL([RUN_LDCONFIG], [test "${enable_ldconfig}" = "yes"]) AM_CONDITIONAL([REALLYSTATIC], [test "${enable_really_static}" = "yes"]) AM_CONDITIONAL([INSTALL_LIBRARY], [test "${enable_library}" = "yes"]) AM_CONDITIONAL([ENABLE_MOUNT_HELPER], [test "${enable_mount_helper}" = "yes"]) +AM_CONDITIONAL([ENABLE_NTFS_3G], [test "${enable_ntfs_3g}" = "yes"]) +AM_CONDITIONAL([ENABLE_NTFSPROGS], [test "${enable_ntfsprogs}" = "yes"]) +AM_CONDITIONAL([ENABLE_EXTRAS], [test "${enable_extras}" = "yes"]) # workaround for <autoconf-2.60 if test -z "${docdir}"; then @@ -412,6 +629,20 @@ AC_CONFIG_FILES([ libntfs-3g/Makefile libntfs-3g/libntfs-3g.pc libntfs-3g/libntfs-3g.script.so + ntfsprogs/Makefile + ntfsprogs/mkntfs.8 + ntfsprogs/ntfscat.8 + ntfsprogs/ntfsclone.8 + ntfsprogs/ntfscluster.8 + ntfsprogs/ntfscmp.8 + ntfsprogs/ntfscp.8 + ntfsprogs/ntfsfix.8 + ntfsprogs/ntfsinfo.8 + ntfsprogs/ntfslabel.8 + ntfsprogs/ntfsls.8 + ntfsprogs/ntfsprogs.8 + ntfsprogs/ntfsresize.8 + ntfsprogs/ntfsundelete.8 src/Makefile src/ntfs-3g.8 src/ntfs-3g.probe.8 |