]> git.ipfire.org Git - thirdparty/e2fsprogs.git/blobdiff - configure.ac
libext2fs: fix potential divide by zero bug caused by a lxcfs bug
[thirdparty/e2fsprogs.git] / configure.ac
index 20acd7c9c6767909d7ca7123377bb5d65cc66426..e00e8d0e0fb0a98b9408161da02077dac13411a7 100644 (file)
@@ -365,10 +365,10 @@ CFLAGS_STLIB="${CFLAGS_STLIB:-$CFLAGS}"
 LDFLAGS_SHLIB=${LDFLAGS_SHLIB:-$LDFLAGS}
 LDFLAGS_STATIC=${LDFLAGS_STATIC:-$LDFLAGS}
 AC_ARG_ENABLE([hardening],
-AS_HELP_STRING([--enable-hardening],[build for coverage testing using gcov]),
+AS_HELP_STRING([--enable-hardening],[build with hardening flags such as fortify]),
 if test "$enableval" = "yes"
 then
-       HARDEN_CFLAGS="-D_FORTIFY_SOURCE=2 -fstack-protector-strong"
+       HARDEN_CFLAGS="-D_FORTIFY_SOURCE=3 -fstack-protector-strong"
        HARDEN_LDFLAGS=["-Wl,-z,relro -Wl,-z,now"]
        CFLAGS="$CFLAGS $HARDEN_CFLAGS -fPIE"
        CFLAGS_SHLIB="$CFLAGS_SHLIB $HARDEN_CFLAGS"
@@ -1299,12 +1299,50 @@ if test "$ac_cv_func_dlopen" = yes ; then
 fi
 AC_SUBST(MAGIC_LIB)
 dnl
+dnl libarchive
+dnl
+AC_ARG_WITH([libarchive],
+AS_HELP_STRING([--without-libarchive],[disable use of libarchive]),
+[if test "$withval" = "no"
+then
+       try_libarchive=""
+       AC_MSG_RESULT([Disabling libarchive support])
+elif test "$withval" = "direct"
+then
+       try_libarchive="direct"
+       AC_MSG_RESULT([Testing for libarchive support (forced direct link)])
+else
+       try_libarchive="yes"
+       AC_MSG_RESULT([Testing for libarchive support (with dlopen)])
+fi]
+,
+try_libarchive="yes"
+AC_MSG_RESULT([Try testing for libarchive support (with dlopen) by default])
+)
+ARCHIVE_LIB=
+if test -n "$try_libarchive"
+then
+    AC_CHECK_LIB(archive, archive_read_new, [ARCHIVE_LIB=-larchive
+    AC_CHECK_HEADERS([archive.h])])
+    if test "$ac_cv_func_dlopen" = yes -a "$try_libarchive" != "direct"; then
+        ARCHIVE_LIB=$DLOPEN_LIB
+       AC_DEFINE(CONFIG_DLOPEN_LIBARCHIVE, 1,
+               [Define to 1 if using dlopen to access libarchive])
+
+    fi
+    if test "$ac_cv_header_archive_h" != "yes"
+    then
+        ARCHIVE_LIB=
+    fi
+fi
+AC_SUBST(ARCHIVE_LIB)
+dnl
 dnl Check to see if librt is required for clock_gettime() (glibc < 2.17)
 dnl
 AC_CHECK_LIB(rt, clock_gettime, [CLOCK_GETTIME_LIB=-lrt])
 AC_SUBST(CLOCK_GETTIME_LIB)
 dnl
-dnl Check to see if the FUSE library is -lfuse or -losxfuse
+dnl Check to see if the FUSE library is -lfuse3, -losxfuse, or -lfuse
 dnl
 FUSE_CMT=
 FUSE_LIB=
@@ -1316,27 +1354,35 @@ then
        FUSE_CMT="#"
        AC_MSG_RESULT([Disabling fuse2fs])
 else
-       AC_CHECK_HEADERS([pthread.h fuse.h], [],
-[AC_MSG_FAILURE([Cannot find fuse2fs headers.])],
-[#define _FILE_OFFSET_BITS     64
-#define FUSE_USE_VERSION 29])
-
        AC_PREPROC_IFELSE(
-[AC_LANG_PROGRAM([[#define FUSE_USE_VERSION 29
-#ifdef __linux__
+[AC_LANG_PROGRAM([[#ifdef __linux__
 #include <linux/fs.h>
 #include <linux/falloc.h>
 #include <linux/xattr.h>
 #endif
 ]], [])], [], [AC_MSG_FAILURE([Cannot find fuse2fs Linux headers.])])
 
-       AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
-               [AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse],
-                             [AC_MSG_FAILURE([Cannot find fuse library.])])])
+       PKG_CHECK_MODULES([fuse3], [fuse3],
+         [
+               FUSE_LIB=-lfuse3
+         ], [
+               AC_CHECK_HEADERS([pthread.h fuse.h], [],
+                       [AC_MSG_FAILURE([Cannot find fuse2fs headers.])],
+[#define _FILE_OFFSET_BITS     64
+#define FUSE_USE_VERSION 29])
+
+               AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
+                       [AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse],
+                               [AC_MSG_FAILURE([Cannot find fuse library.])])])
+         ])
        AC_MSG_RESULT([Enabling fuse2fs])
 fi
 ,
-AC_CHECK_HEADERS([pthread.h fuse.h], [], [FUSE_CMT="#"],
+PKG_CHECK_MODULES([fuse3], [fuse3],
+  [
+       FUSE_LIB=-lfuse3
+  ], [
+       AC_CHECK_HEADERS([pthread.h fuse.h], [], [FUSE_CMT="#"], 
 [#define _FILE_OFFSET_BITS     64
 #define FUSE_USE_VERSION 29
 #ifdef __linux__
@@ -1344,11 +1390,13 @@ AC_CHECK_HEADERS([pthread.h fuse.h], [], [FUSE_CMT="#"],
 # include <linux/falloc.h>
 # include <linux/xattr.h>
 #endif])
-if test -z "$FUSE_CMT"
-then
-       AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
-[AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse], [FUSE_CMT="#"])])
-fi
+       if test -z "$FUSE_CMT"
+       then
+               AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
+                       [AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse],
+                               [FUSE_CMT="#"])])
+       fi
+  ])
 if test -z "$FUSE_CMT"
 then
        AC_MSG_RESULT([Enabling fuse2fs by default.])
@@ -1356,6 +1404,29 @@ fi
 )
 AC_SUBST(FUSE_LIB)
 AC_SUBST(FUSE_CMT)
+if test "$FUSE_LIB" = "-lfuse3"
+then
+       FUSE_USE_VERSION=35
+       CFLAGS="$CFLAGS $fuse3_CFLAGS"
+       LDFLAGS="$LDFLAGS $fuse3_LDFLAGS"
+       AC_CHECK_HEADERS([pthread.h fuse.h], [],
+               [AC_MSG_FAILURE([Cannot find fuse3 fuse2fs headers.])],
+[#define _FILE_OFFSET_BITS     64
+#define FUSE_USE_VERSION 35
+#ifdef __linux__
+#include <linux/fs.h>
+#include <linux/falloc.h>
+#include <linux/xattr.h>
+#endif])
+elif test -n "$FUSE_LIB"
+then
+       FUSE_USE_VERSION=29
+fi
+if test -n "$FUSE_USE_VERSION"
+then
+       AC_DEFINE_UNQUOTED(FUSE_USE_VERSION, $FUSE_USE_VERSION,
+               [Define to the version of FUSE to use])
+fi
 dnl
 dnl See if optreset exists
 dnl