On 2025/8/1 15:30, Yifan Zhao wrote:
From: zhaoyifan <zhaoyifa...@huawei.com>

This patch adds additional dependencies on libcurl, openssl and libxml2 library
for the upcoming S3 data source support, with libcurl to interact with S3 API,
openssl to generate S3 auth signature and libxml2 to parse response body.

The newly introduced dependencies are optional, controlled by the `--enable-s3`
configure option.

Use 72-char per line at maximum...


Signed-off-by: Yifan Zhao <zhaoyifa...@huawei.com>
---
change since v1:
- rebase on the latest `experimental` branch
- rename: lib/s3.c => lib/remotes/s3.c
- configure.ac: introduce `subdir-objects` option as s3.c in a subdir
- move include/erofs/s3.h in the following patch

  configure.ac     | 43 ++++++++++++++++++++++++++++++++++++++++++-
  lib/Makefile.am  |  4 ++++
  lib/remotes/s3.c |  6 ++++++
  mkfs/Makefile.am |  3 ++-
  4 files changed, 54 insertions(+), 2 deletions(-)
  create mode 100644 lib/remotes/s3.c

diff --git a/configure.ac b/configure.ac
index 2d42b1f..82ff98e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -24,7 +24,7 @@ esac
  # OS-specific treatment
  AM_CONDITIONAL([OS_LINUX], [test "$build_linux" = "yes"])
-AM_INIT_AUTOMAKE([foreign -Wall])
+AM_INIT_AUTOMAKE([foreign subdir-objects -Wall])
# Checks for programs.
  AM_PROG_AR
@@ -165,6 +165,10 @@ AC_ARG_WITH(xxhash,
     [AS_HELP_STRING([--with-xxhash],
        [Enable and build with libxxhash support @<:@default=auto@:>@])])
+AC_ARG_ENABLE(s3,
+   [AS_HELP_STRING([--enable-s3], [enable s3 image generation support 
@<:@default=no@:>@])],
+   [enable_s3="$enableval"], [enable_s3="no"])
+
  AC_ARG_ENABLE(fuse,
     [AS_HELP_STRING([--enable-fuse], [enable erofsfuse @<:@default=no@:>@])],
     [enable_fuse="$enableval"], [enable_fuse="no"])
@@ -578,6 +582,32 @@ AS_IF([test "x$with_xxhash" != "xno"], [
    ])
  ])
+AS_IF([test "x$enable_s3" != "xno"], [
+  # Paranoia: don't trust the result reported by pkgconfig before trying out
+  saved_LIBS="$LIBS"
+  saved_CPPFLAGS=${CPPFLAGS}
+  PKG_CHECK_MODULES([libcurl], [libcurl])
+  PKG_CHECK_MODULES([openssl], [openssl])
+  PKG_CHECK_MODULES([libxml2],  [libxml-2.0])


I wonder if it's possible to introduce
`--with-libcurl`
`--with-openssl`
`--with-libxml`

and `--enable-s3`, and if users disable any library,
it should fail.

I think why it should behave as this, because libcurl
openssl and libxml can be used for other use cases
(e.g. oci registry support), users can always link
these libs

Thanks,
Gao Xiang

Reply via email to