From 544a8fe597cc786d6bbfeb074fc8caad6d6654f8 Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Wed, 14 Dec 2022 11:20:33 +0000 Subject: [PATCH] build, config: add CONFIG_HAVE_LIBARCHIVE Always add -larchive to DPDK static link args if libarchive is available. This is less fragile than previous mechanism of trying to remove RTE_HAS_LIBARCHIVE to keep DPDK from trying to use it. Signed-off-by: Jim Harris Change-Id: Ib26fc204927d8967b98d416373fc91446169d5af Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15951 Tested-by: SPDK CI Jenkins Community-CI: Mellanox Build Bot Reviewed-by: Changpeng Liu Reviewed-by: Tomasz Zawadzki --- CONFIG | 3 +++ configure | 4 ++++ dpdkbuild/Makefile | 1 - lib/env_dpdk/env.mk | 4 ++++ 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CONFIG b/CONFIG index e99d58bed..5c261507b 100644 --- a/CONFIG +++ b/CONFIG @@ -200,6 +200,9 @@ CONFIG_HAVE_ARC4RANDOM=n # Is DPDK using libbsd? CONFIG_HAVE_LIBBSD=n +# Is DPDK using libarchive? +CONFIG_HAVE_LIBARCHIVE=n + # Path to IPSEC_MB used by DPDK CONFIG_IPSEC_MB_DIR= diff --git a/configure b/configure index 8e391d69b..b3cc419ee 100755 --- a/configure +++ b/configure @@ -786,6 +786,10 @@ if [[ $sys_name == "Linux" ]]; then fi fi +if pkg-config libarchive; then + CONFIG[HAVE_LIBARCHIVE]=y +fi + if [[ $sys_name != "Linux" ]]; then if [[ "${CONFIG[VHOST]}" == "y" ]]; then echo "Vhost is only supported on Linux." diff --git a/dpdkbuild/Makefile b/dpdkbuild/Makefile index fa0a9d9ba..103234a82 100644 --- a/dpdkbuild/Makefile +++ b/dpdkbuild/Makefile @@ -184,7 +184,6 @@ $(SPDK_ROOT_DIR)/dpdk/build-tmp: $(SPDK_ROOT_DIR)/mk/cc.mk $(SPDK_ROOT_DIR)/incl $(Q)rm -rf $(SPDK_ROOT_DIR)/dpdk/build $(SPDK_ROOT_DIR)/dpdk/build-tmp $(Q)cd "$(SPDK_ROOT_DIR)/dpdk"; CC="$(SUB_CC)" meson setup --prefix="$(MESON_PREFIX)" --libdir lib -Dc_args="$(DPDK_CFLAGS)" -Dc_link_args="$(DPDK_LDFLAGS)" $(DPDK_OPTS) -Denable_drivers="$(shell echo $(DPDK_DRIVERS) | sed -E "s/ +/,/g")" -Ddisable_libs="$(shell echo $(DPDK_DISABLED_LIBS) | sed -E "s/ +/,/g")" $(DPDKBUILD_FLAGS) build-tmp $(Q)sed $(SED_INPLACE_FLAG) 's/#define RTE_EAL_PMD_PATH .*/#define RTE_EAL_PMD_PATH ""/g' $(SPDK_ROOT_DIR)/dpdk/build-tmp/rte_build_config.h - $(Q)sed $(SED_INPLACE_FLAG) 's/#define RTE_HAS_LIBARCHIVE .*//g' $(SPDK_ROOT_DIR)/dpdk/build-tmp/rte_build_config.h clean: $(Q)rm -rf $(SPDK_ROOT_DIR)/dpdk/build $(SPDK_ROOT_DIR)/dpdk/build-tmp diff --git a/lib/env_dpdk/env.mk b/lib/env_dpdk/env.mk index 91e1fb1f6..b7522a1e1 100644 --- a/lib/env_dpdk/env.mk +++ b/lib/env_dpdk/env.mk @@ -145,6 +145,10 @@ ifeq ($(CONFIG_HAVE_LIBBSD),y) DPDK_PRIVATE_LINKER_ARGS += -lbsd endif +ifeq ($(CONFIG_HAVE_LIBARCHIVE),y) +DPDK_PRIVATE_LINKER_ARGS += -larchive +endif + ifeq ($(CONFIG_CRYPTO),y) ifeq ($(CONFIG_CRYPTO_MLX5),y) DPDK_PRIVATE_LINKER_ARGS += -lmlx5 -libverbs