All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] app/testpmd: fix static build link ordering
@ 2017-01-12  7:46 Jerin Jacob
  2017-01-12  9:26 ` Thomas Monjalon
  2017-01-13 16:31 ` Thomas Monjalon
  0 siblings, 2 replies; 12+ messages in thread
From: Jerin Jacob @ 2017-01-12  7:46 UTC (permalink / raw)
  To: dev; +Cc: thomas.monjalon, ferruh.yigit, Jerin Jacob, stable

By introducing explicit -lrte_pmd_ixgbe link request in
testpmd Makefile,"-Wl,-lrte_pmd_ixgbe" provided twice, and linker
removes the duplication by keeping only first occurrence.
This moves "-Wl,-lrte_pmd_ixgbe" out of "-Wl,--whole-archive" flag
and makes symbol generation totally different than previous version
in case of static build.
This patch fixes the static build linking order by introducing
-lrte_pmd_ixgbe under the shared library config
(CONFIG_RTE_BUILD_SHARED_LIB).

Fixes: 425781ff5afe ("app/testpmd: add ixgbe VF management")

CC: stable@dpdk.org
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
 app/test-pmd/Makefile | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/app/test-pmd/Makefile b/app/test-pmd/Makefile
index 5988c3e..050663a 100644
--- a/app/test-pmd/Makefile
+++ b/app/test-pmd/Makefile
@@ -59,7 +59,9 @@ SRCS-y += csumonly.c
 SRCS-y += icmpecho.c
 SRCS-$(CONFIG_RTE_LIBRTE_IEEE1588) += ieee1588fwd.c
 
+ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
 _LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
+endif
 
 CFLAGS_cmdline.o := -D_GNU_SOURCE
 
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH] app/testpmd: fix static build link ordering
  2017-01-12  7:46 [PATCH] app/testpmd: fix static build link ordering Jerin Jacob
@ 2017-01-12  9:26 ` Thomas Monjalon
  2017-01-12 13:58   ` Jerin Jacob
  2017-01-13 16:31 ` Thomas Monjalon
  1 sibling, 1 reply; 12+ messages in thread
From: Thomas Monjalon @ 2017-01-12  9:26 UTC (permalink / raw)
  To: Jerin Jacob; +Cc: dev, ferruh.yigit, stable

2017-01-12 13:16, Jerin Jacob:
> +ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
>  _LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
> +endif

_LDLIBS is an internal variable of rte.app.mk.
Please could you check that there is no issue when using LDLIBS instead
of _LDLIBS?
Thanks

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] app/testpmd: fix static build link ordering
  2017-01-12  9:26 ` Thomas Monjalon
@ 2017-01-12 13:58   ` Jerin Jacob
  2017-01-12 15:27     ` Ferruh Yigit
  0 siblings, 1 reply; 12+ messages in thread
From: Jerin Jacob @ 2017-01-12 13:58 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev, ferruh.yigit, stable

On Thu, Jan 12, 2017 at 10:26:08AM +0100, Thomas Monjalon wrote:
> 2017-01-12 13:16, Jerin Jacob:
> > +ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
> >  _LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
> > +endif
> 
> _LDLIBS is an internal variable of rte.app.mk.
> Please could you check that there is no issue when using LDLIBS instead
> of _LDLIBS?

Tested it. Suggested change has issue in shared lib configuration.

[dpdk-master] $ git diff
diff --git a/app/test-pmd/Makefile b/app/test-pmd/Makefile
index 050663a..27cadd5 100644
--- a/app/test-pmd/Makefile
+++ b/app/test-pmd/Makefile
@@ -59,9 +59,7 @@ SRCS-y += csumonly.c
 SRCS-y += icmpecho.c
 SRCS-$(CONFIG_RTE_LIBRTE_IEEE1588) += ieee1588fwd.c
 
-ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
-_LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
-endif
+LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
 
 CFLAGS_cmdline.o := -D_GNU_SOURCE

[error]


