From 9c205577762b86e26a89054274dc12a7c701e2e0 Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Fri, 25 Sep 2020 19:40:21 +0000 Subject: [PATCH] env_dpdk: refactor env.mk to prep for pkg-config Here we add some new variables which we will be able to use in a later patch to generate pkg-config files for this env_dpdk library and our DPDK library dependencies. Signed-off-by: Jim Harris Change-Id: I8a256096ea08f97eba5d4460405f419624e6f0bc Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4468 Reviewed-by: Mellanox Build Bot Reviewed-by: Ben Walker Reviewed-by: Shuhei Matsumoto Reviewed-by: Aleksey Marchuk Tested-by: SPDK CI Jenkins --- lib/env_dpdk/env.mk | 38 +++++++++++++++----------------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/lib/env_dpdk/env.mk b/lib/env_dpdk/env.mk index ba6ee4bd1..547fcf9bd 100644 --- a/lib/env_dpdk/env.mk +++ b/lib/env_dpdk/env.mk @@ -48,12 +48,6 @@ DPDK_INC_DIR := $(DPDK_ABS_DIR)/include/dpdk endif DPDK_INC := -I$(DPDK_INC_DIR) -ifeq ($(CONFIG_SHARED),y) -DPDK_LIB_EXT = .so -else -DPDK_LIB_EXT = .a -endif - DPDK_LIB_LIST = rte_eal rte_mempool rte_ring rte_mbuf rte_pci rte_bus_pci rte_mempool_ring # DPDK 20.05 eal dependency @@ -103,27 +97,14 @@ ifeq ($(LINK_HASH),y) DPDK_LIB_LIST += rte_hash endif -define dpdk_lib_list_to_libs -$(1:%=$(DPDK_ABS_DIR)/lib/lib%$(DPDK_LIB_EXT)) -endef - -define dpdk_env_linker_args -$(ENV_DPDK_FILE) -Wl,--whole-archive,--no-as-needed $(call dpdk_lib_list_to_libs,$1) -Wl,--no-whole-archive -endef - -DPDK_LIB = $(call dpdk_lib_list_to_libs,$(DPDK_LIB_LIST)) +DPDK_SHARED_LIB = $(DPDK_LIB_LIST:%=$(DPDK_ABS_DIR)/lib/lib%.so) +DPDK_STATIC_LIB = $(DPDK_LIB_LIST:%=$(DPDK_ABS_DIR)/lib/lib%.a) +DPDK_SHARED_LIB_LINKER_ARGS = $(call add_no_as_needed,$(DPDK_SHARED_LIB)) +DPDK_STATIC_LIB_LINKER_ARGS = $(call add_whole_archive,$(DPDK_STATIC_LIB)) # SPDK memory registration requires experimental (deprecated) rte_memory API for DPDK 18.05 ENV_CFLAGS = $(DPDK_INC) -Wno-deprecated-declarations ENV_CXXFLAGS = $(ENV_CFLAGS) -ifeq ($(CONFIG_SHARED),y) -ENV_DPDK_FILE = $(call spdk_lib_list_to_shared_libs,env_dpdk) -else -ENV_DPDK_FILE = $(call spdk_lib_list_to_static_libs,env_dpdk) -endif -ENV_LIBS = $(ENV_DPDK_FILE) $(DPDK_LIB) -ENV_LINKER_ARGS = -Wl,-rpath-link $(DPDK_ABS_DIR)/lib -ENV_LINKER_ARGS += $(call dpdk_env_linker_args,$(DPDK_LIB_LIST)) DPDK_PRIVATE_LINKER_ARGS = @@ -155,4 +136,15 @@ ifeq ($(OS),FreeBSD) DPDK_PRIVATE_LINKER_ARGS += -lexecinfo endif +ifeq ($(CONFIG_SHARED),y) +ENV_DPDK_FILE = $(call spdk_lib_list_to_shared_libs,env_dpdk) +ENV_LIBS = $(ENV_DPDK_FILE) $(DPDK_SHARED_LIB) +DPDK_LINKER_ARGS = -Wl,-rpath-link $(DPDK_ABS_DIR)/lib $(DPDK_SHARED_LIB_LINKER_ARGS) +ENV_LINKER_ARGS = $(ENV_DPDK_FILE) $(DPDK_LINKER_ARGS) +else +ENV_DPDK_FILE = $(call spdk_lib_list_to_static_libs,env_dpdk) +ENV_LIBS = $(ENV_DPDK_FILE) $(DPDK_STATIC_LIB) +DPDK_LINKER_ARGS = -Wl,-rpath-link $(DPDK_ABS_DIR)/lib $(DPDK_STATIC_LIB_LINKER_ARGS) +ENV_LINKER_ARGS = $(ENV_DPDK_FILE) $(DPDK_LINKER_ARGS) ENV_LINKER_ARGS += $(DPDK_PRIVATE_LINKER_ARGS) +endif