DPDK patches and discussions
 help / color / mirror / Atom feed
From: Thomas Monjalon <thomas.monjalon@6wind.com>
To: dev@dpdk.org
Subject: [dpdk-dev] [PATCH 3/3] mk: fix link with CC
Date: Wed, 17 Dec 2014 22:59:18 +0100	[thread overview]
Message-ID: <1418853558-2445-4-git-send-email-thomas.monjalon@6wind.com> (raw)
In-Reply-To: <1418853558-2445-1-git-send-email-thomas.monjalon@6wind.com>

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@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

  parent reply	other threads:[~2014-12-17 21:59 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-23 15:35 [dpdk-dev] [PATCH] mk: link combined lib using CC Sergio Gonzalez Monroy
2014-10-28 11:45 ` De Lara Guarch, Pablo
2014-10-28 14:51   ` Sergio Gonzalez Monroy
2014-10-28 15:33     ` Thomas Monjalon
2014-10-28 15:39       ` Sergio Gonzalez Monroy
2014-10-28 15:48 ` [dpdk-dev] [PATCH v2] mk: link combined shared " Sergio Gonzalez Monroy
2014-10-28 16:09   ` De Lara Guarch, Pablo
2014-12-16 18:48   ` Thomas Monjalon
2014-12-16 23:42     ` Thomas Monjalon
2014-12-17 10:41       ` Gonzalez Monroy, Sergio
2014-12-17 14:01         ` Thomas Monjalon
2014-12-17 18:49           ` Thomas Monjalon
2014-12-17 21:59             ` [dpdk-dev] [PATCH 0/3] mk: fix link options Thomas Monjalon
2014-12-17 21:59               ` [dpdk-dev] [PATCH 1/3] mk: fix link examples to combined library Thomas Monjalon
2014-12-17 21:59               ` [dpdk-dev] [PATCH 2/3] mk: forbid multiple definitions Thomas Monjalon
2014-12-17 21:59               ` Thomas Monjalon [this message]
2014-12-17 23:35               ` [dpdk-dev] [PATCH 0/3] mk: fix link options Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1418853558-2445-4-git-send-email-thomas.monjalon@6wind.com \
    --to=thomas.monjalon@6wind.com \
    --cc=dev@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).