gcc -Wp,-MD,./.iofwd.o.d.tmp  -m64 -pthread -fPIC  -march=native
-DRTE_MACHINE_CPUFLAG_SSE -DRTE_MACHINE_CPUFLAG_SSE2
-DRTE_MACHINE_CPUFLAG_SSE3 -DRTE_MACHINE_CPUFLAG_SSSE3
-DRTE_MACHINE_CPUFLAG_SSE4_1 -DRTE_MACHINE_CPUFLAG_SSE4_2
-DRTE_MACHINE_CPUFLAG_AES -DRTE_MACHINE_CPUFLAG_PCLMULQDQ
-DRTE_MACHINE_CPUFLAG_AVX -DRTE_MACHINE_CPUFLAG_RDRAND
-DRTE_MACHINE_CPUFLAG_FSGSBASE -DRTE_MACHINE_CPUFLAG_F16C
-DRTE_MACHINE_CPUFLAG_AVX2  -I/export/dpdk-master/build/include -include
/export/dpdk-master/build/include/rte_config.h -O3 -W -Wall
-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations
-Wold-style-definition -Wpointer-arith -Wcast-align -Wnested-externs
-Wcast-qual -Wformat-nonliteral -Wformat-security -Wundef
-Wwrite-strings -Werror    -o iofwd.o -c
/export/dpdk-master/app/test-pmd/iofwd.c 
gcc -o testpmd -m64 -pthread -fPIC  -march=native
-DRTE_MACHINE_CPUFLAG_SSE -DRTE_MACHINE_CPUFLAG_SSE2
-DRTE_MACHINE_CPUFLAG_SSE3 -DRTE_MACHINE_CPUFLAG_SSSE3
-DRTE_MACHINE_CPUFLAG_SSE4_1 -DRTE_MACHINE_CPUFLAG_SSE4_2
-DRTE_MACHINE_CPUFLAG_AES -DRTE_MACHINE_CPUFLAG_PCLMULQDQ
-DRTE_MACHINE_CPUFLAG_AVX -DRTE_MACHINE_CPUFLAG_RDRAND
-DRTE_MACHINE_CPUFLAG_FSGSBASE -DRTE_MACHINE_CPUFLAG_F16C
-DRTE_MACHINE_CPUFLAG_AVX2  -I/export/dpdk-master/build/include -include
/export/dpdk-master/build/include/rte_config.h -O3 -W -Wall
-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations
-Wold-style-definition -Wpointer-arith -Wcast-align -Wnested-externs
-Wcast-qual -Wformat-nonliteral -Wformat-security -Wundef
-Wwrite-strings -Werror testpmd.o parameters.o cmdline.o cmdline_flow.o
config.o iofwd.o macfwd.o macswap.o flowgen.o rxonly.o txonly.o
csumonly.o icmpecho.o -L/export/dpdk-master/build/lib -Wl,-lrte_kni
-Wl,-lrte_pipeline -Wl,-lrte_table -Wl,-lrte_port -Wl,-lrte_pdump
-Wl,-lrte_distributor -Wl,-lrte_reorder -Wl,-lrte_ip_frag
-Wl,-lrte_meter -Wl,-lrte_sched -Wl,-lrte_lpm -Wl,--whole-archive
-Wl,-lrte_acl -Wl,--no-whole-archive -Wl,-lrte_jobstats -Wl,-lrte_power
-Wl,--whole-archive -Wl,-lrte_timer -Wl,-lrte_hash -Wl,-lrte_vhost
-Wl,-lrte_kvargs -Wl,-lrte_mbuf -Wl,-lrte_net -Wl,-lrte_ethdev
-Wl,-lrte_cryptodev -Wl,-lrte_eventdev -Wl,-lrte_mempool -Wl,-lrte_ring
-Wl,-lrte_eal -Wl,-lrte_cmdline -Wl,-lrte_cfgfile -Wl,-lrte_pmd_bond
-Wl,--no-whole-archive -Wl,-lgcc_s -Wl,-ldl -Wl,-export-dynamic
-Wl,-export-dynamic -Wl,-export-dynamic -L/export/dpdk-master/build/lib
-Wl,--as-needed -Wl,-rpath=/export/dpdk-master/build/lib
-Wl,-Map=testpmd.map -Wl,--cref 
cmdline.o: In function `cmd_set_vf_vlan_anti_spoof_parsed':
cmdline.c:(.text+0x4b3a): undefined reference to
`rte_pmd_ixgbe_set_vf_vlan_anti_spoof'
cmdline.o: In function `cmd_set_vf_mac_anti_spoof_parsed':
cmdline.c:(.text+0x4c02): undefined reference to
`rte_pmd_ixgbe_set_vf_mac_anti_spoof'
cmdline.o: In function `cmd_set_vf_vlan_stripq_parsed':
cmdline.c:(.text+0x4cd2): undefined reference to
`rte_pmd_ixgbe_set_vf_vlan_stripq'
cmdline.o: In function `cmd_set_vf_split_drop_en_parsed':
cmdline.c:(.text+0x4da2): undefined reference to
`rte_pmd_ixgbe_set_vf_split_drop_en'
cmdline.o: In function `cmd_set_vf_vlan_insert_parsed':
cmdline.c:(.text+0x5eda): undefined reference to
`rte_pmd_ixgbe_set_vf_vlan_insert'
cmdline.o: In function `cmd_set_tx_loopback_parsed':
cmdline.c:(.text+0x5f8b): undefined reference to
`rte_pmd_ixgbe_set_tx_loopback'
cmdline.o: In function `cmd_set_all_queues_drop_en_parsed':
cmdline.c:(.text+0x604b): undefined reference to
`rte_pmd_ixgbe_set_all_queues_drop_en'
cmdline.o: In function `cmd_set_vf_mac_addr_parsed':
cmdline.c:(.text+0x60ea): undefined reference to
`rte_pmd_ixgbe_set_vf_mac_addr'
collect2: error: ld returned 1 exit status
/export/dpdk-master/mk/rte.app.mk:236: recipe for target 'testpmd'
failed
make[3]: *** [testpmd] Error 1
/export/dpdk-master/mk/rte.subdir.mk:61: recipe for target 'test-pmd'
failed
make[2]: *** [test-pmd] Error 2
/export/dpdk-master/mk/rte.sdkbuild.mk:78: recipe for target 'app'
failed
make[1]: *** [app] Error 2
/export/dpdk-master/mk/rte.sdkroot.mk:130: recipe for target 'all'
failed
make: *** [all] Error 2

 

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH] app/testpmd: fix static build link ordering
  2017-01-12 13:58   ` Jerin Jacob
@ 2017-01-12 15:27     ` Ferruh Yigit
  2017-01-13  3:21       ` Jerin Jacob
  0 siblings, 1 reply; 12+ messages in thread
From: Ferruh Yigit @ 2017-01-12 15:27 UTC (permalink / raw)
  To: Jerin Jacob, Thomas Monjalon; +Cc: dev, stable

On 1/12/2017 1:58 PM, Jerin Jacob wrote:
> On Thu, Jan 12, 2017 at 10:26:08AM +0100, Thomas Monjalon wrote:
>> 2017-01-12 13:16, Jerin Jacob:
>>> +ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
>>>  _LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
>>> +endif
>>
>> _LDLIBS is an internal variable of rte.app.mk.
>> Please could you check that there is no issue when using LDLIBS instead
>> of _LDLIBS?
> 
> Tested it. Suggested change has issue in shared lib configuration.
> 
> [dpdk-master] $ git diff
> diff --git a/app/test-pmd/Makefile b/app/test-pmd/Makefile
> index 050663a..27cadd5 100644
> --- a/app/test-pmd/Makefile
> +++ b/app/test-pmd/Makefile
> @@ -59,9 +59,7 @@ SRCS-y += csumonly.c
>  SRCS-y += icmpecho.c
>  SRCS-$(CONFIG_RTE_LIBRTE_IEEE1588) += ieee1588fwd.c
>  
> -ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
> -_LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
> -endif
> +LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe

It is LDLIBS instead of LDLIBS-y, following may work:

-_LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
+ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
+ifeq ($(CONFIG_RTE_LIBRTE_IXGBE_PMD),y)
+LDLIBS += -lrte_pmd_ixgbe
+endif
+endif


Also using EXTRA_LDLIBS instead of LDLIBS may remove the requirement of
the SHARED_LIB check, because of where it is located, but this seems
just coincidental.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] app/testpmd: fix static build link ordering
  2017-01-12 15:27     ` Ferruh Yigit
