mk: add EXTRA_CFLAGS to link step for shared library
Checks
Commit Message
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
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.
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
@@ -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) \