mk: fix external shared library dependencies of libraries
PATCH v2 1/1 mk: fix external shared library dependencies of libraries
Similar to commit 5f9115e58cc6f304ff4ade694cf5823d32887d1a etc, but for libraries. Clean up librte_vhost CFLAGS/LDFLAGS/LDLIBS confusion while at it.
Requiring applications to know about library internal details like dependencies to external helper libraries is a limitation of static linkage, shared libraries should always know their own dependencies for sane operation.
Linking with the combined library (whether shared or not) still requires knowing the internal dependencies, and intra-dpdk dependencies are also not currently recorded.
---
v2:
- clean up librte_vhost CFLAGS/LDFLAGS/LDLIBS confusion while at it
lib/librte_eal/bsdapp/eal/Makefile | 4 ++++ lib/librte_eal/linuxapp/eal/Makefile | 6 ++++++ lib/librte_sched/Makefile | 3 +++ lib/librte_vhost/Makefile | 6 +++--- mk/rte.app.mk | 20 ++++++++------------ 5 files changed, 24 insertions(+), 15 deletions(-)
lib/librte_eal/bsdapp/eal/Makefile +4 -0
@@ -42,6 +42,10 @@ CFLAGS += -I$(RTE_SDK)/lib/librte_ring CFLAGS += -I$(RTE_SDK)/lib/librte_mempool CFLAGS += $(WERROR_FLAGS) -O3 +LDLIBS += -lpthread +LDLIBS += -lexecinfo +LDLIBS += -lgcc_s + EXPORT_MAP := rte_eal_version.map LIBABIVER := 2
lib/librte_eal/linuxapp/eal/Makefile +6 -0
@@ -47,6 +47,12 @@ CFLAGS += -I$(RTE_SDK)/lib/librte_mempool CFLAGS += -I$(RTE_SDK)/lib/librte_ivshmem CFLAGS += $(WERROR_FLAGS) -O3 +LDLIBS += -lpthread +LDLIBS += -ldl +LDLIBS += -lrt +LDLIBS += -lm +LDLIBS += -lgcc_s + # specific to linuxapp exec-env SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) := eal.c SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_hugepage_info.c
lib/librte_sched/Makefile +3 -0
@@ -41,6 +41,9 @@ CFLAGS += $(WERROR_FLAGS) CFLAGS_rte_red.o := -D_GNU_SOURCE +LDLIBS += -lm +LDLIBS += -lrt + EXPORT_MAP := rte_sched_version.map LIBABIVER := 1
lib/librte_vhost/Makefile +3 -3
@@ -42,12 +42,12 @@ CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -D_FILE_OFFSET_BITS=64 ifeq ($(CONFIG_RTE_LIBRTE_VHOST_USER),y) CFLAGS += -I vhost_user else -CFLAGS += -I vhost_cuse -lfuse -LDFLAGS += -lfuse +CFLAGS += -I vhost_cuse +LDLIBS += -lfuse endif ifeq ($(CONFIG_RTE_LIBRTE_VHOST_NUMA),y) -LDFLAGS += -lnuma +LDLIBS += -lnuma endif # all source are stored in SRCS-y
mk/rte.app.mk +8 -12
@@ -81,23 +81,11 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_LPM) += -lrte_lpm _LDLIBS-$(CONFIG_RTE_LIBRTE_POWER) += -lrte_power _LDLIBS-$(CONFIG_RTE_LIBRTE_ACL) += -lrte_acl _LDLIBS-$(CONFIG_RTE_LIBRTE_METER) += -lrte_meter - _LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrte_sched -_LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lm -_LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrt - _LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lrte_vhost endif # ! CONFIG_RTE_BUILD_COMBINE_LIBS -ifeq ($(CONFIG_RTE_LIBRTE_VHOST_NUMA),y) -_LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lnuma -endif - -ifeq ($(CONFIG_RTE_LIBRTE_VHOST_USER),n) -_LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lfuse -endif - # The static libraries do not know their dependencies. # The combined library fails also to store this information. # So linking with static or combined library requires explicit dependencies.
@@ -111,6 +99,14 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_XENVIRT) += -lxenstore _LDLIBS-$(CONFIG_RTE_LIBRTE_MPIPE_PMD) += -lgxio # QAT PMD has a dependency on libcrypto (from openssl) for calculating HMAC precomputes _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_QAT) += -lcrypto +_LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lm +_LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrt +ifeq ($(CONFIG_RTE_LIBRTE_VHOST_NUMA),y) +_LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lnuma +endif +ifeq ($(CONFIG_RTE_LIBRTE_VHOST_USER),n) +_LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lfuse +endif endif # CONFIG_RTE_BUILD_COMBINE_LIBS or not CONFIG_RTE_BUILD_SHARED_LIBS _LDLIBS-y += --start-group
Signature · 1 line
2.5.0
Quoted 13 lines · Panu Matilainen
Similar to commit
5f9115e58cc6f304ff4ade694cf5823d32887d1aetc, but for libraries. Clean uplibrte_vhostCFLAGS/LDFLAGS/LDLIBS confusion while at it.Requiring applications to know about library internal details like dependencies to external helper libraries is a limitation of static linkage, shared libraries should always know their own dependencies for sane operation.
Linking with the combined library (whether shared or not) still requires knowing the internal dependencies, and intra-dpdk dependencies are also not currently recorded.
Quoted 7 lines
Signed-off-by Panu Matilainen <[email protected]>---
v2:
- clean uplibrte_vhostCFLAGS/LDFLAGS/LDLIBS confusion while at it
Hi Panu,
Patch itself looks good but there is a small side effect on BSD that results in app/test not linking because of missing -lm.
Linuxapp links with -lm by default (EXECENV_LDLIBS), but BSD does not.
Should we just add -lm to EXECENV_LDLIBS for BSD too instead of adding it on each app/example that uses librte_sched ?
Sergio
Quoted 21 lines · Sergio Gonzalez Monroy
Quoted 13 lines · Panu Matilainen
Similar to commit
5f9115e58cc6f304ff4ade694cf5823d32887d1aetc, but for libraries. Clean uplibrte_vhostCFLAGS/LDFLAGS/LDLIBS confusion while at it.Requiring applications to know about library internal details like dependencies to external helper libraries is a limitation of static linkage, shared libraries should always know their own dependencies for sane operation.
Linking with the combined library (whether shared or not) still requires knowing the internal dependencies, and intra-dpdk dependencies are also not currently recorded.
Quoted 7 lines
Signed-off-by Panu Matilainen <[email protected]>---
v2:
- clean uplibrte_vhostCFLAGS/LDFLAGS/LDLIBS confusion while at it
Quoted 6 lines
Hi Panu,
Patch itself looks good but there is a small side effect on BSD that results
in app/test not linking because of missing -lm.
Linuxapp links with -lm by default (EXECENV_LDLIBS), but BSD does not.
Oh, those LIBRTE_SCHED entries were in a different if-block from the others...
Hmm, interesting. Without this patch, on Linux -lm gets added twice which actually causes a build failure on Fedora rawhide (related to some libmvec related changes it seems).
Quoted 2 lines
Should we just add -lm to
EXECENV_LDLIBSfor BSD too instead of adding it on each app/example that useslibrte_sched?
Linking should be based on usage, not convenience or such... but there's no explanation why -lm is added everywhere in Linux:
commit 6da94b7a92d9706c1a4fb23a9cf54f49e6019af2
Author: Intel <intel.com> Date: Wed Sep 18 12:00:00 2013 +0200
mk: link with libm
Certainly librte_sched should link to -lm and in static builds, all its users, but beyond that I suppose it needs closer investigation of what (if anything else) actually needs it.
I think we better leave it alone for 2.2, but the librte_vhost part should be safe. I can send another version with just that if it has a chance to make it to 2.2, otherwise lets postpone it to 2.3.
- Panu -
- Panu -
- Panu -
v3 cover mk: add DT_NEEDED entries for external library deps
In reply to Panu MatilainenAdd hopefully all the remaining missing DT_NEEDED entries for external library dependencies on the libraries side: librte_vhost, librte_sched and librte_eal.
Panu Matilainen (3):
mk: clear up libm and librt linkage confusion
mk: add DT_NEEDED entries for librte_vhost external dependencies
mk: add DT_NEEDED entries for librte_eal external dependencies
app/test/Makefile | 2 ++ lib/librte_eal/bsdapp/eal/Makefile | 4 ++++ lib/librte_eal/linuxapp/eal/Makefile | 4 ++++ lib/librte_sched/Makefile | 3 +++ lib/librte_vhost/Makefile | 7 ++++--- mk/exec-env/linuxapp/rte.vars.mk | 2 +- mk/rte.app.mk | 20 ++++++++------------ 7 files changed, 26 insertions(+), 16 deletions(-)
Signature · 9 lines
v3: - split up to separate patches - clear up up libm and librt linkage confusion and unnecessary Linux vs BSD differences v2: - clean up librte_vhost CFLAGS/LDFLAGS/LDLIBS confusion while at it 2.5.0
PATCH v3 1/3 mk: clear up libm and librt linkage confusion
There are two places that need -lm (test app and librte_sched) and exactly one that needs -lrt (librte_sched). Add the relevant DT_NEEDED entries to both, and eliminate the bogus discrepancy between Linux and BSD EXECENV_LDLIBS wrt these libs.
--- app/test/Makefile | 2 ++ lib/librte_sched/Makefile | 3 +++ mk/exec-env/linuxapp/rte.vars.mk | 2 +- mk/rte.app.mk | 6 ++---- 4 files changed, 8 insertions(+), 5 deletions(-)
app/test/Makefile +2 -0
@@ -160,6 +160,8 @@ CFLAGS += $(WERROR_FLAGS) CFLAGS += -D_GNU_SOURCE +LDLIBS += -lm + # Disable VTA for memcpy test ifeq ($(CC), gcc) ifeq ($(shell test $(GCC_VERSION) -ge 44 && echo 1), 1)
lib/librte_sched/Makefile +3 -0
@@ -41,6 +41,9 @@ CFLAGS += $(WERROR_FLAGS) CFLAGS_rte_red.o := -D_GNU_SOURCE +LDLIBS += -lm +LDLIBS += -lrt + EXPORT_MAP := rte_sched_version.map LIBABIVER := 1
mk/exec-env/linuxapp/rte.vars.mk +1 -1
@@ -48,7 +48,7 @@ endif # Workaround lack of DT_NEEDED entry EXECENV_LDFLAGS = --no-as-needed -EXECENV_LDLIBS = -lrt -lm +EXECENV_LDLIBS = EXECENV_ASFLAGS = ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
mk/rte.app.mk +2 -4
@@ -77,11 +77,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_LPM) += -lrte_lpm _LDLIBS-$(CONFIG_RTE_LIBRTE_POWER) += -lrte_power _LDLIBS-$(CONFIG_RTE_LIBRTE_ACL) += -lrte_acl _LDLIBS-$(CONFIG_RTE_LIBRTE_METER) += -lrte_meter - _LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrte_sched -_LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lm -_LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrt - _LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lrte_vhost ifeq ($(CONFIG_RTE_LIBRTE_VHOST_NUMA),y)
@@ -104,6 +100,8 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_XENVIRT) += -lxenstore _LDLIBS-$(CONFIG_RTE_LIBRTE_MPIPE_PMD) += -lgxio # QAT PMD has a dependency on libcrypto (from openssl) for calculating HMAC precomputes _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_QAT) += -lcrypto +_LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lm +_LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrt endif # !CONFIG_RTE_BUILD_SHARED_LIBS _LDLIBS-y += --start-group
Signature · 1 line
2.5.0
Re: [PATCH v3 1/3] mk: clear up libm and librt linkage confusion
Quoted 71 lines · Panu Matilainen
There are two places that need -lm (test app and
librte_sched) and exactly one that needs -lrt (librte_sched). Add the relevantDT_NEEDEDentries to both, and eliminate the bogus discrepancy between Linux and BSDEXECENV_LDLIBSwrt these libs.Signed-off-by Panu Matilainen <[email protected]>--- app/test/Makefile | 2 ++ lib/librte_sched/Makefile | 3 +++ mk/exec-env/linuxapp/rte.vars.mk | 2 +- mk/rte.app.mk | 6 ++---- 4 files changed, 8 insertions(+), 5 deletions(-)app/test/Makefile +2
-0@@ -160,6 +160,8 @@ CFLAGS += $(WERROR_FLAGS) CFLAGS += -D_GNU_SOURCE +LDLIBS += -lm + # Disable VTA for memcpy test ifeq ($(CC), gcc) ifeq ($(shell test $(GCC_VERSION) -ge 44 && echo 1), 1)lib/librte_sched/Makefile +3
-0@@ -41,6 +41,9 @@ CFLAGS += $(WERROR_FLAGS) CFLAGS_rte_red.o := -D_GNU_SOURCE +LDLIBS += -lm +LDLIBS += -lrt + EXPORT_MAP := rte_sched_version.map LIBABIVER := 1mk/exec-env/linuxapp/rte.vars.mk +1
-1@@ -48,7 +48,7 @@ endif # Workaround lack of DT_NEEDED entry EXECENV_LDFLAGS = --no-as-needed -EXECENV_LDLIBS = -lrt -lm +EXECENV_LDLIBS = EXECENV_ASFLAGS = ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)mk/rte.app.mk +0
-4@@ -77,11 +77,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_LPM) += -lrte_lpm _LDLIBS-$(CONFIG_RTE_LIBRTE_POWER) += -lrte_power _LDLIBS-$(CONFIG_RTE_LIBRTE_ACL) += -lrte_acl _LDLIBS-$(CONFIG_RTE_LIBRTE_METER) += -lrte_meter - _LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrte_sched -_LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lm -_LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrt - _LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lrte_vhost ifeq ($(CONFIG_RTE_LIBRTE_VHOST_NUMA),y)
mk/rte.app.mk _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_XENVIRT) += -lxenstore · line 107
Quoted 8 lines
mk/rte.app.mk +2
-0@@ -104,6 +100,8 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_XENVIRT) += -lxenstore _LDLIBS-$(CONFIG_RTE_LIBRTE_MPIPE_PMD) += -lgxio # QAT PMD has a dependency on libcrypto (from openssl) for calculating HMAC precomputes _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_QAT) += -lcrypto +_LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lm +_LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrt endif # !CONFIG_RTE_BUILD_SHARED_LIBS _LDLIBS-y += --start-group
This is causing a shared library compilation error with gcc:
"
== Build app/test-acl
LD testacl/root/dpdk/build/lib/librte_meter.so: error: undefined reference to 'ceil'
collect2: error: ld returned 1 exit status
"
There is an indirect libm dependency from test-acl. Adding -lm fixes the issue.
But this issue not seen by everybody, not sure why I am getting this but not others.
Also clang compiles fine, only fails with gcc.
I am using Fedora 23, gcc version:
gcc (GCC) 5.3.1 20151207 (Red Hat 5.3.1-2)
I will dig some more.
Regards,
ferruh
Re: [PATCH v3 1/3] mk: clear up libm and librt linkage confusion
Quoted 92 lines · Ferruh Yigit
Quoted 71 lines · Panu Matilainen
There are two places that need -lm (test app and
librte_sched) and exactly one that needs -lrt (librte_sched). Add the relevantDT_NEEDEDentries to both, and eliminate the bogus discrepancy between Linux and BSDEXECENV_LDLIBSwrt these libs.Signed-off-by Panu Matilainen <[email protected]>--- app/test/Makefile | 2 ++ lib/librte_sched/Makefile | 3 +++ mk/exec-env/linuxapp/rte.vars.mk | 2 +- mk/rte.app.mk | 6 ++---- 4 files changed, 8 insertions(+), 5 deletions(-)app/test/Makefile +2
-0@@ -160,6 +160,8 @@ CFLAGS += $(WERROR_FLAGS) CFLAGS += -D_GNU_SOURCE +LDLIBS += -lm + # Disable VTA for memcpy test ifeq ($(CC), gcc) ifeq ($(shell test $(GCC_VERSION) -ge 44 && echo 1), 1)lib/librte_sched/Makefile +3
-0@@ -41,6 +41,9 @@ CFLAGS += $(WERROR_FLAGS) CFLAGS_rte_red.o := -D_GNU_SOURCE +LDLIBS += -lm +LDLIBS += -lrt + EXPORT_MAP := rte_sched_version.map LIBABIVER := 1mk/exec-env/linuxapp/rte.vars.mk +1
-1@@ -48,7 +48,7 @@ endif # Workaround lack of DT_NEEDED entry EXECENV_LDFLAGS = --no-as-needed -EXECENV_LDLIBS = -lrt -lm +EXECENV_LDLIBS = EXECENV_ASFLAGS = ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)mk/rte.app.mk +0
-4@@ -77,11 +77,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_LPM) += -lrte_lpm _LDLIBS-$(CONFIG_RTE_LIBRTE_POWER) += -lrte_power _LDLIBS-$(CONFIG_RTE_LIBRTE_ACL) += -lrte_acl _LDLIBS-$(CONFIG_RTE_LIBRTE_METER) += -lrte_meter - _LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrte_sched -_LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lm -_LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrt - _LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lrte_vhost ifeq ($(CONFIG_RTE_LIBRTE_VHOST_NUMA),y)mk/rte.app.mk _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_XENVIRT) += -lxenstore · line 107
Quoted 8 lines
mk/rte.app.mk +2
-0@@ -104,6 +100,8 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_XENVIRT) += -lxenstore _LDLIBS-$(CONFIG_RTE_LIBRTE_MPIPE_PMD) += -lgxio # QAT PMD has a dependency on libcrypto (from openssl) for calculating HMAC precomputes _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_QAT) += -lcrypto +_LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lm +_LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrt endif # !CONFIG_RTE_BUILD_SHARED_LIBS _LDLIBS-y += --start-groupThis is causing a shared library compilation error with gcc:
"
== Build app/test-acl
LD testacl/root/dpdk/build/lib/librte_meter.so: error: undefined reference to 'ceil'
collect2: error: ld returned 1 exit status
"There is an indirect libm dependency from test-acl. Adding -lm fixes the issue.
Quoted 8 lines
But this issue not seen by everybody, not sure why I am getting this but not others.
Also clang compiles fine, only fails with gcc.
I am using Fedora 23, gcc version:
gcc (GCC) 5.3.1 20151207 (Red Hat 5.3.1-2)I will dig some more.
Right, librte_meter indeed has a dependency on libm that I've missed.
The curious thing is why is it not failing everywhere - I cannot reproduce that at all on Fedora 23. Poking around in math.h leads to bits/mathlinline.h where the answer probably lies: ceil() is typically provided by inline code, but for one reason or another that is not available in your setup.
Anyway, I'll send a patch to add the missing dependency, thanks for spotting and reporting!
- Panu -
Quoted 6 lines
Regards,
ferruh
PATCH v3 2/3 mk: add DT_NEEDED entries for librte_vhost external dependencies
In reply to Panu MatilainenAdd DT_NEEDED entries for external library dependencies which are the most critical ones for sane operation. Clean up vhost_cuse CFLAGS/LDFLAGS confusion while at it.
--- lib/librte_vhost/Makefile | 7 ++++--- mk/rte.app.mk | 14 ++++++-------- 2 files changed, 10 insertions(+), 11 deletions(-)
lib/librte_vhost/Makefile +4 -3
@@ -41,13 +41,14 @@ LIBABIVER := 2 CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -D_FILE_OFFSET_BITS=64 ifeq ($(CONFIG_RTE_LIBRTE_VHOST_USER),y) CFLAGS += -I vhost_user +LDLIBS += -lpthread else -CFLAGS += -I vhost_cuse -lfuse -LDFLAGS += -lfuse +CFLAGS += -I vhost_cuse +LDLIBS += -lfuse endif ifeq ($(CONFIG_RTE_LIBRTE_VHOST_NUMA),y) -LDFLAGS += -lnuma +LDLIBS += -lnuma endif # all source are stored in SRCS-y
mk/rte.app.mk +6 -8
@@ -80,14 +80,6 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_METER) += -lrte_meter _LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrte_sched _LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lrte_vhost -ifeq ($(CONFIG_RTE_LIBRTE_VHOST_NUMA),y) -_LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lnuma -endif - -ifeq ($(CONFIG_RTE_LIBRTE_VHOST_USER),n) -_LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lfuse -endif - # The static libraries do not know their dependencies. # So linking with static library requires explicit dependencies. ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),n)
@@ -102,6 +94,12 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_MPIPE_PMD) += -lgxio _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_QAT) += -lcrypto _LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lm _LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrt +ifeq ($(CONFIG_RTE_LIBRTE_VHOST_NUMA),y) +_LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lnuma +endif +ifeq ($(CONFIG_RTE_LIBRTE_VHOST_USER),n) +_LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lfuse +endif endif # !CONFIG_RTE_BUILD_SHARED_LIBS _LDLIBS-y += --start-group
Signature · 1 line
2.5.0
PATCH v3 3/3 mk: add DT_NEEDED entries for librte_eal external dependencies
In reply to Panu MatilainenDetails between the platforms differ somewhat, and for static builds they need to be handled from mk/exec-env still.
--- lib/librte_eal/bsdapp/eal/Makefile | 4 ++++ lib/librte_eal/linuxapp/eal/Makefile | 4 ++++ 2 files changed, 8 insertions(+)
lib/librte_eal/bsdapp/eal/Makefile +4 -0
@@ -44,6 +44,10 @@ CFLAGS += -I$(RTE_SDK)/lib/librte_ring CFLAGS += -I$(RTE_SDK)/lib/librte_mempool CFLAGS += $(WERROR_FLAGS) -O3 +LDLIBS += -lexecinfo +LDLIBS += -lpthread +LDLIBS += -lgcc_s + EXPORT_MAP := rte_eal_version.map LIBABIVER := 2
lib/librte_eal/linuxapp/eal/Makefile +4 -0
@@ -49,6 +49,10 @@ CFLAGS += -I$(RTE_SDK)/lib/librte_mempool CFLAGS += -I$(RTE_SDK)/lib/librte_ivshmem CFLAGS += $(WERROR_FLAGS) -O3 +LDLIBS += -ldl +LDLIBS += -lpthread +LDLIBS += -lgcc_s + # specific to linuxapp exec-env SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) := eal.c SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += eal_hugepage_info.c
Signature · 1 line
2.5.0
Thomas Monjalon
AppliedRe: [PATCH v3 0/3] mk: add DT_NEEDED entries for external library deps
In reply to Panu Matilainen2016-03-10 15:15, Panu Matilainen:
Quoted 8 lines
Add hopefully all the remaining missing
DT_NEEDEDentries for external library dependencies on the libraries side:librte_vhost,librte_schedandlibrte_eal.Panu Matilainen (3):
mk: clear up libm and librt linkage confusion
mk: addDT_NEEDEDentries forlibrte_vhostexternal dependencies
mk: addDT_NEEDEDentries forlibrte_ealexternal dependencies
Applied, thanks