@ 2017-01-13  3:21       ` Jerin Jacob
  2017-01-13 15:53         ` Thomas Monjalon
  0 siblings, 1 reply; 12+ messages in thread
From: Jerin Jacob @ 2017-01-13  3:21 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: Thomas Monjalon, dev, stable

On Thu, Jan 12, 2017 at 03:27:30PM +0000, Ferruh Yigit wrote:
> On 1/12/2017 1:58 PM, Jerin Jacob wrote:
> > On Thu, Jan 12, 2017 at 10:26:08AM +0100, Thomas Monjalon wrote:
> >> 2017-01-12 13:16, Jerin Jacob:
> >>> +ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
> >>>  _LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
> >>> +endif
> >>
> >> _LDLIBS is an internal variable of rte.app.mk.
> >> Please could you check that there is no issue when using LDLIBS instead
> >> of _LDLIBS?
> > 
> > Tested it. Suggested change has issue in shared lib configuration.
> > 
> > [dpdk-master] $ git diff
> > diff --git a/app/test-pmd/Makefile b/app/test-pmd/Makefile
> > index 050663a..27cadd5 100644
> > --- a/app/test-pmd/Makefile
> > +++ b/app/test-pmd/Makefile
> > @@ -59,9 +59,7 @@ SRCS-y += csumonly.c
> >  SRCS-y += icmpecho.c
> >  SRCS-$(CONFIG_RTE_LIBRTE_IEEE1588) += ieee1588fwd.c
> >  
> > -ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
> > -_LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
> > -endif
> > +LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
> 
> It is LDLIBS instead of LDLIBS-y, following may work:

LDLIBS is not helping the situation as LDLIBS comes before the _LDLIBS-y
mk/rte.app.mk:LDLIBS += $(_LDLIBS-y) $(CPU_LDLIBS) $(EXTRA_LDLIBS)

But moving to EXTRA_LDLIBS looks OK.But it has to be under CONFIG_RTE_LIBRTE_IXGBE_PMD

Thomas, Ferruh
Let me know if you have any objection on below mentioned diff

[master] $ git diff
app/test-pmd/Makefile 
diff --git a/app/test-pmd/Makefile b/app/test-pmd/Makefile
index 050663a..2be8c50 100644
--- a/app/test-pmd/Makefile
+++ b/app/test-pmd/Makefile
@@ -59,8 +59,8 @@ SRCS-y += csumonly.c
 SRCS-y += icmpecho.c
 SRCS-$(CONFIG_RTE_LIBRTE_IEEE1588) += ieee1588fwd.c
 
-ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
-_LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
+ifeq ($(CONFIG_RTE_LIBRTE_IXGBE_PMD),y)
+EXTRA_LDLIBS += -lrte_pmd_ixgbe
 endif
 
 CFLAGS_cmdline.o := -D_GNU_SOURCE


> 
> -_LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
> +ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
> +ifeq ($(CONFIG_RTE_LIBRTE_IXGBE_PMD),y)
> +LDLIBS += -lrte_pmd_ixgbe
> +endif
> +endif
> 
> 
> Also using EXTRA_LDLIBS instead of LDLIBS may remove the requirement of
> the SHARED_LIB check, because of where it is located, but this seems
> just coincidental.
> 
> 
> 

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH] app/testpmd: fix static build link ordering
  2017-01-13  3:21       ` Jerin Jacob
@ 2017-01-13 15:53         ` Thomas Monjalon
  2017-01-13 15:57           ` Ferruh Yigit
  2017-01-13 16:02           ` Jerin Jacob
  0 siblings, 2 replies; 12+ messages in thread
From: Thomas Monjalon @ 2017-01-13 15:53 UTC (permalink / raw)
  To: Jerin Jacob; +Cc: Ferruh Yigit, dev, stable

2017-01-13 08:51, Jerin Jacob:
> On Thu, Jan 12, 2017 at 03:27:30PM +0000, Ferruh Yigit wrote:
> > On 1/12/2017 1:58 PM, Jerin Jacob wrote:
> > > On Thu, Jan 12, 2017 at 10:26:08AM +0100, Thomas Monjalon wrote:
> > >> 2017-01-12 13:16, Jerin Jacob:
> > >>> +ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
> > >>>  _LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
> > >>> +endif
> > >>
> > >> _LDLIBS is an internal variable of rte.app.mk.
> > >> Please could you check that there is no issue when using LDLIBS instead
> > >> of _LDLIBS?
> > > 
> LDLIBS is not helping the situation as LDLIBS comes before the _LDLIBS-y
> mk/rte.app.mk:LDLIBS += $(_LDLIBS-y) $(CPU_LDLIBS) $(EXTRA_LDLIBS)
> 
> But moving to EXTRA_LDLIBS looks OK.But it has to be under CONFIG_RTE_LIBRTE_IXGBE_PMD
> 
> Thomas, Ferruh
> Let me know if you have any objection on below mentioned diff
> 
> -ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
> -_LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
> +ifeq ($(CONFIG_RTE_LIBRTE_IXGBE_PMD),y)
> +EXTRA_LDLIBS += -lrte_pmd_ixgbe
>  endif

You need to keep the shared lib check.
Anyway, EXTRA_LDLIBS should be reserved to users and not used in a Makefile.
I prefer your initial patch using _LDLIBS.

Any objection to merge initial proposal?

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] app/testpmd: fix static build link ordering
  2017-01-13 15:53         ` Thomas Monjalon
@ 2017-01-13 15:57           ` Ferruh Yigit
  2017-01-13 16:01             ` Jerin Jacob
  2017-01-13 16:02           ` Jerin Jacob
  1 sibling, 1 reply; 12+ messages in thread
From: Ferruh Yigit @ 2017-01-13 15:57 UTC (permalink / raw)
  To: Thomas Monjalon, Jerin Jacob; +Cc: dev, stable

On 1/13/2017 3:53 PM, Thomas Monjalon wrote:
> 2017-01-13 08:51, Jerin Jacob:
>> On Thu, Jan 12, 2017 at 03:27:30PM +0000, Ferruh Yigit wrote:
>>> On 1/12/2017 1:58 PM, Jerin Jacob wrote:
>>>> On Thu, Jan 12, 2017 at 10:26:08AM +0100, Thomas Monjalon wrote:
>>>>> 2017-01-12 13:16, Jerin Jacob:
>>>>>> +ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
>>>>>>  _LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
>>>>>> +endif
>>>>>
>>>>> _LDLIBS is an internal variable of rte.app.mk.
>>>>> Please could you check that there is no issue when using LDLIBS instead
>>>>> of _LDLIBS?
>>>>
>> LDLIBS is not helping the situation as LDLIBS comes before the _LDLIBS-y
>> mk/rte.app.mk:LDLIBS += $(_LDLIBS-y) $(CPU_LDLIBS) $(EXTRA_LDLIBS)
>>
>> But moving to EXTRA_LDLIBS looks OK.But it has to be under CONFIG_RTE_LIBRTE_IXGBE_PMD
>>
>> Thomas, Ferruh
>> Let me know if you have any objection on below mentioned diff
>>
>> -ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
>> -_LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
>> +ifeq ($(CONFIG_RTE_LIBRTE_IXGBE_PMD),y)
>> +EXTRA_LDLIBS += -lrte_pmd_ixgbe
>>  endif
> 
> You need to keep the shared lib check.
> Anyway, EXTRA_LDLIBS should be reserved to users and not used in a Makefile.
> I prefer your initial patch using _LDLIBS.
> 
> Any objection to merge initial proposal?
> 

LDLIBS should be OK, as long as wrapped with SHARED check. Is following
not working:

