mk: add EXTRA_CFLAGS to link step for shared library

Message ID 20191105015642.17385-1-stephen@networkplumber.org (mailing list archive)
State Rejected, archived
Delegated to: Thomas Monjalon
Headers
Series mk: add EXTRA_CFLAGS to link step for shared library |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-compilation success Compile Testing PASS
ci/Intel-compilation success Compilation OK
ci/iol-mellanox-Performance success Performance Testing PASS
ci/travis-robot success Travis build: passed

Commit Message

Stephen Hemminger Nov. 5, 2019, 1:56 a.m. UTC
  When doing a cross compiling it is common to use EXTRA_CFLAGS with
--sysroot option to point to alternate root filesystem. This already
works as expected for objects and executables, it just doesn't work
correctly for shared libraries.

When a shared library is linked using CC this flag needs to
be passed in order for libraries to be found.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 mk/rte.shared.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Thomas Monjalon Nov. 25, 2019, 10:56 p.m. UTC | #1
05/11/2019 02:56, Stephen Hemminger:
> When doing a cross compiling it is common to use EXTRA_CFLAGS with
> --sysroot option to point to alternate root filesystem. This already
> works as expected for objects and executables, it just doesn't work
> correctly for shared libraries.
> 
> When a shared library is linked using CC this flag needs to
> be passed in order for libraries to be found.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
> --- a/mk/rte.shared.mk
> +++ b/mk/rte.shared.mk
> -O_TO_SO = $(CC) $(call linkerprefix,$(LDFLAGS)) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \
> +O_TO_SO = $(CC) $(EXTRA_CFLAGS) $(call linkerprefix,$(LDFLAGS)) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \
>  	-shared -o $@ $(OBJS-y) $(call linkerprefix,$(LDLIBS))

After several thoughts, I am afraid of the possible side effects
of such a change.
I think only LDFLAGS should be used when linking.
If you need the same parameters at compilation and linking,
you should pass the same parameters to CFLAGS and LDFLAGS.
  
Stephen Hemminger Nov. 26, 2019, 1:44 a.m. UTC | #2
On Mon, 25 Nov 2019 23:56:00 +0100
Thomas Monjalon <thomas@monjalon.net> wrote:

> 05/11/2019 02:56, Stephen Hemminger:
> > When doing a cross compiling it is common to use EXTRA_CFLAGS with
> > --sysroot option to point to alternate root filesystem. This already
> > works as expected for objects and executables, it just doesn't work
> > correctly for shared libraries.
> > 
> > When a shared library is linked using CC this flag needs to
> > be passed in order for libraries to be found.
> > 
> > Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> > ---
> > --- a/mk/rte.shared.mk
> > +++ b/mk/rte.shared.mk
> > -O_TO_SO = $(CC) $(call linkerprefix,$(LDFLAGS)) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \
> > +O_TO_SO = $(CC) $(EXTRA_CFLAGS) $(call linkerprefix,$(LDFLAGS)) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \
> >  	-shared -o $@ $(OBJS-y) $(call linkerprefix,$(LDLIBS))  
> 
> After several thoughts, I am afraid of the possible side effects
> of such a change.
> I think only LDFLAGS should be used when linking.
> If you need the same parameters at compilation and linking,
> you should pass the same parameters to CFLAGS and LDFLAGS.

Let me try same thing with EXTRA_LDFLAGS
  

Patch

diff --git a/mk/rte.shared.mk b/mk/rte.shared.mk
index 2b501ddb8480..a0620a3eb233 100644
--- a/mk/rte.shared.mk
+++ b/mk/rte.shared.mk
@@ -31,7 +31,7 @@  exe2cmd = $(strip $(call dotfile,$(patsubst %,%.cmd,$(1))))
 
 ifeq ($(LINK_USING_CC),1)
 override EXTRA_LDFLAGS := $(call linkerprefix,$(EXTRA_LDFLAGS))
-O_TO_SO = $(CC) $(call linkerprefix,$(LDFLAGS)) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \
+O_TO_SO = $(CC) $(EXTRA_CFLAGS) $(call linkerprefix,$(LDFLAGS)) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \
 	-shared -o $@ $(OBJS-y) $(call linkerprefix,$(LDLIBS))
 else
 O_TO_SO = $(LD) $(LDFLAGS) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \