Same PMDs provide device specific APIs. Bond and xenvirt are existing samples for this.
And since these are PMD libraries, there are two options on how to link them. 1- They can be fully included to all applications, using common rte.app.mk file by default. 2- They can be explicitly linked to applications that use device specific API. Currently option one is in use, this patch switches to the option two. Moves library linking to the application of Makefile that uses device specific API. This prevent including these libraries into final applications that don't use these device specific APIs. Signed-off-by: Ferruh Yigit <ferruh.yi...@intel.com> --- app/test-pmd/Makefile | 8 ++++++++ app/test/Makefile | 21 +++++++++++++++++---- examples/bond/Makefile | 4 ++++ mk/rte.app.mk | 5 ++--- 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/app/test-pmd/Makefile b/app/test-pmd/Makefile index 7e52eb8..eec1ed0 100644 --- a/app/test-pmd/Makefile +++ b/app/test-pmd/Makefile @@ -61,6 +61,10 @@ SRCS-$(CONFIG_RTE_LIBRTE_IEEE1588) += ieee1588fwd.c ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y) +ifeq ($(CONFIG_RTE_LIBRTE_PMD_BOND),y) +LDLIBS += -lrte_pmd_bond +endif + ifeq ($(CONFIG_RTE_LIBRTE_IXGBE_PMD),y) LDLIBS += -lrte_pmd_ixgbe endif @@ -69,6 +73,10 @@ ifeq ($(CONFIG_RTE_LIBRTE_I40E_PMD),y) LDLIBS += -lrte_pmd_i40e endif +ifeq ($(CONFIG_RTE_LIBRTE_PMD_XENVIRT),y) +LDLIBS += -lrte_pmd_xenvirt +endif + endif CFLAGS_cmdline.o := -D_GNU_SOURCE diff --git a/app/test/Makefile b/app/test/Makefile index 9de301f..1a5e03d 100644 --- a/app/test/Makefile +++ b/app/test/Makefile @@ -188,9 +188,6 @@ endif ifeq ($(CONFIG_RTE_LIBRTE_PMD_NULL),y) SRCS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += test_link_bonding_rssconf.c -ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y) -LDLIBS += -lrte_pmd_null -endif endif SRCS-$(CONFIG_RTE_LIBRTE_PMD_RING) += test_pmd_ring.c @@ -224,11 +221,27 @@ DEPDIRS-y += lib drivers ifeq ($(CONFIG_RTE_LIBRTE_PMD_BOND),y) ifneq ($(CONFIG_RTE_LIBRTE_PMD_RING),y) $(error Link bonding tests require CONFIG_RTE_LIBRTE_PMD_RING=y) -else +endif +endif + ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y) + +ifeq ($(CONFIG_RTE_LIBRTE_PMD_BOND),y) +LDLIBS += -lrte_pmd_bond +endif + +ifeq ($(CONFIG_RTE_LIBRTE_PMD_NULL),y) +LDLIBS += -lrte_pmd_null +endif + +ifeq ($(CONFIG_RTE_LIBRTE_PMD_RING),y) LDLIBS += -lrte_pmd_ring endif + +ifeq ($(CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER),y) +LDLIBS += -lrte_pmd_crypto_scheduler endif + endif ifeq ($(CONFIG_RTE_APP_TEST_RESOURCE_TAR),y) diff --git a/examples/bond/Makefile b/examples/bond/Makefile index 626d79d..ae4cb6e 100644 --- a/examples/bond/Makefile +++ b/examples/bond/Makefile @@ -54,4 +54,8 @@ endif CFLAGS += -O3 +ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y) +LDLIBS += -lrte_pmd_bond +endif + include $(RTE_SDK)/mk/rte.extapp.mk diff --git a/mk/rte.app.mk b/mk/rte.app.mk index a4a09d8..92f3635 100644 --- a/mk/rte.app.mk +++ b/mk/rte.app.mk @@ -100,15 +100,13 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_EAL) += -lrte_eal _LDLIBS-$(CONFIG_RTE_LIBRTE_CMDLINE) += -lrte_cmdline _LDLIBS-$(CONFIG_RTE_LIBRTE_REORDER) += -lrte_reorder -_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += -lrte_pmd_bond -_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_XENVIRT) += -lrte_pmd_xenvirt -lxenstore - ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),n) # plugins (link only if static libraries) _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AF_PACKET) += -lrte_pmd_af_packet _LDLIBS-$(CONFIG_RTE_LIBRTE_BNX2X_PMD) += -lrte_pmd_bnx2x -lz _LDLIBS-$(CONFIG_RTE_LIBRTE_BNXT_PMD) += -lrte_pmd_bnxt +_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += -lrte_pmd_bond _LDLIBS-$(CONFIG_RTE_LIBRTE_CXGBE_PMD) += -lrte_pmd_cxgbe _LDLIBS-$(CONFIG_RTE_LIBRTE_E1000_PMD) += -lrte_pmd_e1000 _LDLIBS-$(CONFIG_RTE_LIBRTE_ENA_PMD) += -lrte_pmd_ena @@ -133,6 +131,7 @@ ifeq ($(CONFIG_RTE_LIBRTE_VHOST),y) _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_VHOST) += -lrte_pmd_vhost endif # $(CONFIG_RTE_LIBRTE_VHOST) _LDLIBS-$(CONFIG_RTE_LIBRTE_VMXNET3_PMD) += -lrte_pmd_vmxnet3_uio +_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_XENVIRT) += -lrte_pmd_xenvirt -lxenstore ifeq ($(CONFIG_RTE_LIBRTE_CRYPTODEV),y) _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_MB) += -lrte_pmd_aesni_mb -- 2.9.3