-_LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
+ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
+ifeq ($(CONFIG_RTE_LIBRTE_IXGBE_PMD),y)
+LDLIBS += -lrte_pmd_ixgbe
+endif
+endif

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] app/testpmd: fix static build link ordering
  2017-01-13 15:57           ` Ferruh Yigit
@ 2017-01-13 16:01             ` Jerin Jacob
  2017-01-13 16:12               ` Ferruh Yigit
  0 siblings, 1 reply; 12+ messages in thread
From: Jerin Jacob @ 2017-01-13 16:01 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: Thomas Monjalon, dev, stable

On Fri, Jan 13, 2017 at 03:57:59PM +0000, Ferruh Yigit wrote:
> On 1/13/2017 3:53 PM, Thomas Monjalon wrote:
> > 2017-01-13 08:51, Jerin Jacob:
> >> On Thu, Jan 12, 2017 at 03:27:30PM +0000, Ferruh Yigit wrote:
> >>> On 1/12/2017 1:58 PM, Jerin Jacob wrote:
> >>>> On Thu, Jan 12, 2017 at 10:26:08AM +0100, Thomas Monjalon wrote:
> >>>>> 2017-01-12 13:16, Jerin Jacob:
> >>>>>> +ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
> >>>>>>  _LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
> >>>>>> +endif
> >>>>>
> >>>>> _LDLIBS is an internal variable of rte.app.mk.
> >>>>> Please could you check that there is no issue when using LDLIBS instead
> >>>>> of _LDLIBS?
> >>>>
> >> LDLIBS is not helping the situation as LDLIBS comes before the _LDLIBS-y
> >> mk/rte.app.mk:LDLIBS += $(_LDLIBS-y) $(CPU_LDLIBS) $(EXTRA_LDLIBS)
> >>
> >> But moving to EXTRA_LDLIBS looks OK.But it has to be under CONFIG_RTE_LIBRTE_IXGBE_PMD
> >>
> >> Thomas, Ferruh
> >> Let me know if you have any objection on below mentioned diff
> >>
> >> -ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
> >> -_LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
> >> +ifeq ($(CONFIG_RTE_LIBRTE_IXGBE_PMD),y)
> >> +EXTRA_LDLIBS += -lrte_pmd_ixgbe
> >>  endif
> > 
> > You need to keep the shared lib check.
> > Anyway, EXTRA_LDLIBS should be reserved to users and not used in a Makefile.
> > I prefer your initial patch using _LDLIBS.
> > 
> > Any objection to merge initial proposal?
> > 
> 
> LDLIBS should be OK, as long as wrapped with SHARED check. Is following
> not working:

No, due to the following line
mk/rte.app.mk:LDLIBS += $(_LDLIBS-y) $(CPU_LDLIBS) $(EXTRA_LDLIBS)

Again -lrte_pmd_ixgbe comes first.

> 
> -_LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
> +ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
> +ifeq ($(CONFIG_RTE_LIBRTE_IXGBE_PMD),y)
> +LDLIBS += -lrte_pmd_ixgbe
> +endif
> +endif

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] app/testpmd: fix static build link ordering
  2017-01-13 15:53         ` Thomas Monjalon
  2017-01-13 15:57           ` Ferruh Yigit
@ 2017-01-13 16:02           ` Jerin Jacob
  1 sibling, 0 replies; 12+ messages in thread
From: Jerin Jacob @ 2017-01-13 16:02 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: Ferruh Yigit, dev, stable

On Fri, Jan 13, 2017 at 04:53:46PM +0100, Thomas Monjalon wrote:
> 2017-01-13 08:51, Jerin Jacob:
> > On Thu, Jan 12, 2017 at 03:27:30PM +0000, Ferruh Yigit wrote:
> > > On 1/12/2017 1:58 PM, Jerin Jacob wrote:
> > > > On Thu, Jan 12, 2017 at 10:26:08AM +0100, Thomas Monjalon wrote:
> > > >> 2017-01-12 13:16, Jerin Jacob:
> > > >>> +ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
> > > >>>  _LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
> > > >>> +endif
> > > >>
> > > >> _LDLIBS is an internal variable of rte.app.mk.
> > > >> Please could you check that there is no issue when using LDLIBS instead
> > > >> of _LDLIBS?
> > > > 
> > LDLIBS is not helping the situation as LDLIBS comes before the _LDLIBS-y
> > mk/rte.app.mk:LDLIBS += $(_LDLIBS-y) $(CPU_LDLIBS) $(EXTRA_LDLIBS)
> > 
> > But moving to EXTRA_LDLIBS looks OK.But it has to be under CONFIG_RTE_LIBRTE_IXGBE_PMD
> > 
> > Thomas, Ferruh
> > Let me know if you have any objection on below mentioned diff
> > 
> > -ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
> > -_LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
> > +ifeq ($(CONFIG_RTE_LIBRTE_IXGBE_PMD),y)
> > +EXTRA_LDLIBS += -lrte_pmd_ixgbe
> >  endif
> 
> You need to keep the shared lib check.
> Anyway, EXTRA_LDLIBS should be reserved to users and not used in a Makefile.
> I prefer your initial patch using _LDLIBS.
> 
> Any objection to merge initial proposal?

