diff --git a/Makefile b/Makefile index 9b7c8d32..e162ebe0 100644 --- a/Makefile +++ b/Makefile @@ -335,7 +335,7 @@ endif btrfs_convert_cflags = -DBTRFSCONVERT_EXT2=$(BTRFSCONVERT_EXT2) btrfs_convert_cflags += -DBTRFSCONVERT_REISERFS=$(BTRFSCONVERT_REISERFS) btrfs_fragments_libs = -lgd -lpng -ljpeg -lfreetype -cmds_restore_cflags = -DBTRFSRESTORE_ZSTD=$(BTRFSRESTORE_ZSTD) +cmds_restore_cflags = -DBTRFSRESTORE_LZO=$(BTRFSRESTORE_LZO) -DBTRFSRESTORE_ZSTD=$(BTRFSRESTORE_ZSTD) ifeq ($(CRYPTOPROVIDER_BUILTIN),1) CRYPTO_OBJECTS = crypto/sha224-256.o crypto/blake2b-ref.o diff --git a/Makefile.inc.in b/Makefile.inc.in index c995aef9..385b7ae1 100644 --- a/Makefile.inc.in +++ b/Makefile.inc.in @@ -16,6 +16,7 @@ BUILD_PROGRAMS = @BUILD_PROGRAMS@ BUILD_SHARED_LIBRARIES = @BUILD_SHARED_LIBRARIES@ BUILD_STATIC_LIBRARIES = @BUILD_STATIC_LIBRARIES@ BTRFSCONVERT_EXT2 = @BTRFSCONVERT_EXT2@ +BTRFSRESTORE_LZO = @BTRFSRESTORE_LZO@ BTRFSCONVERT_REISERFS = @BTRFSCONVERT_REISERFS@ BTRFSRESTORE_ZSTD = @BTRFSRESTORE_ZSTD@ PYTHON_BINDINGS = @PYTHON_BINDINGS@ diff --git a/cmds/restore.c b/cmds/restore.c index 5923d571..f1bc8a46 100644 --- a/cmds/restore.c +++ b/cmds/restore.c @@ -25,8 +25,10 @@ #include #include #include +#if BTRFSRESTORE_LZO #include #include +#endif #include #if BTRFSRESTORE_ZSTD #include @@ -98,6 +100,10 @@ static inline size_t read_compress_length(unsigned char *buf) static int decompress_lzo(struct btrfs_root *root, unsigned char *inbuf, char *outbuf, u64 compress_len, u64 *decompress_len) { +#if !BTRFSRESTORE_LZO + error("btrfs-restore not compiled with lzo support"); + return -1; +#else size_t new_len; size_t in_len; size_t out_len = 0; @@ -156,6 +162,7 @@ static int decompress_lzo(struct btrfs_root *root, unsigned char *inbuf, *decompress_len = out_len; return 0; +#endif } static int decompress_zstd(const char *inbuf, char *outbuf, u64 compress_len, diff --git a/configure.ac b/configure.ac index d907636b..fa19015b 100644 --- a/configure.ac +++ b/configure.ac @@ -372,16 +372,26 @@ if ${PKG_CONFIG} udev --atleast-version 190; then fi AC_SUBST(UDEVDIR) -dnl lzo library does not provide pkg-config, let use classic way -AC_CHECK_LIB([lzo2], [lzo_version], [ - LZO2_LIBS="-llzo2" - LZO2_CFLAGS="" - LZO2_LIBS_STATIC="-llzo2"],[ - AC_MSG_ERROR([cannot find lzo2 library]) -]) -AC_SUBST([LZO2_LIBS]) -AC_SUBST([LZO2_LIBS_STATIC]) -AC_SUBST([LZO2_CFLAGS]) +AC_ARG_ENABLE([lzo], + AS_HELP_STRING([--disable-lzo], [build without lzo support (default: enabled)]), + [], [enable_lzo=yes] +) + +if test "x$enable_lzo" = xyes; then + dnl lzo library does not provide pkg-config, use classic way + AC_CHECK_LIB([lzo2], [lzo_version], [ + LZO2_LIBS="-llzo2" + LZO2_CFLAGS="" + LZO2_LIBS_STATIC="-llzo2"],[ + AC_MSG_ERROR([cannot find lzo2 library]) + ]) + AC_SUBST([LZO2_LIBS]) + AC_SUBST([LZO2_LIBS_STATIC]) + AC_SUBST([LZO2_CFLAGS]) +fi + +AS_IF([test "x$enable_lzo" = xyes], [BTRFSRESTORE_LZO=1], [BTRFSRESTORE_LZO=0]) +AC_SUBST(BTRFSRESTORE_LZO) dnl call PKG_INSTALLDIR from pkg.m4 to set pkgconfigdir m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], [AC_MSG_ERROR([please install pkgconf])])