It appeared in commit 21cdc2e77a4ca999 ("fix 32-bit link with gcc")
that linker options must be prefixed by -Wl, when using CC.
So CPU_LDFLAGS is prefixed in rte.lib.mk.
Then commit 815cfb7925bb6de ("fix link of combined shared library using CC")
introduced another prefixing of CPU_LDFLAGS in rte.sharelib.mk,
included in lib/Makefile.
Because CPU_LDFLAGS is an exported variable, the prefixing is done twice.
Initial patch of commit 815cfb7925bb6de had a workaround but it hasn't
been applied in favor of this proper fix.

Now variables are not overriden when prefixing.

Signed-off-by: Thomas Monjalon <thomas.monjalon at 6wind.com>
---
 mk/rte.app.mk      | 5 ++---
 mk/rte.lib.mk      | 6 ++++--
 mk/rte.shared.mk   | 6 ++----
 mk/rte.sharelib.mk | 8 +++++---
 4 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/mk/rte.app.mk b/mk/rte.app.mk
index 3c35985..e1a0dbf 100644
--- a/mk/rte.app.mk
+++ b/mk/rte.app.mk
@@ -256,11 +256,10 @@ LDLIBS += -l$(RTE_LIBNAME)
 endif

 ifeq ($(LINK_USING_CC),1)
-LDLIBS := $(call linkerprefix,$(LDLIBS))
-LDFLAGS := $(call linkerprefix,$(LDFLAGS))
 override EXTRA_LDFLAGS := $(call linkerprefix,$(EXTRA_LDFLAGS))
 O_TO_EXE = $(CC) $(CFLAGS) $(LDFLAGS_$(@)) \
-       -Wl,-Map=$(@).map,--cref -o $@ $(OBJS-y) $(LDFLAGS) $(EXTRA_LDFLAGS) 
$(LDLIBS)
+       -Wl,-Map=$(@).map,--cref -o $@ $(OBJS-y) $(call 
linkerprefix,$(LDFLAGS)) \
+       $(EXTRA_LDFLAGS) $(call linkerprefix,$(LDLIBS))
 else
 O_TO_EXE = $(LD) $(LDFLAGS) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \
        -Map=$(@).map --cref -o $@ $(OBJS-y) $(LDLIBS)
diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
index a67c129..81bf8e1 100644
--- a/mk/rte.lib.mk
+++ b/mk/rte.lib.mk
@@ -62,7 +62,9 @@ exe2cmd = $(strip $(call dotfile,$(patsubst %,%.cmd,$(1))))
 ifeq ($(LINK_USING_CC),1)
 # Override the definition of LD here, since we're linking with CC
 LD := $(CC) $(CPU_CFLAGS)
-CPU_LDFLAGS := $(call linkerprefix,$(CPU_LDFLAGS))
+_CPU_LDFLAGS := $(call linkerprefix,$(CPU_LDFLAGS))
+else
+_CPU_LDFLAGS := $(CPU_LDFLAGS)
 endif

 O_TO_A = $(AR) crus $(LIB) $(OBJS-y)
@@ -74,7 +76,7 @@ O_TO_A_DO = @set -e; \
        $(O_TO_A) && \
        echo $(O_TO_A_CMD) > $(call exe2cmd,$(@))

-O_TO_S = $(LD) $(CPU_LDFLAGS) -shared $(OBJS-y) -o $(LIB)
+O_TO_S = $(LD) $(_CPU_LDFLAGS) -shared $(OBJS-y) -o $(LIB)
 O_TO_S_STR = $(subst ','\'',$(O_TO_S)) #'# fix syntax highlight
 O_TO_S_DISP = $(if $(V),"$(O_TO_S_STR)","  LD $(@)")
 O_TO_S_DO = @set -e; \
diff --git a/mk/rte.shared.mk b/mk/rte.shared.mk
index 42feee7..fc6b0b4 100644
--- a/mk/rte.shared.mk
+++ b/mk/rte.shared.mk
@@ -58,11 +58,9 @@ build: _postbuild
 exe2cmd = $(strip $(call dotfile,$(patsubst %,%.cmd,$(1))))

 ifeq ($(LINK_USING_CC),1)
-LDLIBS := $(call linkerprefix,$(LDLIBS))
-LDFLAGS := $(call linkerprefix,$(LDFLAGS))
 override EXTRA_LDFLAGS := $(call linkerprefix,$(EXTRA_LDFLAGS))
-O_TO_SO = $(CC) $(LDFLAGS) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \
-       -shared -o $@ $(OBJS-y) $(LDLIBS)
+O_TO_SO = $(CC) $(call linkerprefix,$(LDFLAGS)) $(LDFLAGS_$(@)) 
$(EXTRA_LDFLAGS) \
+       -shared -o $@ $(OBJS-y) $(call linkerprefix,$(LDLIBS))
 else
 O_TO_SO = $(LD) $(LDFLAGS) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \
        -shared -o $@ $(OBJS-y) $(LDLIBS)
diff --git a/mk/rte.sharelib.mk b/mk/rte.sharelib.mk
index d0cc7e3..de53558 100644
--- a/mk/rte.sharelib.mk
+++ b/mk/rte.sharelib.mk
@@ -50,11 +50,13 @@ OBJS = $(wildcard $(RTE_OUTPUT)/build/lib/*.o)
 ifeq ($(LINK_USING_CC),1)
 # Override the definition of LD here, since we're linking with CC
 LD := $(CC) $(CPU_CFLAGS)
-CPU_LDFLAGS := $(call linkerprefix,$(CPU_LDFLAGS))
+O_TO_S = $(LD) $(call linkerprefix,$(CPU_LDFLAGS)) \
+       -shared $(OBJS) -o $(RTE_OUTPUT)/lib/$(LIB_ONE)
+else
+O_TO_S = $(LD) $(CPU_LDFLAGS) \
+       -shared $(OBJS) -o $(RTE_OUTPUT)/lib/$(LIB_ONE)
 endif

-O_TO_S = $(LD) $(CPU_LDFLAGS) -shared $(OBJS) \
-       -o $(RTE_OUTPUT)/lib/$(LIB_ONE)
 O_TO_S_STR = $(subst ','\'',$(O_TO_S)) #'# fix syntax highlight
 O_TO_S_DISP = $(if $(V),"$(O_TO_S_STR)","  LD $(@)")
 O_TO_S_CMD = "cmd_$@ = $(O_TO_S_STR)"
-- 
2.1.3

Reply via email to