btrfs-progs: check: Move imode_to_type function to check/common.h
[platform/upstream/btrfs-progs.git] / configure.ac
index c79472c..3afcdb4 100644 (file)
@@ -1,5 +1,5 @@
 AC_INIT([btrfs-progs],
-       m4_esyscmd([./version.sh --configure]),
+       m4_chomp(m4_include([VERSION])),
        [linux-btrfs@vger.kernel.org],,
        [http://btrfs.wiki.kernel.org])
 
@@ -10,7 +10,7 @@ fi
 dnl library version
 LIBBTRFS_MAJOR=0
 LIBBTRFS_MINOR=1
-LIBBTRFS_PATCHLEVEL=1
+LIBBTRFS_PATCHLEVEL=2
 
 CFLAGS=${CFLAGS:-"-g -O1 -Wall -D_FORTIFY_SOURCE=2"}
 AC_SUBST([CFLAGS])
@@ -104,15 +104,69 @@ AC_ARG_ENABLE([convert],
 AS_IF([test "x$enable_convert" = xyes], [DISABLE_BTRFSCONVERT=0], [DISABLE_BTRFSCONVERT=1])
 AC_SUBST([DISABLE_BTRFSCONVERT])
 
+AC_ARG_WITH([convert],
+           AS_HELP_STRING([[[]--with-convert[[=auto]]]], [built-in filesystems for convert (default: auto)
+supported (comma separated list): ext2,reiserfs]),
+  [], [with_convert=auto]
+)
+
+if test "$with_convert" = "yes"; then
+       with_convert=auto
+fi
+
+if test "$with_convert" = "no"; then
+       with_convert=
+fi
+
+convertfs=
+BTRFSCONVERT_EXT2=0
+BTRFSCONVERT_REISERFS=0
 if test "x$enable_convert" = xyes; then
-       PKG_CHECK_MODULES(EXT2FS, [ext2fs >= 1.42],,
-               [PKG_CHECK_MODULES(EXT2FS, [ext2fs],
-                       [AC_DEFINE([HAVE_OLD_E2FSPROGS], [1],
-                                 [E2fsprogs does not support BIGALLOC])]
-                       )])
-       PKG_CHECK_MODULES(COM_ERR, [com_err])
+       if test "x$with_convert" = "xauto" || echo "$with_convert" | grep -q "ext2"; then
+               PKG_CHECK_MODULES(EXT2FS, [ext2fs >= 1.42],,
+                       [PKG_CHECK_MODULES(EXT2FS, [ext2fs],
+                               [AC_DEFINE([HAVE_OLD_E2FSPROGS], [1],
+                                         [E2fsprogs does not support BIGALLOC])]
+                               )])
+               PKG_CHECK_MODULES(COM_ERR, [com_err])
+               convertfs="${convertfs:+$convertfs,}ext2"
+               BTRFSCONVERT_EXT2=1
+       fi
+       if test "x$with_convert" = "xauto"; then
+               PKG_CHECK_MODULES(REISERFS, [reiserfscore >= 3.6.27],
+                                 [BTRFSCONVERT_REISERFS=1],
+                                 [BTRFSCONVERT_REISERFS=0])
+       elif echo "$with_convert" | grep -q "reiserfs"; then
+               PKG_CHECK_MODULES(REISERFS, [reiserfscore >= 3.6.27],
+                                 [BTRFSCONVERT_REISERFS=1],[])
+       fi
+       if test "$BTRFSCONVERT_REISERFS" = 1; then
+               convertfs="${convertfs:+$convertfs,}reiserfs"
+       fi
+fi
+AC_SUBST([BTRFSCONVERT_EXT2])
+AC_SUBST([BTRFSCONVERT_REISERFS])
+
+# catch typos
+tmp=$(echo "$with_convert" | sed -e 's/auto//' | sed -e 's/ext2//' | sed -e 's/reiserfs//' | sed -e 's/,\+//')
+if ! test "x$tmp" = "x"; then
+       AC_MSG_ERROR([unknown tokens for --with-convert: $tmp])
+fi
+
+if test "$DISABLE_BTRFSCONVERT" = 0 && test "x$convertfs" = "x"; then
+       AC_MSG_ERROR([no filesystems for convert, use --disable-convert instead])
 fi
 
+HAVE_OWN_FIEMAP_EXTENT_SHARED_DEFINE=0
+AX_CHECK_DEFINE([linux/fiemap.h], [FIEMAP_EXTENT_SHARED], [],
+               [HAVE_OWN_FIEMAP_EXTENT_SHARED_DEFINE=1
+                AC_MSG_WARN([no definition of FIEMAP_EXTENT_SHARED found, probably old kernel, will use own defintion, 'btrfs fi du' might report wrong numbers])])
+
+if test "x$HAVE_OWN_FIEMAP_EXTENT_SHARED_DEFINE" == "x1"; then
+AC_DEFINE([HAVE_OWN_FIEMAP_EXTENT_SHARED_DEFINE], [1], [We defined FIEMAP_EXTENT_SHARED])
+else
+AC_DEFINE([HAVE_OWN_FIEMAP_EXTENT_SHARED_DEFINE], [0], [We did not define FIEMAP_EXTENT_SHARED])
+fi
 
 dnl Define <NAME>_LIBS= and <NAME>_CFLAGS= by pkg-config
 dnl
@@ -128,7 +182,26 @@ PKG_STATIC(UUID_LIBS_STATIC, [uuid])
 PKG_CHECK_MODULES(ZLIB, [zlib])
 PKG_STATIC(ZLIB_LIBS_STATIC, [zlib])
 
-UDEVDIR="$(pkg-config udev --variable=udevdir)"
+AC_ARG_ENABLE([zstd],
+       AS_HELP_STRING([--disable-zstd], [build without zstd support]),
+       [], [enable_zstd=yes]
+)
+
+if test "x$enable_zstd" = xyes; then
+       PKG_CHECK_MODULES(ZSTD, [libzstd >= 1.0.0])
+       PKG_STATIC(ZSTD_LIBS_STATIC, [libzstd])
+fi
+
+AS_IF([test "x$enable_zstd" = xyes], [BTRFSRESTORE_ZSTD=1], [BTRFSRESTORE_ZSTD=0])
+AC_SUBST(BTRFSRESTORE_ZSTD)
+
+# udev v190 introduced the btrfs builtin and a udev rule to use it.
+# Our udev rule gives us the friendly dm names but isn't required (or valid)
+# on earlier releases.
+UDEVDIR=
+if pkg-config udev --atleast-version 190; then
+       UDEVDIR="$(pkg-config udev --variable=udevdir)"
+fi
 AC_SUBST(UDEVDIR)
 
 dnl lzo library does not provide pkg-config, let use classic way
@@ -151,7 +224,7 @@ AC_SUBST([LIBBTRFS_PATCHLEVEL])
 AC_CONFIG_HEADERS([config.h])
 
 AC_CONFIG_FILES([
-Makefile
+Makefile.inc
 Documentation/Makefile
 version.h
 ])
@@ -161,21 +234,21 @@ AC_OUTPUT
 AC_MSG_RESULT([
        ${PACKAGE_NAME} ${PACKAGE_VERSION}
 
-       prefix:            ${prefix}
-       exec prefix:       ${exec_prefix}
+       prefix:             ${prefix}
+       exec prefix:        ${exec_prefix}
 
-       bindir:            ${bindir}
-       libdir:            ${libdir}
-       includedir:        ${includedir}
+       bindir:             ${bindir}
+       libdir:             ${libdir}
+       includedir:         ${includedir}
 
-       compiler:          ${CC}
-       cflags:            ${CFLAGS}
-       ldflags:           ${LDFLAGS}
+       compiler:           ${CC}
+       cflags:             ${CFLAGS}
+       ldflags:            ${LDFLAGS}
 
-       documentation:     ${enable_documentation}
-       backtrace support: ${enable_backtrace}
-       btrfs-convert:     ${enable_convert}
+       documentation:      ${enable_documentation}
+       backtrace support:  ${enable_backtrace}
+       btrfs-convert:      ${enable_convert} ${convertfs:+($convertfs)}
+       btrfs-restore zstd: ${enable_zstd}
 
        Type 'make' to compile.
 ])
-