btrfs-progs: build: extend convert options
authorDavid Sterba <dsterba@suse.com>
Tue, 23 Aug 2016 15:21:30 +0000 (17:21 +0200)
committerDavid Sterba <dsterba@suse.com>
Wed, 24 Aug 2016 12:37:36 +0000 (14:37 +0200)
Add --with-convert[=VALUE] option to configure. Accepts ext2, auto, yes,
or no, but will be extended to more in the future. The configure-time
defines are not used in the code, ext2 is built-in unconditionally.

Signed-off-by: David Sterba <dsterba@suse.com>
Makefile.in
btrfs-convert.c
configure.ac

index 1928a4e..5c0c0d0 100644 (file)
@@ -40,6 +40,7 @@ RMDIR = @RMDIR@
 INSTALL = @INSTALL@
 DISABLE_DOCUMENTATION = @DISABLE_DOCUMENTATION@
 DISABLE_BTRFSCONVERT = @DISABLE_BTRFSCONVERT@
+BTRFSCONVERT_EXT2 = @BTRFSCONVERT_EXT2@
 
 EXTRA_CFLAGS :=
 EXTRA_LDFLAGS :=
@@ -166,6 +167,7 @@ endif
 # external libs required by various binaries; for btrfs-foo,
 # specify btrfs_foo_libs = <list of libs>; see $($(subst...)) rules below
 btrfs_convert_libs = @EXT2FS_LIBS@ @COM_ERR_LIBS@
+btrfs_convert_cflags = -DBTRFSCONVERT_EXT2=$(BTRFSCONVERT_EXT2)
 btrfs_fragments_libs = -lgd -lpng -ljpeg -lfreetype
 btrfs_debug_tree_objects = cmds-inspect-dump-tree.o
 btrfs_show_super_objects = cmds-inspect-dump-super.o
index b34a413..17ea368 100644 (file)
@@ -37,6 +37,7 @@
 #include "crc32c.h"
 #include "utils.h"
 #include "task-utils.h"
+
 #include <ext2fs/ext2_fs.h>
 #include <ext2fs/ext2fs.h>
 #include <ext2fs/ext2_ext_attr.h>
index 901d434..97e89f2 100644 (file)
@@ -104,13 +104,44 @@ 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]),
+  [], [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
 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
+fi
+AC_SUBST([BTRFSCONVERT_EXT2])
+
+# catch typos
+tmp=$(echo "$with_convert" | sed -e 's/auto//' | sed -e 's/ext2//' | 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
 
 AX_CHECK_DEFINE([linux/fiemap.h], [FIEMAP_EXTENT_SHARED], [],
@@ -176,7 +207,7 @@ AC_MSG_RESULT([
 
        documentation:     ${enable_documentation}
        backtrace support: ${enable_backtrace}
-       btrfs-convert:     ${enable_convert}
+       btrfs-convert:     ${enable_convert} ${convertfs:+($convertfs)}
 
        Type 'make' to compile.
 ])