summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Monjalon <thomas.monjalon@6wind.com>2014-12-17 18:07:17 +0100
committerThomas Monjalon <thomas.monjalon@6wind.com>2014-12-17 22:54:20 +0100
commit3c6a14f6b9667322c5674526c1d904b175f5f3bc (patch)
tree70ec0e51c1b87bbe4d73fe8c06bb3150125b0622
parenta32e8b0db67c9954d01349e458649994f432ffae (diff)
downloaddpdk-3c6a14f6b9667322c5674526c1d904b175f5f3bc.zip
dpdk-3c6a14f6b9667322c5674526c1d904b175f5f3bc.tar.gz
dpdk-3c6a14f6b9667322c5674526c1d904b175f5f3bc.tar.xz
mk: fix link with CC
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>
-rw-r--r--mk/rte.app.mk5
-rw-r--r--mk/rte.lib.mk6
-rw-r--r--mk/rte.shared.mk6
-rw-r--r--mk/rte.sharelib.mk8
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)"