from my side, No

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] app/testpmd: fix static build link ordering
  2017-01-13 16:01             ` Jerin Jacob
@ 2017-01-13 16:12               ` Ferruh Yigit
  2017-01-31 10:58                 ` Ferruh Yigit
  0 siblings, 1 reply; 12+ messages in thread
From: Ferruh Yigit @ 2017-01-13 16:12 UTC (permalink / raw)
  To: Jerin Jacob; +Cc: Thomas Monjalon, dev, stable

On 1/13/2017 4:01 PM, Jerin Jacob wrote:
> On Fri, Jan 13, 2017 at 03:57:59PM +0000, Ferruh Yigit wrote:
>> On 1/13/2017 3:53 PM, Thomas Monjalon wrote:
>>> 2017-01-13 08:51, Jerin Jacob:
>>>> On Thu, Jan 12, 2017 at 03:27:30PM +0000, Ferruh Yigit wrote:
>>>>> On 1/12/2017 1:58 PM, Jerin Jacob wrote:
>>>>>> On Thu, Jan 12, 2017 at 10:26:08AM +0100, Thomas Monjalon wrote:
>>>>>>> 2017-01-12 13:16, Jerin Jacob:
>>>>>>>> +ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
>>>>>>>>  _LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
>>>>>>>> +endif
>>>>>>>
>>>>>>> _LDLIBS is an internal variable of rte.app.mk.
>>>>>>> Please could you check that there is no issue when using LDLIBS instead
>>>>>>> of _LDLIBS?
>>>>>>
>>>> LDLIBS is not helping the situation as LDLIBS comes before the _LDLIBS-y
>>>> mk/rte.app.mk:LDLIBS += $(_LDLIBS-y) $(CPU_LDLIBS) $(EXTRA_LDLIBS)
>>>>
>>>> But moving to EXTRA_LDLIBS looks OK.But it has to be under CONFIG_RTE_LIBRTE_IXGBE_PMD
>>>>
>>>> Thomas, Ferruh
>>>> Let me know if you have any objection on below mentioned diff
>>>>
>>>> -ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
>>>> -_LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
>>>> +ifeq ($(CONFIG_RTE_LIBRTE_IXGBE_PMD),y)
>>>> +EXTRA_LDLIBS += -lrte_pmd_ixgbe
>>>>  endif
>>>
>>> You need to keep the shared lib check.
>>> Anyway, EXTRA_LDLIBS should be reserved to users and not used in a Makefile.
>>> I prefer your initial patch using _LDLIBS.
>>>
>>> Any objection to merge initial proposal?
>>>
>>
>> LDLIBS should be OK, as long as wrapped with SHARED check. Is following
>> not working:
> 
> No, due to the following line
> mk/rte.app.mk:LDLIBS += $(_LDLIBS-y) $(CPU_LDLIBS) $(EXTRA_LDLIBS)
> 
> Again -lrte_pmd_ixgbe comes first.

You are right.

No objection to initial proposal.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] app/testpmd: fix static build link ordering
  2017-01-12  7:46 [PATCH] app/testpmd: fix static build link ordering Jerin Jacob
  2017-01-12  9:26 ` Thomas Monjalon
@ 2017-01-13 16:31 ` Thomas Monjalon
  1 sibling, 0 replies; 12+ messages in thread
From: Thomas Monjalon @ 2017-01-13 16:31 UTC (permalink / raw)
  To: Jerin Jacob; +Cc: dev, ferruh.yigit, stable

2017-01-12 13:16, Jerin Jacob:
> By introducing explicit -lrte_pmd_ixgbe link request in
> testpmd Makefile,"-Wl,-lrte_pmd_ixgbe" provided twice, and linker
> removes the duplication by keeping only first occurrence.
> This moves "-Wl,-lrte_pmd_ixgbe" out of "-Wl,--whole-archive" flag
> and makes symbol generation totally different than previous version
> in case of static build.
> This patch fixes the static build linking order by introducing
> -lrte_pmd_ixgbe under the shared library config
> (CONFIG_RTE_BUILD_SHARED_LIB).
> 
> Fixes: 425781ff5afe ("app/testpmd: add ixgbe VF management")
> 
> CC: stable@dpdk.org
> Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>

Applied, thanks

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] app/testpmd: fix static build link ordering
  2017-01-13 16:12               ` Ferruh Yigit
@ 2017-01-31 10:58                 ` Ferruh Yigit
  0 siblings, 0 replies; 12+ messages in thread
From: Ferruh Yigit @ 2017-01-31 10:58 UTC (permalink / raw)
  To: Jerin Jacob; +Cc: Thomas Monjalon, dev, stable

On 1/13/2017 4:12 PM, Ferruh Yigit wrote:
> On 1/13/2017 4:01 PM, Jerin Jacob wrote:
>> On Fri, Jan 13, 2017 at 03:57:59PM +0000, Ferruh Yigit wrote:
>>> On 1/13/2017 3:53 PM, Thomas Monjalon wrote:
>>>> 2017-01-13 08:51, Jerin Jacob:
>>>>> On Thu, Jan 12, 2017 at 03:27:30PM +0000, Ferruh Yigit wrote:
>>>>>> On 1/12/2017 1:58 PM, Jerin Jacob wrote:
>>>>>>> On Thu, Jan 12, 2017 at 10:26:08AM +0100, Thomas Monjalon wrote:
>>>>>>>> 2017-01-12 13:16, Jerin Jacob:
>>>>>>>>> +ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
>>>>>>>>>  _LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
>>>>>>>>> +endif
>>>>>>>>
>>>>>>>> _LDLIBS is an internal variable of rte.app.mk.
>>>>>>>> Please could you check that there is no issue when using LDLIBS instead
>>>>>>>> of _LDLIBS?
>>>>>>>
>>>>> LDLIBS is not helping the situation as LDLIBS comes before the _LDLIBS-y
>>>>> mk/rte.app.mk:LDLIBS += $(_LDLIBS-y) $(CPU_LDLIBS) $(EXTRA_LDLIBS)
>>>>>
>>>>> But moving to EXTRA_LDLIBS looks OK.But it has to be under CONFIG_RTE_LIBRTE_IXGBE_PMD
>>>>>
>>>>> Thomas, Ferruh
>>>>> Let me know if you have any objection on below mentioned diff
>>>>>
>>>>> -ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
>>>>> -_LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe
>>>>> +ifeq ($(CONFIG_RTE_LIBRTE_IXGBE_PMD),y)
>>>>> +EXTRA_LDLIBS += -lrte_pmd_ixgbe
>>>>>  endif
>>>>
>>>> You need to keep the shared lib check.
>>>> Anyway, EXTRA_LDLIBS should be reserved to users and not used in a Makefile.
>>>> I prefer your initial patch using _LDLIBS.
>>>>
>>>> Any objection to merge initial proposal?
>>>>
>>>
>>> LDLIBS should be OK, as long as wrapped with SHARED check. Is following
>>> not working:
>>
>> No, due to the following line
>> mk/rte.app.mk:LDLIBS += $(_LDLIBS-y) $(CPU_LDLIBS) $(EXTRA_LDLIBS)
>>
>> Again -lrte_pmd_ixgbe comes first.
> 
> You are right.

After second thought.
-lrte_pmd_ixgbe coming first is problem for static compilation, but
these libraries used only for dynamic compilation. And locations
shouldn't matter with dynamic compilation.

Can you please try converting to the following, that should work:

+ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
+ifeq ($(CONFIG_RTE_LIBRTE_IXGBE_PMD),y)
+LDLIBS += -lrte_pmd_ixgbe
+endif
+endif

I will send a patch for this.

> 
> No objection to initial proposal.
> 

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2017-01-31 10:58 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-12  7:46 [PATCH] app/testpmd: fix static build link ordering Jerin Jacob
2017-01-12  9:26 ` Thomas Monjalon
2017-01-12 13:58   ` Jerin Jacob
2017-01-12 15:27     ` Ferruh Yigit
2017-01-13  3:21       ` Jerin Jacob
2017-01-13 15:53         ` Thomas Monjalon
2017-01-13 15:57           ` Ferruh Yigit
2017-01-13 16:01             ` Jerin Jacob
2017-01-13 16:12               ` Ferruh Yigit
2017-01-31 10:58                 ` Ferruh Yigit
2017-01-13 16:02           ` Jerin Jacob
2017-01-13 16:31 ` Thomas Monjalon

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.