DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y
@ 2014-10-02 15:56 Sergio Gonzalez Monroy
  2014-10-02 15:56 ` [dpdk-dev] [PATCH 1/4] Link combined shared library using CC Sergio Gonzalez Monroy
                   ` (5 more replies)
  0 siblings, 6 replies; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-02 15:56 UTC (permalink / raw)
  To: dev

When building DPDK with CONFIG_RTE_BUILD_COMBINE_LIBS=y, the result is not
the expected behavior.

 - It does link the combine library using LD instead of CC which results
in application linking errors. 

 - It creates both individual libraries and combine library, then linking
applications against all of them.

This patch set aims to fix those issues.

The last patch 'cleanup', in my opinion, simplifies and removes duplication of
rules.
It is not required for fixing the issues mentioned above.

Sergio Gonzalez Monroy (4):
  Link combined shared library using CC
  Do not generate individual libs when configured with RTE_BUILD_COMBINE_LIBS=y
  Link apps only against combined lib or individual libs, not both
  Cleanup

 mk/rte.app.mk      | 13 +++++---
 mk/rte.lib.mk      | 90 +++++++++++++-----------------------------------------
 mk/rte.sharelib.mk | 47 ++++++++++++++--------------
 3 files changed, 54 insertions(+), 96 deletions(-)

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>

-- 
1.9.3

^ permalink raw reply	[flat|nested] 50+ messages in thread

* [dpdk-dev] [PATCH 1/4] Link combined shared library using CC
  2014-10-02 15:56 [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y Sergio Gonzalez Monroy
@ 2014-10-02 15:56 ` Sergio Gonzalez Monroy
  2014-10-02 15:56 ` [dpdk-dev] [PATCH 2/4] Do not generate individual libs when configured with RTE_BUILD_COMBINE_LIBS=y Sergio Gonzalez Monroy
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-02 15:56 UTC (permalink / raw)
  To: dev

It adds override definition of LD when linking using CC.
Also it adds muldefs option to the linker when building shared libraries
(same as building individual libraries).

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
---
 mk/rte.sharelib.mk | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/mk/rte.sharelib.mk b/mk/rte.sharelib.mk
index c0a811a..942671d 100644
--- a/mk/rte.sharelib.mk
+++ b/mk/rte.sharelib.mk
@@ -40,12 +40,20 @@ LIB_ONE := lib$(RTE_LIBNAME).a
 endif
 endif
 
+ifeq ($(LINK_USING_CC),1)
+# Override the definition of LD here, since we're linking with CC
+LD := $(CC)
+LD_MULDEFS := $(call linkerprefix,-z$(comma)muldefs)
+CPU_LDFLAGS := $(call linkerprefix,$(CPU_LDFLAGS))
+endif
+
 .PHONY:sharelib
 sharelib: $(LIB_ONE) FORCE
 
 OBJS = $(wildcard $(RTE_OUTPUT)/build/lib/*.o)
 
-O_TO_S = $(LD) $(CPU_LDFLAGS) -shared $(OBJS) -o $(RTE_OUTPUT)/lib/$(LIB_ONE)
+O_TO_S = $(LD) $(CPU_LDFLAGS) $(LD_MULDEFS) -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)"
-- 
1.9.3

^ permalink raw reply	[flat|nested] 50+ messages in thread

* [dpdk-dev] [PATCH 2/4] Do not generate individual libs when configured with RTE_BUILD_COMBINE_LIBS=y
  2014-10-02 15:56 [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y Sergio Gonzalez Monroy
  2014-10-02 15:56 ` [dpdk-dev] [PATCH 1/4] Link combined shared library using CC Sergio Gonzalez Monroy
@ 2014-10-02 15:56 ` Sergio Gonzalez Monroy
  2014-10-02 20:00   ` Matthew Hall
  2014-10-02 15:56 ` [dpdk-dev] [PATCH 3/4] Link apps only against combined lib or individual libs, not both Sergio Gonzalez Monroy
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-02 15:56 UTC (permalink / raw)
  To: dev

When RTE_BUILD_COMBINE_LIBS=y is configured, there won't be individual shared
libraries to copy over.

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
---
 mk/rte.lib.mk | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
index f458258..d594692 100644
--- a/mk/rte.lib.mk
+++ b/mk/rte.lib.mk
@@ -158,9 +158,11 @@ endif
 # install lib in $(RTE_OUTPUT)/lib
 #
 $(RTE_OUTPUT)/lib/$(LIB): $(LIB)
+ifneq ($(RTE_BUILD_COMBINE_LIBS),y)
 	@echo "  INSTALL-LIB $(LIB)"
 	@[ -d $(RTE_OUTPUT)/lib ] || mkdir -p $(RTE_OUTPUT)/lib
 	$(Q)cp -f $(LIB) $(RTE_OUTPUT)/lib
+endif
 
 #
 # Clean all generated files
-- 
1.9.3

^ permalink raw reply	[flat|nested] 50+ messages in thread

* [dpdk-dev] [PATCH 3/4] Link apps only against combined lib or individual libs, not both
  2014-10-02 15:56 [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y Sergio Gonzalez Monroy
  2014-10-02 15:56 ` [dpdk-dev] [PATCH 1/4] Link combined shared library using CC Sergio Gonzalez Monroy
  2014-10-02 15:56 ` [dpdk-dev] [PATCH 2/4] Do not generate individual libs when configured with RTE_BUILD_COMBINE_LIBS=y Sergio Gonzalez Monroy
@ 2014-10-02 15:56 ` Sergio Gonzalez Monroy
  2014-10-02 15:56 ` [dpdk-dev] [PATCH 4/4] Cleanup Sergio Gonzalez Monroy
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-02 15:56 UTC (permalink / raw)
  To: dev

Link only against combined library or individual libraries.

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
---
 mk/rte.app.mk | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/mk/rte.app.mk b/mk/rte.app.mk
index 34dff2a..6f752dd 100644
--- a/mk/rte.app.mk
+++ b/mk/rte.app.mk
@@ -59,6 +59,13 @@ LDLIBS += -L$(RTE_SDK_BIN)/lib
 #
 ifeq ($(NO_AUTOLIBS),)
 
+ifeq ($(RTE_BUILD_COMBINE_LIBS),y)
+LDLIBS += --start-group
+LDLIBS += -l$(RTE_LIBNAME)
+LDLIBS += $(EXECENV_LDLIBS)
+LDLIBS += --end-group
+else
+
 LDLIBS += --whole-archive
 
 ifeq ($(CONFIG_RTE_LIBRTE_DISTRIBUTOR),y)
@@ -218,6 +225,8 @@ LDLIBS += --end-group
 
 LDLIBS += --no-whole-archive
 
+endif # ifeq ($(RTE_BUILD_COMBINE_LIBS),y)
+
 endif # ifeq ($(NO_AUTOLIBS),)
 
 LDLIBS += $(CPU_LDLIBS)
@@ -235,10 +244,6 @@ build: _postbuild
 
 exe2cmd = $(strip $(call dotfile,$(patsubst %,%.cmd,$(1))))
 
-ifeq ($(RTE_BUILD_COMBINE_LIBS),y)
-LDLIBS += -l$(RTE_LIBNAME)
-endif
-
 ifeq ($(LINK_USING_CC),1)
 LDLIBS := $(call linkerprefix,$(LDLIBS))
 LDFLAGS := $(call linkerprefix,$(LDFLAGS))
-- 
1.9.3

^ permalink raw reply	[flat|nested] 50+ messages in thread

* [dpdk-dev] [PATCH 4/4] Cleanup
  2014-10-02 15:56 [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y Sergio Gonzalez Monroy
                   ` (2 preceding siblings ...)
  2014-10-02 15:56 ` [dpdk-dev] [PATCH 3/4] Link apps only against combined lib or individual libs, not both Sergio Gonzalez Monroy
@ 2014-10-02 15:56 ` Sergio Gonzalez Monroy
  2014-10-02 17:26 ` [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y Neil Horman
  2014-10-06 10:52 ` [dpdk-dev] [PATCH v2 0/4] Update build process Sergio Gonzalez Monroy
  5 siblings, 0 replies; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-02 15:56 UTC (permalink / raw)
  To: dev

Reduce code duplication.
This patch is not required for the patch set to work.

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
---
 mk/rte.lib.mk      | 88 +++++++++++++-----------------------------------------
 mk/rte.sharelib.mk | 39 ++++++++++--------------
 2 files changed, 35 insertions(+), 92 deletions(-)

diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
index d594692..84f5a64 100644
--- a/mk/rte.lib.mk
+++ b/mk/rte.lib.mk
@@ -66,93 +66,45 @@ LD_MULDEFS := $(call linkerprefix,-z$(comma)muldefs)
 CPU_LDFLAGS := $(call linkerprefix,$(CPU_LDFLAGS))
 endif
 
-O_TO_A = $(AR) crus $(LIB) $(OBJS-y)
-O_TO_A_STR = $(subst ','\'',$(O_TO_A)) #'# fix syntax highlight
-O_TO_A_DISP = $(if $(V),"$(O_TO_A_STR)","  AR $(@)")
-O_TO_A_CMD = "cmd_$@ = $(O_TO_A_STR)"
-O_TO_A_DO = @set -e; \
-	echo $(O_TO_A_DISP); \
-	$(O_TO_A) && \
-	echo $(O_TO_A_CMD) > $(call exe2cmd,$(@))
-
-O_TO_S = $(LD) $(CPU_LDFLAGS) $(LD_MULDEFS) -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; \
-	echo $(O_TO_S_DISP); \
-	$(O_TO_S) && \
-	echo $(O_TO_S_CMD) > $(call exe2cmd,$(@))
-
-ifeq ($(RTE_BUILD_SHARED_LIB),n)
-O_TO_C = $(AR) crus $(LIB_ONE) $(OBJS-y)
-O_TO_C_STR = $(subst ','\'',$(O_TO_C)) #'# fix syntax highlight
-O_TO_C_DISP = $(if $(V),"$(O_TO_C_STR)","  AR_C $(@)")
-O_TO_C_DO = @set -e; \
-	$(lib_dir) \
-	$(copy_obj)
+ifeq ($(RTE_BUILD_COMBINE_LIBS),y)
+O_TO_L_DO = @set -e; \
+	cp -f $(OBJS-y) $(RTE_OUTPUT)/build/lib;
+else
+ifeq ($(RTE_BUILD_SHARED_LIB),y)
+O_TO_L = $(LD) $(CPU_LDFLAGS) $(LD_MULDEFS) -shared $(OBJS-y) -o $(LIB)
+L_DISP=LD
 else
-O_TO_C = $(LD) $(LD_MULDEFS) -shared $(OBJS-y) -o $(LIB_ONE)
-O_TO_C_STR = $(subst ','\'',$(O_TO_C)) #'# fix syntax highlight
-O_TO_C_DISP = $(if $(V),"$(O_TO_C_STR)","  LD_C $(@)")
-O_TO_C_DO = @set -e; \
-	$(lib_dir) \
-	$(copy_obj)
+O_TO_L = $(AR) crus $(LIB) $(OBJS-y)
+L_DISP=AR
+endif
+O_TO_L_STR = $(subst ','\'',$(O_TO_L)) #') # fix syntax highlight
+O_TO_L_DISP = $(if $(V),"$(O_TO_L_STR)","  $(L_DISP) $(@)")
+O_TO_L_CMD = "cmd_$@ = $(O_TO_L_STR)"
+O_TO_L_DO = @set -e; \
+	echo $(O_TO_L_DISP); \
+	$(O_TO_L) && \
+	echo $(O_TO_L_CMD) > $(call exe2cmd,$(@))
 endif
 
-copy_obj = cp -f $(OBJS-y) $(RTE_OUTPUT)/build/lib;
-lib_dir = [ -d $(RTE_OUTPUT)/lib ] || mkdir -p $(RTE_OUTPUT)/lib;
 -include .$(LIB).cmd
 
 #
 # Archive objects in .a file if needed
 #
-ifeq ($(RTE_BUILD_SHARED_LIB),y)
 $(LIB): $(OBJS-y) $(DEP_$(LIB)) FORCE
 	@[ -d $(dir $@) ] || mkdir -p $(dir $@)
 	$(if $(D),\
 		@echo -n "$< -> $@ " ; \
 		echo -n "file_missing=$(call boolean,$(file_missing)) " ; \
-		echo -n "cmdline_changed=$(call boolean,$(call cmdline_changed,$(O_TO_S_STR))) " ; \
+		echo -n "cmdline_changed=$(call boolean,$(call cmdline_changed,$(O_TO_L_STR))) " ; \
 		echo -n "depfile_missing=$(call boolean,$(depfile_missing)) " ; \
 		echo "depfile_newer=$(call boolean,$(depfile_newer)) ")
 	$(if $(or \
-		$(file_missing),\
-		$(call cmdline_changed,$(O_TO_S_STR)),\
-		$(depfile_missing),\
-		$(depfile_newer)),\
-		$(O_TO_S_DO))
-ifeq ($(RTE_BUILD_COMBINE_LIBS),y)
-	$(if $(or \
-        $(file_missing),\
-        $(call cmdline_changed,$(O_TO_C_STR)),\
-        $(depfile_missing),\
-        $(depfile_newer)),\
-        $(O_TO_C_DO))
-endif
-else
-$(LIB): $(OBJS-y) $(DEP_$(LIB)) FORCE
-	@[ -d $(dir $@) ] || mkdir -p $(dir $@)
-	$(if $(D),\
-	    @echo -n "$< -> $@ " ; \
-	    echo -n "file_missing=$(call boolean,$(file_missing)) " ; \
-	    echo -n "cmdline_changed=$(call boolean,$(call cmdline_changed,$(O_TO_A_STR))) " ; \
-	    echo -n "depfile_missing=$(call boolean,$(depfile_missing)) " ; \
-	    echo "depfile_newer=$(call boolean,$(depfile_newer)) ")
-	$(if $(or \
 	    $(file_missing),\
-	    $(call cmdline_changed,$(O_TO_A_STR)),\
+	    $(call cmdline_changed,$(O_TO_L_STR)),\
 	    $(depfile_missing),\
 	    $(depfile_newer)),\
-	    $(O_TO_A_DO))
-ifeq ($(RTE_BUILD_COMBINE_LIBS),y)
-	$(if $(or \
-        $(file_missing),\
-        $(call cmdline_changed,$(O_TO_C_STR)),\
-        $(depfile_missing),\
-        $(depfile_newer)),\
-        $(O_TO_C_DO))
-endif
-endif
+	    $(O_TO_L_DO))
 
 #
 # install lib in $(RTE_OUTPUT)/lib
diff --git a/mk/rte.sharelib.mk b/mk/rte.sharelib.mk
index 942671d..0efa0b7 100644
--- a/mk/rte.sharelib.mk
+++ b/mk/rte.sharelib.mk
@@ -52,37 +52,28 @@ sharelib: $(LIB_ONE) FORCE
 
 OBJS = $(wildcard $(RTE_OUTPUT)/build/lib/*.o)
 
-O_TO_S = $(LD) $(CPU_LDFLAGS) $(LD_MULDEFS) -shared $(OBJS)\
+ifeq ($(RTE_BUILD_SHARED_LIB),y)
+O_TO_L = $(LD) $(CPU_LDFLAGS) $(LD_MULDEFS) -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)"
-O_TO_S_DO = @set -e; \
-    echo $(O_TO_S_DISP); \
-    $(O_TO_S)
+L_DISP=LD
+else
+O_TO_L = $(AR) crus $(RTE_OUTPUT)/lib/$(LIB_ONE) $(OBJS)
+L_DISP=AR
+endif
+O_TO_L_STR = $(subst ','\'',$(O_TO_L)) #')# fix syntax highlight
+O_TO_L_DISP = $(if $(V),"$(O_TO_L_STR)","  $(L_DISP) $(@)")
+O_TO_L_CMD = "cmd_$@ = $(O_TO_L_STR)"
+O_TO_L_DO = @set -e; \
+	mkdir -p $(RTE_OUTPUT)/lib; \
+	echo $(O_TO_L_DISP); \
+	$(O_TO_L)
 
-O_TO_A =  $(AR) crus $(RTE_OUTPUT)/lib/$(LIB_ONE) $(OBJS)
-O_TO_A_STR = $(subst ','\'',$(O_TO_A)) #'# fix syntax highlight
-O_TO_A_DISP = $(if $(V),"$(O_TO_A_STR)","  LD $(@)")
-O_TO_A_CMD = "cmd_$@ = $(O_TO_A_STR)"
-O_TO_A_DO = @set -e; \
-    echo $(O_TO_A_DISP); \
-    $(O_TO_A)
 #
 # Archive objects to share library
 #
 
-ifeq ($(RTE_BUILD_COMBINE_LIBS),y)
-ifeq ($(RTE_BUILD_SHARED_LIB),y)
 $(LIB_ONE): FORCE
-	@[ -d $(dir $@) ] || mkdir -p $(dir $@)
-	$(O_TO_S_DO)
-else
-$(LIB_ONE): FORCE
-	@[ -d $(dir $@) ] || mkdir -p $(dir $@)
-	$(O_TO_A_DO)
-endif
-endif
+	$(O_TO_L_DO)
 
 #
 # Clean all generated files
-- 
1.9.3

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y
  2014-10-02 15:56 [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y Sergio Gonzalez Monroy
                   ` (3 preceding siblings ...)
  2014-10-02 15:56 ` [dpdk-dev] [PATCH 4/4] Cleanup Sergio Gonzalez Monroy
@ 2014-10-02 17:26 ` Neil Horman
  2014-10-02 20:04   ` Matthew Hall
  2014-10-06 10:52 ` [dpdk-dev] [PATCH v2 0/4] Update build process Sergio Gonzalez Monroy
  5 siblings, 1 reply; 50+ messages in thread
From: Neil Horman @ 2014-10-02 17:26 UTC (permalink / raw)
  To: Sergio Gonzalez Monroy; +Cc: dev

On Thu, Oct 02, 2014 at 04:56:22PM +0100, Sergio Gonzalez Monroy wrote:
> When building DPDK with CONFIG_RTE_BUILD_COMBINE_LIBS=y, the result is not
> the expected behavior.
> 
>  - It does link the combine library using LD instead of CC which results
> in application linking errors. 
> 
>  - It creates both individual libraries and combine library, then linking
> applications against all of them.
> 
> This patch set aims to fix those issues.
> 
> The last patch 'cleanup', in my opinion, simplifies and removes duplication of
> rules.
> It is not required for fixing the issues mentioned above.
> 
> Sergio Gonzalez Monroy (4):
>   Link combined shared library using CC
>   Do not generate individual libs when configured with RTE_BUILD_COMBINE_LIBS=y
>   Link apps only against combined lib or individual libs, not both
>   Cleanup
> 
>  mk/rte.app.mk      | 13 +++++---
>  mk/rte.lib.mk      | 90 +++++++++++++-----------------------------------------
>  mk/rte.sharelib.mk | 47 ++++++++++++++--------------
>  3 files changed, 54 insertions(+), 96 deletions(-)
> 
> Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
> 
> -- 
> 1.9.3
> 
> 

Just out of curiosity, whats the impetus behind a single shared library here?
Is it just to ease application linking operations?  If so, it almost seems to me
that we should abandon the individual linking method and just use this as the
default output (and do simmilarly for the static linking build)

Neil

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH 2/4] Do not generate individual libs when configured with RTE_BUILD_COMBINE_LIBS=y
  2014-10-02 15:56 ` [dpdk-dev] [PATCH 2/4] Do not generate individual libs when configured with RTE_BUILD_COMBINE_LIBS=y Sergio Gonzalez Monroy
@ 2014-10-02 20:00   ` Matthew Hall
  0 siblings, 0 replies; 50+ messages in thread
From: Matthew Hall @ 2014-10-02 20:00 UTC (permalink / raw)
  To: Sergio Gonzalez Monroy; +Cc: dev

On Thu, Oct 02, 2014 at 04:56:24PM +0100, Sergio Gonzalez Monroy wrote:
> When RTE_BUILD_COMBINE_LIBS=y is configured, there won't be individual shared
> libraries to copy over.

As a user of RTE_BUILD_COMBINE_LIBS, disabling the ability to use the 
individual libs after the option is enabled is not helpful. It would be more 
helpful if all libs are kept available, so when working with multiple DPDK 
apps which might prefer combined or uncombined, everything will still work.

Thanks,
Matthew.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y
  2014-10-02 17:26 ` [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y Neil Horman
@ 2014-10-02 20:04   ` Matthew Hall
  2014-10-02 20:24     ` Neil Horman
  2014-10-03  7:15     ` Thomas Monjalon
  0 siblings, 2 replies; 50+ messages in thread
From: Matthew Hall @ 2014-10-02 20:04 UTC (permalink / raw)
  To: Neil Horman; +Cc: dev

On Thu, Oct 02, 2014 at 01:26:34PM -0400, Neil Horman wrote:
> Just out of curiosity, whats the impetus behind a single shared library here?
> Is it just to ease application linking operations?  If so, it almost seems to me
> that we should abandon the individual linking method and just use this as the
> default output (and do simmilarly for the static linking build)
> 
> Neil

Not clear if you wrote "single shared library" on purpose instead of "single 
static library". But for me the objective of COMBINE_LIBS usage would be 
getting a "single static library" for my app, which just works, and eliminates 
need of start-group, end-group, weird library ordering issues, etc. I'm not 
interested personally in a "shared library" because it'd run slower.

Personally my preference would be to do both the single libs and multiple libs 
in static format by default. Disk space is cheap, let's maximize user freedom 
and flexibility. But shared lib, since it performs less well, should be 
discouraged by default, although allowed if needed... some people prefer it 
because it's easier to patch security vulns if you can replace a buggy library 
for all the code on a system.

Matthew.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y
  2014-10-02 20:04   ` Matthew Hall
@ 2014-10-02 20:24     ` Neil Horman
  2014-10-02 21:10       ` Matthew Hall
  2014-10-03 10:31       ` Sergio Gonzalez Monroy
  2014-10-03  7:15     ` Thomas Monjalon
  1 sibling, 2 replies; 50+ messages in thread
From: Neil Horman @ 2014-10-02 20:24 UTC (permalink / raw)
  To: Matthew Hall; +Cc: dev

On Thu, Oct 02, 2014 at 01:04:20PM -0700, Matthew Hall wrote:
> On Thu, Oct 02, 2014 at 01:26:34PM -0400, Neil Horman wrote:
> > Just out of curiosity, whats the impetus behind a single shared library here?
> > Is it just to ease application linking operations?  If so, it almost seems to me
> > that we should abandon the individual linking method and just use this as the
> > default output (and do simmilarly for the static linking build)
> > 
> > Neil
> 
> Not clear if you wrote "single shared library" on purpose instead of "single 
> static library". But for me the objective of COMBINE_LIBS usage would be 
> getting a "single static library" for my app, which just works, and eliminates 
> need of start-group, end-group, weird library ordering issues, etc. I'm not 
> interested personally in a "shared library" because it'd run slower.
> 
Actually I do need to revise my question, thank you.  you're right, doing a
single archive for static builds makes the most sense, because you wind up with
a static binary anyway, and as such, theres really no need for multiple dpdk
archives.  We should just create a single dpdk.a file and be done with it.

The shared libraries are a different story.  While at first it made sense to me
to merge them all, it actually doesn't because PMD's might be built
independently and shipped separate from the core library.  

> Personally my preference would be to do both the single libs and multiple libs 
> in static format by default. Disk space is cheap, let's maximize user freedom 
> and flexibility. But shared lib, since it performs less well, should be 
> discouraged by default, although allowed if needed... some people prefer it 
> because it's easier to patch security vulns if you can replace a buggy library 
> for all the code on a system.
> 
This seems somewhat irrelevant to the patch.  The default configuration is
already the way you want it to be, shared library performance is actually very
close to static performance, and yes, people can choose how they want to build.
Not sure what point your trying to make here.
Neil

> Matthew.
> 

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y
  2014-10-02 20:24     ` Neil Horman
@ 2014-10-02 21:10       ` Matthew Hall
  2014-10-03  0:52         ` Neil Horman
  2014-10-03 10:31       ` Sergio Gonzalez Monroy
  1 sibling, 1 reply; 50+ messages in thread
From: Matthew Hall @ 2014-10-02 21:10 UTC (permalink / raw)
  To: Neil Horman; +Cc: dev

On Thu, Oct 02, 2014 at 04:24:51PM -0400, Neil Horman wrote:
> This seems somewhat irrelevant to the patch.  The default configuration is
> already the way you want it to be, shared library performance is actually very
> close to static performance, and yes, people can choose how they want to build.
> Not sure what point your trying to make here.
> Neil

According to my reading, one of the subpatches threatened to disable the 
single static libs when the grouped one is built. If you are working with 
multiple DPDK apps, and one expects COMBINE_LIBS and the other does not, you 
can't use both with the same copy of DPDK anymore if that subpatch gets 
committed.

Matthew.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y
  2014-10-02 21:10       ` Matthew Hall
@ 2014-10-03  0:52         ` Neil Horman
  0 siblings, 0 replies; 50+ messages in thread
From: Neil Horman @ 2014-10-03  0:52 UTC (permalink / raw)
  To: Matthew Hall; +Cc: dev

On Thu, Oct 02, 2014 at 02:10:55PM -0700, Matthew Hall wrote:
> On Thu, Oct 02, 2014 at 04:24:51PM -0400, Neil Horman wrote:
> > This seems somewhat irrelevant to the patch.  The default configuration is
> > already the way you want it to be, shared library performance is actually very
> > close to static performance, and yes, people can choose how they want to build.
> > Not sure what point your trying to make here.
> > Neil
> 
> According to my reading, one of the subpatches threatened to disable the 
> single static libs when the grouped one is built. If you are working with 
> multiple DPDK apps, and one expects COMBINE_LIBS and the other does not, you 
> can't use both with the same copy of DPDK anymore if that subpatch gets 
> committed.
> 
Ah, sorry, I misread, and thought you were advoating for making static builds
the default over dynamic builds, which made no sense to me, as that was already
the case.

Neil

> Matthew.
> 

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y
  2014-10-02 20:04   ` Matthew Hall
  2014-10-02 20:24     ` Neil Horman
@ 2014-10-03  7:15     ` Thomas Monjalon
  2014-10-03  8:10       ` Sergio Gonzalez Monroy
  2014-10-03 18:00       ` Matthew Hall
  1 sibling, 2 replies; 50+ messages in thread
From: Thomas Monjalon @ 2014-10-03  7:15 UTC (permalink / raw)
  To: Sergio Gonzalez Monroy; +Cc: dev

2014-10-02 13:04, Matthew Hall:
> On Thu, Oct 02, 2014 at 01:26:34PM -0400, Neil Horman wrote:
> > Just out of curiosity, whats the impetus behind a single shared library here?
> > Is it just to ease application linking operations?  If so, it almost seems to me
> > that we should abandon the individual linking method and just use this as the
> > default output (and do simmilarly for the static linking build)
> 
> Not clear if you wrote "single shared library" on purpose instead of "single 
> static library". But for me the objective of COMBINE_LIBS usage would be 
> getting a "single static library" for my app, which just works, and eliminates 
> need of start-group, end-group, weird library ordering issues, etc. I'm not 
> interested personally in a "shared library" because it'd run slower.
> 
> Personally my preference would be to do both the single libs and multiple libs 
> in static format by default. Disk space is cheap, let's maximize user freedom 
> and flexibility. But shared lib, since it performs less well, should be 
> discouraged by default, although allowed if needed... some people prefer it 
> because it's easier to patch security vulns if you can replace a buggy library 
> for all the code on a system.

We need to simplify build options. So I'm fine to remove COMBINE_LIBS option
to always enable it.
About making only one single static library, I think it's a good idea if
it brings a real code simplification.

So the conclusion is to nack this patchset in favor of above changes.
Sergio, comments?

-- 
Thomas

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y
  2014-10-03  7:15     ` Thomas Monjalon
@ 2014-10-03  8:10       ` Sergio Gonzalez Monroy
  2014-10-03  8:27         ` Thomas Monjalon
  2014-10-03 18:00       ` Matthew Hall
  1 sibling, 1 reply; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-03  8:10 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev

On Fri, Oct 03, 2014 at 09:15:20AM +0200, Thomas Monjalon wrote:
> 2014-10-02 13:04, Matthew Hall:
> > On Thu, Oct 02, 2014 at 01:26:34PM -0400, Neil Horman wrote:
> > > Just out of curiosity, whats the impetus behind a single shared library here?
> > > Is it just to ease application linking operations?  If so, it almost seems to me
> > > that we should abandon the individual linking method and just use this as the
> > > default output (and do simmilarly for the static linking build)
> > 
> > Not clear if you wrote "single shared library" on purpose instead of "single 
> > static library". But for me the objective of COMBINE_LIBS usage would be 
> > getting a "single static library" for my app, which just works, and eliminates 
> > need of start-group, end-group, weird library ordering issues, etc. I'm not 
> > interested personally in a "shared library" because it'd run slower.
> > 
> > Personally my preference would be to do both the single libs and multiple libs 
> > in static format by default. Disk space is cheap, let's maximize user freedom 
> > and flexibility. But shared lib, since it performs less well, should be 
> > discouraged by default, although allowed if needed... some people prefer it 
> > because it's easier to patch security vulns if you can replace a buggy library 
> > for all the code on a system.
> 
> We need to simplify build options. So I'm fine to remove COMBINE_LIBS option
> to always enable it.
> About making only one single static library, I think it's a good idea if
> it brings a real code simplification.
> 
> So the conclusion is to nack this patchset in favor of above changes.
> Sergio, comments?
> 

Frankly I did not think of users linking against single and combine lib for 
different apps.
I think If the goal is to simplify code then we should just provide one build
option, either single or combine. Personally, I do not have a preference.

So just to be clear, we would remove COMBINE_LIBS to always make a single combine
lib or to create both single and combine?
For the later option, would we be linking apps against single or combine libraries?

Sergio 

> -- 
> Thomas

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y
  2014-10-03  8:10       ` Sergio Gonzalez Monroy
@ 2014-10-03  8:27         ` Thomas Monjalon
  2014-10-03 11:32           ` Neil Horman
  2014-10-03 18:13           ` Matthew Hall
  0 siblings, 2 replies; 50+ messages in thread
From: Thomas Monjalon @ 2014-10-03  8:27 UTC (permalink / raw)
  To: Sergio Gonzalez Monroy; +Cc: dev

2014-10-03 09:10, Sergio Gonzalez Monroy:
> On Fri, Oct 03, 2014 at 09:15:20AM +0200, Thomas Monjalon wrote:
> > 2014-10-02 13:04, Matthew Hall:
> > > On Thu, Oct 02, 2014 at 01:26:34PM -0400, Neil Horman wrote:
> > > > Just out of curiosity, whats the impetus behind a single shared library here?
> > > > Is it just to ease application linking operations?  If so, it almost seems to me
> > > > that we should abandon the individual linking method and just use this as the
> > > > default output (and do simmilarly for the static linking build)
> > > 
> > > Not clear if you wrote "single shared library" on purpose instead of "single 
> > > static library". But for me the objective of COMBINE_LIBS usage would be 
> > > getting a "single static library" for my app, which just works, and eliminates 
> > > need of start-group, end-group, weird library ordering issues, etc. I'm not 
> > > interested personally in a "shared library" because it'd run slower.
> > > 
> > > Personally my preference would be to do both the single libs and multiple libs 
> > > in static format by default. Disk space is cheap, let's maximize user freedom 
> > > and flexibility. But shared lib, since it performs less well, should be 
> > > discouraged by default, although allowed if needed... some people prefer it 
> > > because it's easier to patch security vulns if you can replace a buggy library 
> > > for all the code on a system.
> > 
> > We need to simplify build options. So I'm fine to remove COMBINE_LIBS option
> > to always enable it.
> > About making only one single static library, I think it's a good idea if
> > it brings a real code simplification.
> > 
> > So the conclusion is to nack this patchset in favor of above changes.
> > Sergio, comments?
> > 
> 
> Frankly I did not think of users linking against single and combine lib for 
> different apps.
> I think If the goal is to simplify code then we should just provide one build
> option, either single or combine. Personally, I do not have a preference.
> 
> So just to be clear, we would remove COMBINE_LIBS to always make a single combine
> lib or to create both single and combine?
> For the later option, would we be linking apps against single or combine libraries?

The proposal is to always build single (combined) lib AND to build separated
libs in case of shared libraries.
For static library: only one single (combined) static library.

-- 
Thomas

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y
  2014-10-02 20:24     ` Neil Horman
  2014-10-02 21:10       ` Matthew Hall
@ 2014-10-03 10:31       ` Sergio Gonzalez Monroy
  2014-10-03 11:28         ` Neil Horman
  1 sibling, 1 reply; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-03 10:31 UTC (permalink / raw)
  To: Neil Horman; +Cc: dev

On Thu, Oct 02, 2014 at 04:24:51PM -0400, Neil Horman wrote:
> On Thu, Oct 02, 2014 at 01:04:20PM -0700, Matthew Hall wrote:
> > On Thu, Oct 02, 2014 at 01:26:34PM -0400, Neil Horman wrote:
> > > Just out of curiosity, whats the impetus behind a single shared library here?
> > > Is it just to ease application linking operations?  If so, it almost seems to me
> > > that we should abandon the individual linking method and just use this as the
> > > default output (and do simmilarly for the static linking build)
> > > 
> > > Neil
> > 
> > Not clear if you wrote "single shared library" on purpose instead of "single 
> > static library". But for me the objective of COMBINE_LIBS usage would be 
> > getting a "single static library" for my app, which just works, and eliminates 
> > need of start-group, end-group, weird library ordering issues, etc. I'm not 
> > interested personally in a "shared library" because it'd run slower.
> > 
> Actually I do need to revise my question, thank you.  you're right, doing a
> single archive for static builds makes the most sense, because you wind up with
> a static binary anyway, and as such, theres really no need for multiple dpdk
> archives.  We should just create a single dpdk.a file and be done with it.
> 
> The shared libraries are a different story.  While at first it made sense to me
> to merge them all, it actually doesn't because PMD's might be built
> independently and shipped separate from the core library.  

Sorry Neil, could you elaborate a bit on why it would not make sense to have a 
single/combined shared library?

Sergio

> 
> > Personally my preference would be to do both the single libs and multiple libs 
> > in static format by default. Disk space is cheap, let's maximize user freedom 
> > and flexibility. But shared lib, since it performs less well, should be 
> > discouraged by default, although allowed if needed... some people prefer it 
> > because it's easier to patch security vulns if you can replace a buggy library 
> > for all the code on a system.
> > 
> This seems somewhat irrelevant to the patch.  The default configuration is
> already the way you want it to be, shared library performance is actually very
> close to static performance, and yes, people can choose how they want to build.
> Not sure what point your trying to make here.
> Neil
> 
> > Matthew.
> > 

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y
  2014-10-03 10:31       ` Sergio Gonzalez Monroy
@ 2014-10-03 11:28         ` Neil Horman
  2014-10-03 23:52           ` Stephen Hemminger
  0 siblings, 1 reply; 50+ messages in thread
From: Neil Horman @ 2014-10-03 11:28 UTC (permalink / raw)
  To: Sergio Gonzalez Monroy; +Cc: dev

On Fri, Oct 03, 2014 at 11:31:10AM +0100, Sergio Gonzalez Monroy wrote:
> On Thu, Oct 02, 2014 at 04:24:51PM -0400, Neil Horman wrote:
> > On Thu, Oct 02, 2014 at 01:04:20PM -0700, Matthew Hall wrote:
> > > On Thu, Oct 02, 2014 at 01:26:34PM -0400, Neil Horman wrote:
> > > > Just out of curiosity, whats the impetus behind a single shared library here?
> > > > Is it just to ease application linking operations?  If so, it almost seems to me
> > > > that we should abandon the individual linking method and just use this as the
> > > > default output (and do simmilarly for the static linking build)
> > > > 
> > > > Neil
> > > 
> > > Not clear if you wrote "single shared library" on purpose instead of "single 
> > > static library". But for me the objective of COMBINE_LIBS usage would be 
> > > getting a "single static library" for my app, which just works, and eliminates 
> > > need of start-group, end-group, weird library ordering issues, etc. I'm not 
> > > interested personally in a "shared library" because it'd run slower.
> > > 
> > Actually I do need to revise my question, thank you.  you're right, doing a
> > single archive for static builds makes the most sense, because you wind up with
> > a static binary anyway, and as such, theres really no need for multiple dpdk
> > archives.  We should just create a single dpdk.a file and be done with it.
> > 
> > The shared libraries are a different story.  While at first it made sense to me
> > to merge them all, it actually doesn't because PMD's might be built
> > independently and shipped separate from the core library.  
> 
> Sorry Neil, could you elaborate a bit on why it would not make sense to have a 
> single/combined shared library?
> 
> Sergio
> 

Sorry, I wasn't trying to assert that it doesn't make sense to have a single
shared library, but rather I was trying to assert that we should only _ever_
build a single shared library.  I assert this because to create a single shared
library destroys part of the advantage that DSO's have. Namely that they allow
for selective hardware enablement in the field.  I.e. you can ship your pmd's
pacakged separately from your core, and not have to update your application (and
pull them in via the -d option on the command line).  If the dpdk builds
everything as a single binary, then you may end up needing to pull in pmds that
you don't yet need to support.

In short, my initial idea was dumb :)

Neil

> > 
> > > Personally my preference would be to do both the single libs and multiple libs 
> > > in static format by default. Disk space is cheap, let's maximize user freedom 
> > > and flexibility. But shared lib, since it performs less well, should be 
> > > discouraged by default, although allowed if needed... some people prefer it 
> > > because it's easier to patch security vulns if you can replace a buggy library 
> > > for all the code on a system.
> > > 
> > This seems somewhat irrelevant to the patch.  The default configuration is
> > already the way you want it to be, shared library performance is actually very
> > close to static performance, and yes, people can choose how they want to build.
> > Not sure what point your trying to make here.
> > Neil
> > 
> > > Matthew.
> > > 
> 

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y
  2014-10-03  8:27         ` Thomas Monjalon
@ 2014-10-03 11:32           ` Neil Horman
  2014-10-03 18:17             ` Matthew Hall
  2014-10-03 18:13           ` Matthew Hall
  1 sibling, 1 reply; 50+ messages in thread
From: Neil Horman @ 2014-10-03 11:32 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev

On Fri, Oct 03, 2014 at 10:27:30AM +0200, Thomas Monjalon wrote:
> 2014-10-03 09:10, Sergio Gonzalez Monroy:
> > On Fri, Oct 03, 2014 at 09:15:20AM +0200, Thomas Monjalon wrote:
> > > 2014-10-02 13:04, Matthew Hall:
> > > > On Thu, Oct 02, 2014 at 01:26:34PM -0400, Neil Horman wrote:
> > > > > Just out of curiosity, whats the impetus behind a single shared library here?
> > > > > Is it just to ease application linking operations?  If so, it almost seems to me
> > > > > that we should abandon the individual linking method and just use this as the
> > > > > default output (and do simmilarly for the static linking build)
> > > > 
> > > > Not clear if you wrote "single shared library" on purpose instead of "single 
> > > > static library". But for me the objective of COMBINE_LIBS usage would be 
> > > > getting a "single static library" for my app, which just works, and eliminates 
> > > > need of start-group, end-group, weird library ordering issues, etc. I'm not 
> > > > interested personally in a "shared library" because it'd run slower.
> > > > 
> > > > Personally my preference would be to do both the single libs and multiple libs 
> > > > in static format by default. Disk space is cheap, let's maximize user freedom 
> > > > and flexibility. But shared lib, since it performs less well, should be 
> > > > discouraged by default, although allowed if needed... some people prefer it 
> > > > because it's easier to patch security vulns if you can replace a buggy library 
> > > > for all the code on a system.
> > > 
> > > We need to simplify build options. So I'm fine to remove COMBINE_LIBS option
> > > to always enable it.
> > > About making only one single static library, I think it's a good idea if
> > > it brings a real code simplification.
> > > 
> > > So the conclusion is to nack this patchset in favor of above changes.
> > > Sergio, comments?
> > > 
> > 
> > Frankly I did not think of users linking against single and combine lib for 
> > different apps.
> > I think If the goal is to simplify code then we should just provide one build
> > option, either single or combine. Personally, I do not have a preference.
> > 
> > So just to be clear, we would remove COMBINE_LIBS to always make a single combine
> > lib or to create both single and combine?
> > For the later option, would we be linking apps against single or combine libraries?
> 
> The proposal is to always build single (combined) lib AND to build separated
> libs in case of shared libraries.
> For static library: only one single (combined) static library.
> 
This makes good sense to me.  A single archive is just easier in the static  
case, since the resulting binary will strip out unused code anyway, and multiple
libraries are needed in the shared case so that we don't wind up having to load
more code than is needed at run time.

Neil

> -- 
> Thomas
> 

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y
  2014-10-03  7:15     ` Thomas Monjalon
  2014-10-03  8:10       ` Sergio Gonzalez Monroy
@ 2014-10-03 18:00       ` Matthew Hall
  1 sibling, 0 replies; 50+ messages in thread
From: Matthew Hall @ 2014-10-03 18:00 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev

On Fri, Oct 03, 2014 at 09:15:20AM +0200, Thomas Monjalon wrote:
> We need to simplify build options. So I'm fine to remove COMBINE_LIBS option
> to always enable it.
> About making only one single static library, I think it's a good idea if
> it brings a real code simplification.
> 
> So the conclusion is to nack this patchset in favor of above changes.
> Sergio, comments?

It works for me... I love COMBINE_LIBS... but it won't be necessarily backward 
compatible with people already linking against existing DPDK. Hence why I 
proposed just always building the per-feature static libs and always building 
the combined lib rather than forcing people to do one or the other.

Also different people might have different configs where they link in greater 
or fewer or different PMD's or features in different configs of their build... 
they might be annoyed if their separate libs disappear.

Matthew.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y
  2014-10-03  8:27         ` Thomas Monjalon
  2014-10-03 11:32           ` Neil Horman
@ 2014-10-03 18:13           ` Matthew Hall
  1 sibling, 0 replies; 50+ messages in thread
From: Matthew Hall @ 2014-10-03 18:13 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev

On Fri, Oct 03, 2014 at 10:27:30AM +0200, Thomas Monjalon wrote:
> The proposal is to always build single (combined) lib AND to build separated
> libs in case of shared libraries.
> For static library: only one single (combined) static library.

In the static case, this won't be backward compatible for people with existing 
linking, and won't allow people to pick which PMD's to activate without 
recompiling DPDK. If you're OK with that then I don't have an issue. But some 
others may not like it.

Matthew.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y
  2014-10-03 11:32           ` Neil Horman
@ 2014-10-03 18:17             ` Matthew Hall
  2014-10-03 19:15               ` Neil Horman
  0 siblings, 1 reply; 50+ messages in thread
From: Matthew Hall @ 2014-10-03 18:17 UTC (permalink / raw)
  To: Neil Horman; +Cc: dev

On Fri, Oct 03, 2014 at 07:32:34AM -0400, Neil Horman wrote:
> This makes good sense to me.  A single archive is just easier in the static  
> case, since the resulting binary will strip out unused code anyway, and multiple
> libraries are needed in the shared case so that we don't wind up having to load
> more code than is needed at run time.
> 
> Neil

This assertion is not true. Because the DPDK doesn't work if you don't specify 
the whole-archive link option. Which explicitly prevents stripping out any 
"unused code". Otherwise your PMD's will refuse to initialize.

This along with backward compatibility is why I was advising to build the full 
static library and the sublibraries so it will just work for everybody by 
default.

Matthew.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y
  2014-10-03 18:17             ` Matthew Hall
@ 2014-10-03 19:15               ` Neil Horman
  2014-10-03 21:21                 ` Matthew Hall
  0 siblings, 1 reply; 50+ messages in thread
From: Neil Horman @ 2014-10-03 19:15 UTC (permalink / raw)
  To: Matthew Hall; +Cc: dev

On Fri, Oct 03, 2014 at 11:17:13AM -0700, Matthew Hall wrote:
> On Fri, Oct 03, 2014 at 07:32:34AM -0400, Neil Horman wrote:
> > This makes good sense to me.  A single archive is just easier in the static  
> > case, since the resulting binary will strip out unused code anyway, and multiple
> > libraries are needed in the shared case so that we don't wind up having to load
> > more code than is needed at run time.
> > 
> > Neil
> 
> This assertion is not true. Because the DPDK doesn't work if you don't specify 
> the whole-archive link option. Which explicitly prevents stripping out any 
> "unused code". Otherwise your PMD's will refuse to initialize.
> 
I'm not asserting that you remove the --whole-archive option, only that the
we assemble all objects into a single archive during the SDK build.  Its just a
convienience, because the application binary result will be the same, regardless
of weather you link several small archives, or a single large one (because of
the aforementioned --whole-archive option).  The only remaining issue is events
where an application doesn't need (for example) the acl library, or other
optional library.  With a single archive, you get everything you build even if
you don't need it.  But presumably if you're building a static binary, you're
likely building the dpdk as well and can configure optional libraries out of the
build.  Separate libraries are more a need for downstream
distributors/packagers, who use dynamic shared objects anyway.
 
> This along with backward compatibility is why I was advising to build the full 
> static library and the sublibraries so it will just work for everybody by 
> default.
> 
Backward compatibilty?  the DPDK doesn't yet provide run time compatibility
between releases (something I've been trying to change).  Nobody provides
compile time compatibility.  To do so would require fixing API's permenently.

Neil

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y
  2014-10-03 19:15               ` Neil Horman
@ 2014-10-03 21:21                 ` Matthew Hall
  2014-10-06 14:45                   ` Neil Horman
  0 siblings, 1 reply; 50+ messages in thread
From: Matthew Hall @ 2014-10-03 21:21 UTC (permalink / raw)
  To: Neil Horman; +Cc: dev

On Fri, Oct 03, 2014 at 03:15:46PM -0400, Neil Horman wrote:
> With a single archive, you get everything you build even if you don't need 
> it.

Right, I was trying to avoid that for people who specifically didn't want it, 
if there are any... I'm not one of them.

> But presumably if you're building a static binary, you're
> likely building the dpdk as well and can configure optional libraries out of the
> build.  Separate libraries are more a need for downstream
> distributors/packagers, who use dynamic shared objects anyway.

Yeah, I was thinking it'd be nice if the downstream packagers could get a 
global '.a' and per-sublib '.a' as well. So that one dpdk package could be 
used by a client app which wanted everything, or only wanted portions.

> Backward compatibilty?  the DPDK doesn't yet provide run time compatibility
> between releases (something I've been trying to change).  Nobody provides
> compile time compatibility.  To do so would require fixing API's permenently.

Agreed. I was just advocating to avoid worsening the already existent issues. 
;)

Matthew.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y
  2014-10-03 11:28         ` Neil Horman
@ 2014-10-03 23:52           ` Stephen Hemminger
  2014-10-04  2:30             ` Neil Horman
  0 siblings, 1 reply; 50+ messages in thread
From: Stephen Hemminger @ 2014-10-03 23:52 UTC (permalink / raw)
  To: Neil Horman; +Cc: dev

On Fri, 3 Oct 2014 07:28:33 -0400
Neil Horman <nhorman@tuxdriver.com> wrote:

>  I.e. you can ship your pmd's
> pacakged separately from your core

I was hoping only the application API would be "stable"
As we know from Linux kernel, internal API's will never remain stable.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y
  2014-10-03 23:52           ` Stephen Hemminger
@ 2014-10-04  2:30             ` Neil Horman
  0 siblings, 0 replies; 50+ messages in thread
From: Neil Horman @ 2014-10-04  2:30 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev

On Fri, Oct 03, 2014 at 04:52:40PM -0700, Stephen Hemminger wrote:
> On Fri, 3 Oct 2014 07:28:33 -0400
> Neil Horman <nhorman@tuxdriver.com> wrote:
> 
> >  I.e. you can ship your pmd's
> > pacakged separately from your core
> 
> I was hoping only the application API would be "stable"
> As we know from Linux kernel, internal API's will never remain stable.
> 

None of the API's are stable.  My only hope with the ABI series I've posted is
to keep the interfaces stable for a release beyond the next time they change, so
that application developers aren't consistently caught off guard if they don't
synchronize with the DPDK release schedule.

I know the kernel API's are constantly changing, but this isn't the kernel,
its a user space library.  Theres nothing that prevents a third party from
writing a pmd to interface to the ethdev library, which is no different from any
other user space library.  If the DPDK wants to get packaged like other
libraries in distributions, it needs to provide stability assurances like other
libraries.

Neil

^ permalink raw reply	[flat|nested] 50+ messages in thread

* [dpdk-dev] [PATCH v2 0/4] Update build process
  2014-10-02 15:56 [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y Sergio Gonzalez Monroy
                   ` (4 preceding siblings ...)
  2014-10-02 17:26 ` [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y Neil Horman
@ 2014-10-06 10:52 ` Sergio Gonzalez Monroy
  2014-10-06 10:52   ` [dpdk-dev] [PATCH v2 1/4] Link combined shared library using CC Sergio Gonzalez Monroy
                     ` (5 more replies)
  5 siblings, 6 replies; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-06 10:52 UTC (permalink / raw)
  To: dev

As per the proposal, this patch set does:
 - Remove CONFIG_RTE_BUILD_COMBINE_LIBS as a configuration option.
 - For static library, build a single/combined library.
 - For shared libraries, build both individual/separated and single/combined
   libraries.
 - Link apps only against single/combined libs.


Sergio Gonzalez Monroy (4):
  Link combined shared library using CC
  Link apps only against single/combined library
  Update library build process
  Link apps/DSOs against EXECENV_LDLIBS with --as-needed

 config/common_bsdapp   |   3 +-
 config/common_linuxapp |   3 +-
 mk/rte.app.mk          | 164 ++-----------------------------------------------
 mk/rte.lib.mk          |  81 ++++++------------------
 mk/rte.sdkbuild.mk     |   2 +-
 mk/rte.sharelib.mk     |  54 ++++++++--------
 mk/rte.vars.mk         |   4 --
 7 files changed, 54 insertions(+), 257 deletions(-)

-- 
1.9.3

^ permalink raw reply	[flat|nested] 50+ messages in thread

* [dpdk-dev] [PATCH v2 1/4] Link combined shared library using CC
  2014-10-06 10:52 ` [dpdk-dev] [PATCH v2 0/4] Update build process Sergio Gonzalez Monroy
@ 2014-10-06 10:52   ` Sergio Gonzalez Monroy
  2014-10-06 10:52   ` [dpdk-dev] [PATCH v2 2/4] Link apps only against single/combined library Sergio Gonzalez Monroy
                     ` (4 subsequent siblings)
  5 siblings, 0 replies; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-06 10:52 UTC (permalink / raw)
  To: dev

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
---
 mk/rte.sharelib.mk | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/mk/rte.sharelib.mk b/mk/rte.sharelib.mk
index c0a811a..73ce709 100644
--- a/mk/rte.sharelib.mk
+++ b/mk/rte.sharelib.mk
@@ -29,6 +29,8 @@
 #   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 #   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+include $(RTE_SDK)/mk/internal/rte.build-pre.mk
+
 # VPATH contains at least SRCDIR
 VPATH += $(SRCDIR)
 
@@ -40,12 +42,20 @@ LIB_ONE := lib$(RTE_LIBNAME).a
 endif
 endif
 
+ifeq ($(LINK_USING_CC),1)
+# Override the definition of LD here, since we're linking with CC
+LD := $(CC)
+LD_MULDEFS := $(call linkerprefix,-z$(comma)muldefs)
+CPU_LDFLAGS := $(call linkerprefix,$(CPU_LDFLAGS))
+endif
+
 .PHONY:sharelib
 sharelib: $(LIB_ONE) FORCE
 
 OBJS = $(wildcard $(RTE_OUTPUT)/build/lib/*.o)
 
-O_TO_S = $(LD) $(CPU_LDFLAGS) -shared $(OBJS) -o $(RTE_OUTPUT)/lib/$(LIB_ONE)
+O_TO_S = $(LD) $(CPU_LDFLAGS) $(LD_MULDEFS) -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)"
-- 
1.9.3

^ permalink raw reply	[flat|nested] 50+ messages in thread

* [dpdk-dev] [PATCH v2 2/4] Link apps only against single/combined library
  2014-10-06 10:52 ` [dpdk-dev] [PATCH v2 0/4] Update build process Sergio Gonzalez Monroy
  2014-10-06 10:52   ` [dpdk-dev] [PATCH v2 1/4] Link combined shared library using CC Sergio Gonzalez Monroy
@ 2014-10-06 10:52   ` Sergio Gonzalez Monroy
  2014-10-06 10:52   ` [dpdk-dev] [PATCH v2 3/4] Update library build process Sergio Gonzalez Monroy
                     ` (3 subsequent siblings)
  5 siblings, 0 replies; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-06 10:52 UTC (permalink / raw)
  To: dev

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
---
 mk/rte.app.mk | 160 +---------------------------------------------------------
 1 file changed, 2 insertions(+), 158 deletions(-)

diff --git a/mk/rte.app.mk b/mk/rte.app.mk
index 34dff2a..5e00e67 100644
--- a/mk/rte.app.mk
+++ b/mk/rte.app.mk
@@ -60,164 +60,12 @@ LDLIBS += -L$(RTE_SDK_BIN)/lib
 ifeq ($(NO_AUTOLIBS),)
 
 LDLIBS += --whole-archive
-
-ifeq ($(CONFIG_RTE_LIBRTE_DISTRIBUTOR),y)
-LDLIBS += -lrte_distributor
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_KNI),y)
-ifeq ($(CONFIG_RTE_EXEC_ENV_LINUXAPP),y)
-LDLIBS += -lrte_kni
-endif
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_IVSHMEM),y)
-ifeq ($(CONFIG_RTE_EXEC_ENV_LINUXAPP),y)
-LDLIBS += -lrte_ivshmem
-endif
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_PIPELINE),y)
-LDLIBS += -lrte_pipeline
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_TABLE),y)
-LDLIBS += -lrte_table
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_PORT),y)
-LDLIBS += -lrte_port
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_TIMER),y)
-LDLIBS += -lrte_timer
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_HASH),y)
-LDLIBS += -lrte_hash
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_LPM),y)
-LDLIBS += -lrte_lpm
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_POWER),y)
-LDLIBS += -lrte_power
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_ACL),y)
-LDLIBS += -lrte_acl
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_METER),y)
-LDLIBS += -lrte_meter
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_SCHED),y)
-LDLIBS += -lrte_sched
-LDLIBS += -lm
-LDLIBS += -lrt
-endif
-
+LDLIBS += -l$(RTE_LIBNAME)
+LDLIBS += --no-whole-archive
 LDLIBS += --start-group
-
-ifeq ($(CONFIG_RTE_LIBRTE_KVARGS),y)
-LDLIBS += -lrte_kvargs
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_MBUF),y)
-LDLIBS += -lrte_mbuf
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_IP_FRAG),y)
-LDLIBS += -lrte_ip_frag
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_ETHER),y)
-LDLIBS += -lethdev
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_MALLOC),y)
-LDLIBS += -lrte_malloc
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_MEMPOOL),y)
-LDLIBS += -lrte_mempool
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_RING),y)
-LDLIBS += -lrte_ring
-endif
-
-ifeq ($(CONFIG_RTE_LIBC),y)
-LDLIBS += -lc
-LDLIBS += -lm
-endif
-
-ifeq ($(CONFIG_RTE_LIBGLOSS),y)
-LDLIBS += -lgloss
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_EAL),y)
-LDLIBS += -lrte_eal
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_CMDLINE),y)
-LDLIBS += -lrte_cmdline
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_CFGFILE),y)
-LDLIBS += -lrte_cfgfile
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_PMD_BOND),y)
-LDLIBS += -lrte_pmd_bond
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_PMD_XENVIRT),y)
-LDLIBS += -lrte_pmd_xenvirt
-LDLIBS += -lxenstore
-endif
-
-ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),n)
-# plugins (link only if static libraries)
-
-ifeq ($(CONFIG_RTE_LIBRTE_VMXNET3_PMD),y)
-LDLIBS += -lrte_pmd_vmxnet3_uio
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_VIRTIO_PMD),y)
-LDLIBS += -lrte_pmd_virtio_uio
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_I40E_PMD),y)
-LDLIBS += -lrte_pmd_i40e
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_IXGBE_PMD),y)
-LDLIBS += -lrte_pmd_ixgbe
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_E1000_PMD),y)
-LDLIBS += -lrte_pmd_e1000
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_PMD_RING),y)
-LDLIBS += -lrte_pmd_ring
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_PMD_PCAP),y)
-LDLIBS += -lrte_pmd_pcap -lpcap
-endif
-
-endif # plugins
-
 LDLIBS += $(EXECENV_LDLIBS)
-
 LDLIBS += --end-group
 
-LDLIBS += --no-whole-archive
-
 endif # ifeq ($(NO_AUTOLIBS),)
 
 LDLIBS += $(CPU_LDLIBS)
@@ -235,10 +83,6 @@ build: _postbuild
 
 exe2cmd = $(strip $(call dotfile,$(patsubst %,%.cmd,$(1))))
 
-ifeq ($(RTE_BUILD_COMBINE_LIBS),y)
-LDLIBS += -l$(RTE_LIBNAME)
-endif
-
 ifeq ($(LINK_USING_CC),1)
 LDLIBS := $(call linkerprefix,$(LDLIBS))
 LDFLAGS := $(call linkerprefix,$(LDFLAGS))
-- 
1.9.3

^ permalink raw reply	[flat|nested] 50+ messages in thread

* [dpdk-dev] [PATCH v2 3/4] Update library build process
  2014-10-06 10:52 ` [dpdk-dev] [PATCH v2 0/4] Update build process Sergio Gonzalez Monroy
  2014-10-06 10:52   ` [dpdk-dev] [PATCH v2 1/4] Link combined shared library using CC Sergio Gonzalez Monroy
  2014-10-06 10:52   ` [dpdk-dev] [PATCH v2 2/4] Link apps only against single/combined library Sergio Gonzalez Monroy
@ 2014-10-06 10:52   ` Sergio Gonzalez Monroy
  2014-10-06 20:46     ` Matthew Hall
  2014-10-08 15:38     ` Thomas Monjalon
  2014-10-06 10:52   ` [dpdk-dev] [PATCH v2 4/4] Link apps/DSOs against EXECENV_LDLIBS with --as-needed Sergio Gonzalez Monroy
                     ` (2 subsequent siblings)
  5 siblings, 2 replies; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-06 10:52 UTC (permalink / raw)
  To: dev

Remove COMBINE_LIBS option and by default build:
- CONFIG_RTE_BUILD_SHARED_LIB=y : both individual and combined libraries
- CONFIG_RTE_BUILD_SHARED_LIB=n : single combined library

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
---
 config/common_bsdapp   |  3 +--
 config/common_linuxapp |  3 +--
 mk/rte.lib.mk          | 73 ++++++++------------------------------------------
 mk/rte.sdkbuild.mk     |  2 +-
 mk/rte.sharelib.mk     | 41 +++++++++++-----------------
 mk/rte.vars.mk         |  4 ---
 6 files changed, 29 insertions(+), 97 deletions(-)

diff --git a/config/common_bsdapp b/config/common_bsdapp
index eebd05b..65d2ecc 100644
--- a/config/common_bsdapp
+++ b/config/common_bsdapp
@@ -79,9 +79,8 @@ CONFIG_RTE_FORCE_INTRINSICS=n
 CONFIG_RTE_BUILD_SHARED_LIB=n
 
 #
-# Combine to one single library
+# Library name
 #
-CONFIG_RTE_BUILD_COMBINE_LIBS=n
 CONFIG_RTE_LIBNAME=intel_dpdk
 
 #
diff --git a/config/common_linuxapp b/config/common_linuxapp
index 4713eb4..5bdcdf3 100644
--- a/config/common_linuxapp
+++ b/config/common_linuxapp
@@ -79,9 +79,8 @@ CONFIG_RTE_FORCE_INTRINSICS=n
 CONFIG_RTE_BUILD_SHARED_LIB=n
 
 #
-# Combine to one single library
+# Library name
 #
-CONFIG_RTE_BUILD_COMBINE_LIBS=n
 CONFIG_RTE_LIBNAME="intel_dpdk"
 
 #
diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
index f458258..e7420bf 100644
--- a/mk/rte.lib.mk
+++ b/mk/rte.lib.mk
@@ -66,48 +66,23 @@ LD_MULDEFS := $(call linkerprefix,-z$(comma)muldefs)
 CPU_LDFLAGS := $(call linkerprefix,$(CPU_LDFLAGS))
 endif
 
-O_TO_A = $(AR) crus $(LIB) $(OBJS-y)
-O_TO_A_STR = $(subst ','\'',$(O_TO_A)) #'# fix syntax highlight
-O_TO_A_DISP = $(if $(V),"$(O_TO_A_STR)","  AR $(@)")
-O_TO_A_CMD = "cmd_$@ = $(O_TO_A_STR)"
-O_TO_A_DO = @set -e; \
-	echo $(O_TO_A_DISP); \
-	$(O_TO_A) && \
-	echo $(O_TO_A_CMD) > $(call exe2cmd,$(@))
-
 O_TO_S = $(LD) $(CPU_LDFLAGS) $(LD_MULDEFS) -shared $(OBJS-y) -o $(LIB)
-O_TO_S_STR = $(subst ','\'',$(O_TO_S)) #'# fix syntax highlight
+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)"
 O_TO_S_DO = @set -e; \
+	cp -f $(OBJS-y) $(RTE_OUTPUT)/build/lib; \
 	echo $(O_TO_S_DISP); \
 	$(O_TO_S) && \
 	echo $(O_TO_S_CMD) > $(call exe2cmd,$(@))
 
-ifeq ($(RTE_BUILD_SHARED_LIB),n)
-O_TO_C = $(AR) crus $(LIB_ONE) $(OBJS-y)
-O_TO_C_STR = $(subst ','\'',$(O_TO_C)) #'# fix syntax highlight
-O_TO_C_DISP = $(if $(V),"$(O_TO_C_STR)","  AR_C $(@)")
-O_TO_C_DO = @set -e; \
-	$(lib_dir) \
-	$(copy_obj)
-else
-O_TO_C = $(LD) $(LD_MULDEFS) -shared $(OBJS-y) -o $(LIB_ONE)
-O_TO_C_STR = $(subst ','\'',$(O_TO_C)) #'# fix syntax highlight
-O_TO_C_DISP = $(if $(V),"$(O_TO_C_STR)","  LD_C $(@)")
-O_TO_C_DO = @set -e; \
-	$(lib_dir) \
-	$(copy_obj)
-endif
-
-copy_obj = cp -f $(OBJS-y) $(RTE_OUTPUT)/build/lib;
-lib_dir = [ -d $(RTE_OUTPUT)/lib ] || mkdir -p $(RTE_OUTPUT)/lib;
 -include .$(LIB).cmd
 
 #
 # Archive objects in .a file if needed
 #
-ifeq ($(RTE_BUILD_SHARED_LIB),y)
 $(LIB): $(OBJS-y) $(DEP_$(LIB)) FORCE
+ifeq ($(RTE_BUILD_SHARED_LIB),y)
 	@[ -d $(dir $@) ] || mkdir -p $(dir $@)
 	$(if $(D),\
 		@echo -n "$< -> $@ " ; \
@@ -116,51 +91,25 @@ $(LIB): $(OBJS-y) $(DEP_$(LIB)) FORCE
 		echo -n "depfile_missing=$(call boolean,$(depfile_missing)) " ; \
 		echo "depfile_newer=$(call boolean,$(depfile_newer)) ")
 	$(if $(or \
-		$(file_missing),\
-		$(call cmdline_changed,$(O_TO_S_STR)),\
-		$(depfile_missing),\
-		$(depfile_newer)),\
-		$(O_TO_S_DO))
-ifeq ($(RTE_BUILD_COMBINE_LIBS),y)
-	$(if $(or \
-        $(file_missing),\
-        $(call cmdline_changed,$(O_TO_C_STR)),\
-        $(depfile_missing),\
-        $(depfile_newer)),\
-        $(O_TO_C_DO))
-endif
-else
-$(LIB): $(OBJS-y) $(DEP_$(LIB)) FORCE
-	@[ -d $(dir $@) ] || mkdir -p $(dir $@)
-	$(if $(D),\
-	    @echo -n "$< -> $@ " ; \
-	    echo -n "file_missing=$(call boolean,$(file_missing)) " ; \
-	    echo -n "cmdline_changed=$(call boolean,$(call cmdline_changed,$(O_TO_A_STR))) " ; \
-	    echo -n "depfile_missing=$(call boolean,$(depfile_missing)) " ; \
-	    echo "depfile_newer=$(call boolean,$(depfile_newer)) ")
-	$(if $(or \
 	    $(file_missing),\
-	    $(call cmdline_changed,$(O_TO_A_STR)),\
+	    $(call cmdline_changed,$(O_TO_S_STR)),\
 	    $(depfile_missing),\
 	    $(depfile_newer)),\
-	    $(O_TO_A_DO))
-ifeq ($(RTE_BUILD_COMBINE_LIBS),y)
-	$(if $(or \
-        $(file_missing),\
-        $(call cmdline_changed,$(O_TO_C_STR)),\
-        $(depfile_missing),\
-        $(depfile_newer)),\
-        $(O_TO_C_DO))
-endif
+	    $(O_TO_S_DO))
+else
+	@set -e; \
+	cp -f $(OBJS-y) $(RTE_OUTPUT)/build/lib;
 endif
 
 #
 # install lib in $(RTE_OUTPUT)/lib
 #
 $(RTE_OUTPUT)/lib/$(LIB): $(LIB)
+ifeq ($(RTE_BUILD_SHARED_LIB),y)
 	@echo "  INSTALL-LIB $(LIB)"
 	@[ -d $(RTE_OUTPUT)/lib ] || mkdir -p $(RTE_OUTPUT)/lib
 	$(Q)cp -f $(LIB) $(RTE_OUTPUT)/lib
+endif
 
 #
 # Clean all generated files
diff --git a/mk/rte.sdkbuild.mk b/mk/rte.sdkbuild.mk
index 3154457..f20ec1e 100644
--- a/mk/rte.sdkbuild.mk
+++ b/mk/rte.sdkbuild.mk
@@ -93,7 +93,7 @@ $(ROOTDIRS-y):
 	@[ -d $(BUILDDIR)/$@ ] || mkdir -p $(BUILDDIR)/$@
 	@echo "== Build $@"
 	$(Q)$(MAKE) S=$@ -f $(RTE_SRCDIR)/$@/Makefile -C $(BUILDDIR)/$@ all
-	@if [ $@ = lib -a $(RTE_BUILD_COMBINE_LIBS) = y ]; then \
+	@if [ $@ = lib ]; then \
 		$(MAKE) -f $(RTE_SDK)/lib/Makefile sharelib; \
 	fi
 
diff --git a/mk/rte.sharelib.mk b/mk/rte.sharelib.mk
index 73ce709..8fc6548 100644
--- a/mk/rte.sharelib.mk
+++ b/mk/rte.sharelib.mk
@@ -34,13 +34,11 @@ include $(RTE_SDK)/mk/internal/rte.build-pre.mk
 # VPATH contains at least SRCDIR
 VPATH += $(SRCDIR)
 
-ifeq ($(RTE_BUILD_COMBINE_LIBS),y)
 ifeq ($(RTE_BUILD_SHARED_LIB),y)
 LIB_ONE := lib$(RTE_LIBNAME).so
 else
 LIB_ONE := lib$(RTE_LIBNAME).a
 endif
-endif
 
 ifeq ($(LINK_USING_CC),1)
 # Override the definition of LD here, since we're linking with CC
@@ -54,37 +52,28 @@ sharelib: $(LIB_ONE) FORCE
 
 OBJS = $(wildcard $(RTE_OUTPUT)/build/lib/*.o)
 
-O_TO_S = $(LD) $(CPU_LDFLAGS) $(LD_MULDEFS) -shared $(OBJS)\
+ifeq ($(RTE_BUILD_SHARED_LIB),y)
+O_TO_L = $(LD) $(CPU_LDFLAGS) $(LD_MULDEFS) -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)"
-O_TO_S_DO = @set -e; \
-    echo $(O_TO_S_DISP); \
-    $(O_TO_S)
+L_DISP=LD
+else
+O_TO_L = $(AR) crus $(RTE_OUTPUT)/lib/$(LIB_ONE) $(OBJS)
+L_DISP=AR
+endif
+O_TO_L_STR = $(subst ','\'',$(O_TO_L)) #')# fix syntax highlight
+O_TO_L_DISP = $(if $(V),"$(O_TO_L_STR)","  $(L_DISP) $(@)")
+O_TO_L_CMD = "cmd_$@ = $(O_TO_L_STR)"
+O_TO_L_DO = @set -e; \
+	mkdir -p $(RTE_OUTPUT)/lib; \
+	echo $(O_TO_L_DISP); \
+	$(O_TO_L)
 
-O_TO_A =  $(AR) crus $(RTE_OUTPUT)/lib/$(LIB_ONE) $(OBJS)
-O_TO_A_STR = $(subst ','\'',$(O_TO_A)) #'# fix syntax highlight
-O_TO_A_DISP = $(if $(V),"$(O_TO_A_STR)","  LD $(@)")
-O_TO_A_CMD = "cmd_$@ = $(O_TO_A_STR)"
-O_TO_A_DO = @set -e; \
-    echo $(O_TO_A_DISP); \
-    $(O_TO_A)
 #
 # Archive objects to share library
 #
 
-ifeq ($(RTE_BUILD_COMBINE_LIBS),y)
-ifeq ($(RTE_BUILD_SHARED_LIB),y)
 $(LIB_ONE): FORCE
-	@[ -d $(dir $@) ] || mkdir -p $(dir $@)
-	$(O_TO_S_DO)
-else
-$(LIB_ONE): FORCE
-	@[ -d $(dir $@) ] || mkdir -p $(dir $@)
-	$(O_TO_A_DO)
-endif
-endif
+	$(O_TO_L_DO)
 
 #
 # Clean all generated files
diff --git a/mk/rte.vars.mk b/mk/rte.vars.mk
index 1e874ee..5bcc4a5 100644
--- a/mk/rte.vars.mk
+++ b/mk/rte.vars.mk
@@ -67,10 +67,6 @@ ifneq ($(BUILDING_RTE_SDK),)
   ifeq ($(RTE_BUILD_SHARED_LIB),)
     RTE_BUILD_SHARED_LIB := n
   endif
-  RTE_BUILD_COMBINE_LIBS := $(CONFIG_RTE_BUILD_COMBINE_LIBS:"%"=%)
-  ifeq ($(RTE_BUILD_COMBINE_LIBS),)
-    RTE_BUILD_COMBINE_LIBS := n
-  endif
   RTE_LIBNAME := $(CONFIG_RTE_LIBNAME:"%"=%)
   ifeq ($(RTE_LIBNAME),)
     RTE_LIBNAME := intel_dpdk
-- 
1.9.3

^ permalink raw reply	[flat|nested] 50+ messages in thread

* [dpdk-dev] [PATCH v2 4/4] Link apps/DSOs against EXECENV_LDLIBS with --as-needed
  2014-10-06 10:52 ` [dpdk-dev] [PATCH v2 0/4] Update build process Sergio Gonzalez Monroy
                     ` (2 preceding siblings ...)
  2014-10-06 10:52   ` [dpdk-dev] [PATCH v2 3/4] Update library build process Sergio Gonzalez Monroy
@ 2014-10-06 10:52   ` Sergio Gonzalez Monroy
  2014-10-08 15:38     ` Thomas Monjalon
  2014-10-06 14:49   ` [dpdk-dev] [PATCH v2 0/4] Update build process Neil Horman
  2014-10-09 13:04   ` [dpdk-dev] [PATCH v3 0/6] Update libs " Sergio Gonzalez Monroy
  5 siblings, 1 reply; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-06 10:52 UTC (permalink / raw)
  To: dev

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
---
 mk/rte.app.mk      | 4 ++--
 mk/rte.lib.mk      | 8 +++++++-
 mk/rte.sharelib.mk | 7 ++++++-
 3 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/mk/rte.app.mk b/mk/rte.app.mk
index 5e00e67..e775ad7 100644
--- a/mk/rte.app.mk
+++ b/mk/rte.app.mk
@@ -62,9 +62,9 @@ ifeq ($(NO_AUTOLIBS),)
 LDLIBS += --whole-archive
 LDLIBS += -l$(RTE_LIBNAME)
 LDLIBS += --no-whole-archive
-LDLIBS += --start-group
+LDLIBS += --as-needed
 LDLIBS += $(EXECENV_LDLIBS)
-LDLIBS += --end-group
+LDLIBS += --no-as-needed
 
 endif # ifeq ($(NO_AUTOLIBS),)
 
diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
index e7420bf..947e17d 100644
--- a/mk/rte.lib.mk
+++ b/mk/rte.lib.mk
@@ -59,14 +59,20 @@ build: _postbuild
 
 exe2cmd = $(strip $(call dotfile,$(patsubst %,%.cmd,$(1))))
 
+O_TO_S_LDLIBS := --as-needed
+O_TO_S_LDLIBS += $(EXECENV_LDLIBS)
+O_TO_S_LDLIBS += --no-as-needed
+
 ifeq ($(LINK_USING_CC),1)
 # Override the definition of LD here, since we're linking with CC
 LD := $(CC)
 LD_MULDEFS := $(call linkerprefix,-z$(comma)muldefs)
 CPU_LDFLAGS := $(call linkerprefix,$(CPU_LDFLAGS))
+O_TO_S_LDLIBS := $(call linkerprefix,$(O_TO_S_LDLIBS))
 endif
 
-O_TO_S = $(LD) $(CPU_LDFLAGS) $(LD_MULDEFS) -shared $(OBJS-y) -o $(LIB)
+O_TO_S = $(LD) $(CPU_LDFLAGS) $(LD_MULDEFS) -shared $(OBJS-y) \
+	$(O_TO_S_LDLIBS) -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_CMD = "cmd_$@ = $(O_TO_S_STR)"
diff --git a/mk/rte.sharelib.mk b/mk/rte.sharelib.mk
index 8fc6548..380aa7d 100644
--- a/mk/rte.sharelib.mk
+++ b/mk/rte.sharelib.mk
@@ -40,11 +40,16 @@ else
 LIB_ONE := lib$(RTE_LIBNAME).a
 endif
 
+O_TO_L_LDLIBS := --as-needed
+O_TO_L_LDLIBS += $(EXECENV_LDLIBS)
+O_TO_L_LDLIBS += --no-as-needed
+
 ifeq ($(LINK_USING_CC),1)
 # Override the definition of LD here, since we're linking with CC
 LD := $(CC)
 LD_MULDEFS := $(call linkerprefix,-z$(comma)muldefs)
 CPU_LDFLAGS := $(call linkerprefix,$(CPU_LDFLAGS))
+O_TO_L_LDLIBS := $(call linkerprefix,$(O_TO_L_LDLIBS))
 endif
 
 .PHONY:sharelib
@@ -54,7 +59,7 @@ OBJS = $(wildcard $(RTE_OUTPUT)/build/lib/*.o)
 
 ifeq ($(RTE_BUILD_SHARED_LIB),y)
 O_TO_L = $(LD) $(CPU_LDFLAGS) $(LD_MULDEFS) -shared $(OBJS)\
-	-o $(RTE_OUTPUT)/lib/$(LIB_ONE)
+	$(O_TO_L_LDLIBS) -o $(RTE_OUTPUT)/lib/$(LIB_ONE)
 L_DISP=LD
 else
 O_TO_L = $(AR) crus $(RTE_OUTPUT)/lib/$(LIB_ONE) $(OBJS)
-- 
1.9.3

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y
  2014-10-03 21:21                 ` Matthew Hall
@ 2014-10-06 14:45                   ` Neil Horman
  0 siblings, 0 replies; 50+ messages in thread
From: Neil Horman @ 2014-10-06 14:45 UTC (permalink / raw)
  To: Matthew Hall; +Cc: dev

On Fri, Oct 03, 2014 at 02:21:50PM -0700, Matthew Hall wrote:
> On Fri, Oct 03, 2014 at 03:15:46PM -0400, Neil Horman wrote:
> > With a single archive, you get everything you build even if you don't need 
> > it.
> 
> Right, I was trying to avoid that for people who specifically didn't want it, 
> if there are any... I'm not one of them.
> 
> > But presumably if you're building a static binary, you're
> > likely building the dpdk as well and can configure optional libraries out of the
> > build.  Separate libraries are more a need for downstream
> > distributors/packagers, who use dynamic shared objects anyway.
> 
> Yeah, I was thinking it'd be nice if the downstream packagers could get a 
> global '.a' and per-sublib '.a' as well. So that one dpdk package could be 
> used by a client app which wanted everything, or only wanted portions.
> 
> > Backward compatibilty?  the DPDK doesn't yet provide run time compatibility
> > between releases (something I've been trying to change).  Nobody provides
> > compile time compatibility.  To do so would require fixing API's permenently.
> 
> Agreed. I was just advocating to avoid worsening the already existent issues. 
> ;)
> 
> Matthew.
> 
Fair enough
Neil

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH v2 0/4] Update build process
  2014-10-06 10:52 ` [dpdk-dev] [PATCH v2 0/4] Update build process Sergio Gonzalez Monroy
                     ` (3 preceding siblings ...)
  2014-10-06 10:52   ` [dpdk-dev] [PATCH v2 4/4] Link apps/DSOs against EXECENV_LDLIBS with --as-needed Sergio Gonzalez Monroy
@ 2014-10-06 14:49   ` Neil Horman
  2014-10-06 15:01     ` Sergio Gonzalez Monroy
  2014-10-09 13:04   ` [dpdk-dev] [PATCH v3 0/6] Update libs " Sergio Gonzalez Monroy
  5 siblings, 1 reply; 50+ messages in thread
From: Neil Horman @ 2014-10-06 14:49 UTC (permalink / raw)
  To: Sergio Gonzalez Monroy; +Cc: dev

On Mon, Oct 06, 2014 at 11:52:31AM +0100, Sergio Gonzalez Monroy wrote:
> As per the proposal, this patch set does:
>  - Remove CONFIG_RTE_BUILD_COMBINE_LIBS as a configuration option.
>  - For static library, build a single/combined library.
>  - For shared libraries, build both individual/separated and single/combined
>    libraries.
>  - Link apps only against single/combined libs.
> 
> 
> Sergio Gonzalez Monroy (4):
>   Link combined shared library using CC
>   Link apps only against single/combined library
>   Update library build process
>   Link apps/DSOs against EXECENV_LDLIBS with --as-needed
> 
>  config/common_bsdapp   |   3 +-
>  config/common_linuxapp |   3 +-
>  mk/rte.app.mk          | 164 ++-----------------------------------------------
>  mk/rte.lib.mk          |  81 ++++++------------------
>  mk/rte.sdkbuild.mk     |   2 +-
>  mk/rte.sharelib.mk     |  54 ++++++++--------
>  mk/rte.vars.mk         |   4 --
>  7 files changed, 54 insertions(+), 257 deletions(-)
> 
> -- 
> 1.9.3
> 
> 

I see you removed the --whole-archive option when building the single library
here.  Have you checked to make sure that all the constructors haven't been
stripped out?
Neil

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH v2 0/4] Update build process
  2014-10-06 14:49   ` [dpdk-dev] [PATCH v2 0/4] Update build process Neil Horman
@ 2014-10-06 15:01     ` Sergio Gonzalez Monroy
  2014-10-06 16:05       ` Neil Horman
  0 siblings, 1 reply; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-06 15:01 UTC (permalink / raw)
  To: Neil Horman; +Cc: dev

On Mon, Oct 06, 2014 at 10:49:46AM -0400, Neil Horman wrote:
> On Mon, Oct 06, 2014 at 11:52:31AM +0100, Sergio Gonzalez Monroy wrote:
> > As per the proposal, this patch set does:
> >  - Remove CONFIG_RTE_BUILD_COMBINE_LIBS as a configuration option.
> >  - For static library, build a single/combined library.
> >  - For shared libraries, build both individual/separated and single/combined
> >    libraries.
> >  - Link apps only against single/combined libs.
> > 
> > 
> > Sergio Gonzalez Monroy (4):
> >   Link combined shared library using CC
> >   Link apps only against single/combined library
> >   Update library build process
> >   Link apps/DSOs against EXECENV_LDLIBS with --as-needed
> > 
> >  config/common_bsdapp   |   3 +-
> >  config/common_linuxapp |   3 +-
> >  mk/rte.app.mk          | 164 ++-----------------------------------------------
> >  mk/rte.lib.mk          |  81 ++++++------------------
> >  mk/rte.sdkbuild.mk     |   2 +-
> >  mk/rte.sharelib.mk     |  54 ++++++++--------
> >  mk/rte.vars.mk         |   4 --
> >  7 files changed, 54 insertions(+), 257 deletions(-)
> > 
> > -- 
> > 1.9.3
> > 
> > 
> 
> I see you removed the --whole-archive option when building the single library
> here.  Have you checked to make sure that all the constructors haven't been
> stripped out?

I am not entirely sure I follow. There is no --whole-archive when building libraries,
at least not in my sources.
The flag is used when linking apps and I have not removed it as you can see on patch 2/4.

Sergio

> Neil
> 

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH v2 0/4] Update build process
  2014-10-06 15:01     ` Sergio Gonzalez Monroy
@ 2014-10-06 16:05       ` Neil Horman
  0 siblings, 0 replies; 50+ messages in thread
From: Neil Horman @ 2014-10-06 16:05 UTC (permalink / raw)
  To: Sergio Gonzalez Monroy; +Cc: dev

On Mon, Oct 06, 2014 at 04:01:33PM +0100, Sergio Gonzalez Monroy wrote:
> On Mon, Oct 06, 2014 at 10:49:46AM -0400, Neil Horman wrote:
> > On Mon, Oct 06, 2014 at 11:52:31AM +0100, Sergio Gonzalez Monroy wrote:
> > > As per the proposal, this patch set does:
> > >  - Remove CONFIG_RTE_BUILD_COMBINE_LIBS as a configuration option.
> > >  - For static library, build a single/combined library.
> > >  - For shared libraries, build both individual/separated and single/combined
> > >    libraries.
> > >  - Link apps only against single/combined libs.
> > > 
> > > 
> > > Sergio Gonzalez Monroy (4):
> > >   Link combined shared library using CC
> > >   Link apps only against single/combined library
> > >   Update library build process
> > >   Link apps/DSOs against EXECENV_LDLIBS with --as-needed
> > > 
> > >  config/common_bsdapp   |   3 +-
> > >  config/common_linuxapp |   3 +-
> > >  mk/rte.app.mk          | 164 ++-----------------------------------------------
> > >  mk/rte.lib.mk          |  81 ++++++------------------
> > >  mk/rte.sdkbuild.mk     |   2 +-
> > >  mk/rte.sharelib.mk     |  54 ++++++++--------
> > >  mk/rte.vars.mk         |   4 --
> > >  7 files changed, 54 insertions(+), 257 deletions(-)
> > > 
> > > -- 
> > > 1.9.3
> > > 
> > > 
> > 
> > I see you removed the --whole-archive option when building the single library
> > here.  Have you checked to make sure that all the constructors haven't been
> > stripped out?
> 
> I am not entirely sure I follow. There is no --whole-archive when building libraries,
> at least not in my sources.
> The flag is used when linking apps and I have not removed it as you can see on patch 2/4.
> 
> Sergio
You're right, I saw in one of your patches --whole-archive, but it was context,
not actual change, sorry
Neil

> 
> > Neil
> > 
> 

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH v2 3/4] Update library build process
  2014-10-06 10:52   ` [dpdk-dev] [PATCH v2 3/4] Update library build process Sergio Gonzalez Monroy
@ 2014-10-06 20:46     ` Matthew Hall
  2014-10-07  9:55       ` Sergio Gonzalez Monroy
  2014-10-08 15:38     ` Thomas Monjalon
  1 sibling, 1 reply; 50+ messages in thread
From: Matthew Hall @ 2014-10-06 20:46 UTC (permalink / raw)
  To: Sergio Gonzalez Monroy; +Cc: dev

On Mon, Oct 06, 2014 at 11:52:34AM +0100, Sergio Gonzalez Monroy wrote:
> Remove COMBINE_LIBS option and by default build:
> - CONFIG_RTE_BUILD_SHARED_LIB=y : both individual and combined libraries
> - CONFIG_RTE_BUILD_SHARED_LIB=n : single combined library

As previously discussed.,It would be better for backward-compatibility of 
people linking against DPDK, if the static lib could come out as both a 
combined library and separate individual libraries by default.

Otherwise everybody linking against DPDK has to change their code, and it 
won't be easy for them to move forward and backward against different DPDKs 
before and after this change.

Thanks,
Matthew.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH v2 3/4] Update library build process
  2014-10-06 20:46     ` Matthew Hall
@ 2014-10-07  9:55       ` Sergio Gonzalez Monroy
  2014-10-08 22:36         ` Matthew Hall
  0 siblings, 1 reply; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-07  9:55 UTC (permalink / raw)
  To: Matthew Hall; +Cc: dev

On Mon, Oct 06, 2014 at 01:46:07PM -0700, Matthew Hall wrote:
> On Mon, Oct 06, 2014 at 11:52:34AM +0100, Sergio Gonzalez Monroy wrote:
> > Remove COMBINE_LIBS option and by default build:
> > - CONFIG_RTE_BUILD_SHARED_LIB=y : both individual and combined libraries
> > - CONFIG_RTE_BUILD_SHARED_LIB=n : single combined library
> 
> As previously discussed.,It would be better for backward-compatibility of 
> people linking against DPDK, if the static lib could come out as both a 
> combined library and separate individual libraries by default.
> 
> Otherwise everybody linking against DPDK has to change their code, and it 
> won't be easy for them to move forward and backward against different DPDKs 
> before and after this change.
> 
> Thanks,
> Matthew.

Hi Matthew,

My understanding from previous conversations is that backward-compatibility
is not being provided for the next release, as such it is unlikely that
backward-compatibility for compile/linking will be provided.

I don't see how this particular patch would force people to change their code,
though in all likelihood they will have to as a result of ABI changes in the
following release.
The only difference now would be when they link their applications against a
single library instead of multiple separated libraries.

Thanks,
Sergio

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH v2 3/4] Update library build process
  2014-10-06 10:52   ` [dpdk-dev] [PATCH v2 3/4] Update library build process Sergio Gonzalez Monroy
  2014-10-06 20:46     ` Matthew Hall
@ 2014-10-08 15:38     ` Thomas Monjalon
  1 sibling, 0 replies; 50+ messages in thread
From: Thomas Monjalon @ 2014-10-08 15:38 UTC (permalink / raw)
  To: Sergio Gonzalez Monroy; +Cc: dev

Hi Sergio,

2014-10-06 11:52, Sergio Gonzalez Monroy:
> Remove COMBINE_LIBS option and by default build:
> - CONFIG_RTE_BUILD_SHARED_LIB=y : both individual and combined libraries
> - CONFIG_RTE_BUILD_SHARED_LIB=n : single combined library
> 
> Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>

I'd appreciate this hairy patch to be splitted and commented if possible.
It's not easy to review as is.

Thanks
-- 
Thomas

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH v2 4/4] Link apps/DSOs against EXECENV_LDLIBS with --as-needed
  2014-10-06 10:52   ` [dpdk-dev] [PATCH v2 4/4] Link apps/DSOs against EXECENV_LDLIBS with --as-needed Sergio Gonzalez Monroy
@ 2014-10-08 15:38     ` Thomas Monjalon
  2014-10-09  9:23       ` Sergio Gonzalez Monroy
  0 siblings, 1 reply; 50+ messages in thread
From: Thomas Monjalon @ 2014-10-08 15:38 UTC (permalink / raw)
  To: Sergio Gonzalez Monroy; +Cc: dev

Please could you explain why patch is needed?

-- 
Thomas

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH v2 3/4] Update library build process
  2014-10-07  9:55       ` Sergio Gonzalez Monroy
@ 2014-10-08 22:36         ` Matthew Hall
  2014-10-09  9:44           ` Sergio Gonzalez Monroy
  0 siblings, 1 reply; 50+ messages in thread
From: Matthew Hall @ 2014-10-08 22:36 UTC (permalink / raw)
  To: Sergio Gonzalez Monroy; +Cc: dev

On Tue, Oct 07, 2014 at 10:55:11AM +0100, Sergio Gonzalez Monroy wrote:
> I don't see how this particular patch would force people to change their code,
> though in all likelihood they will have to as a result of ABI changes in the
> following release.
>
> The only difference now would be when they link their applications against a
> single library instead of multiple separated libraries.
> 
> Thanks,
> Sergio

Hi Sergio,

Changing all of your Makefiles does sound like changing code to me.

Matthew.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH v2 4/4] Link apps/DSOs against EXECENV_LDLIBS with --as-needed
  2014-10-08 15:38     ` Thomas Monjalon
@ 2014-10-09  9:23       ` Sergio Gonzalez Monroy
  0 siblings, 0 replies; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-09  9:23 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev

On Wed, Oct 08, 2014 at 05:38:52PM +0200, Thomas Monjalon wrote:
> Please could you explain why patch is needed?
> 
Hi Thomas,

Basically this patch just adds missing dependencies to DPDK DSOs. so the 
DL knows about them.

As an example, if we were to build an application against DPDK without
adding the libs defined in EXECENV_LDLIBS:

-- pre-patch:
LD test
test_red.o: In function `ovfl_test1':
test_red.c:(.text+0x1ac6): undefined reference to `log'
test_red.c:(.text+0x1ad3): undefined reference to `ceil'
test_red.o: In function `perf2_test':
test_red.c:(.text+0x2314): undefined reference to `pow'
test_red.o: In function `func_test3':
test_red.c:(.text+0x28d7): undefined reference to `pow'
test_red.o: In function `func_test6':
test_red.c:(.text+0x324c): undefined reference to `pow'
dpdk/x86_64-native-linuxapp-gcc/lib/libintel_dpdk.so: undefined reference to `dlopen'
dpdk/x86_64-native-linuxapp-gcc/lib/libintel_dpdk.so: undefined reference to `log2'
dpdk/x86_64-native-linuxapp-gcc/lib/libintel_dpdk.so: undefined reference to `dlerror'
dpdk/x86_64-native-linuxapp-gcc/lib/libintel_dpdk.so: undefined reference to `round'

-- post-patch:
LD test
/usr/bin/ld: test_red.o: undefined reference to symbol 'log@@GLIBC_2.2.5'
/usr/bin/ld: note: 'log@@GLIBC_2.2.5' is defined in DSO /lib64/libm.so.6 so try adding it to the linker command line
/lib64/libm.so.6: could not read symbols: Invalid operation

Thanks,
Sergio

> -- 
> Thomas

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH v2 3/4] Update library build process
  2014-10-08 22:36         ` Matthew Hall
@ 2014-10-09  9:44           ` Sergio Gonzalez Monroy
  0 siblings, 0 replies; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-09  9:44 UTC (permalink / raw)
  To: Matthew Hall; +Cc: dev

On Wed, Oct 08, 2014 at 03:36:55PM -0700, Matthew Hall wrote:
> On Tue, Oct 07, 2014 at 10:55:11AM +0100, Sergio Gonzalez Monroy wrote:
> > I don't see how this particular patch would force people to change their code,
> > though in all likelihood they will have to as a result of ABI changes in the
> > following release.
> >
> > The only difference now would be when they link their applications against a
> > single library instead of multiple separated libraries.
> > 
> > Thanks,
> > Sergio
> 
> Hi Sergio,
> 
> Changing all of your Makefiles does sound like changing code to me.
> 

Hi Matthew,

You are right, it is changing code.
What I was trying to say is that the impact of this patch is probrably going to
be one of the lowest as far as changing code for the next release.

Thanks,
Sergio

> Matthew.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* [dpdk-dev] [PATCH v3 0/6] Update libs build process
  2014-10-06 10:52 ` [dpdk-dev] [PATCH v2 0/4] Update build process Sergio Gonzalez Monroy
                     ` (4 preceding siblings ...)
  2014-10-06 14:49   ` [dpdk-dev] [PATCH v2 0/4] Update build process Neil Horman
@ 2014-10-09 13:04   ` Sergio Gonzalez Monroy
  2014-10-09 13:04     ` [dpdk-dev] [PATCH v3 1/6] Link combined shared library using CC Sergio Gonzalez Monroy
                       ` (6 more replies)
  5 siblings, 7 replies; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-09 13:04 UTC (permalink / raw)
  To: dev

As per the proposal, this patch set does:
 - Remove CONFIG_RTE_BUILD_COMBINE_LIBS as a configuration option.
 - For static library, build a single/combined library.
 - For shared libraries, build both individual/separated and single/combined
   libraries.
 - Link apps only against single/combined libs.
 - Include external shared libs dependencies when building shared libraries.

v3:
 - Split some of the patches for easier review
 - Improve patches descriptions

Sergio Gonzalez Monroy (6):
  Link combined shared library using CC
  Link apps only against single/combined library
  Remove CONFIG_RTE_BUILD_COMBINE_LIBS and related
  Update library build process
  Avoid duplicated code
  Link apps/DSOs against EXECENV_LDLIBS with --as-needed

 config/common_bsdapp   |   3 +-
 config/common_linuxapp |   3 +-
 mk/rte.app.mk          | 164 ++-----------------------------------------------
 mk/rte.lib.mk          |  81 ++++++------------------
 mk/rte.sdkbuild.mk     |   2 +-
 mk/rte.sharelib.mk     |  54 ++++++++--------
 mk/rte.vars.mk         |   4 --
 7 files changed, 54 insertions(+), 257 deletions(-)

-- 
1.9.3

^ permalink raw reply	[flat|nested] 50+ messages in thread

* [dpdk-dev] [PATCH v3 1/6] Link combined shared library using CC
  2014-10-09 13:04   ` [dpdk-dev] [PATCH v3 0/6] Update libs " Sergio Gonzalez Monroy
@ 2014-10-09 13:04     ` Sergio Gonzalez Monroy
  2014-10-09 13:04     ` [dpdk-dev] [PATCH v3 2/6] Link apps only against single/combined library Sergio Gonzalez Monroy
                       ` (5 subsequent siblings)
  6 siblings, 0 replies; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-09 13:04 UTC (permalink / raw)
  To: dev

This patch just enables to link libs with CC as we currently do for apps.

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
---
 mk/rte.sharelib.mk | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/mk/rte.sharelib.mk b/mk/rte.sharelib.mk
index c0a811a..73ce709 100644
--- a/mk/rte.sharelib.mk
+++ b/mk/rte.sharelib.mk
@@ -29,6 +29,8 @@
 #   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 #   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+include $(RTE_SDK)/mk/internal/rte.build-pre.mk
+
 # VPATH contains at least SRCDIR
 VPATH += $(SRCDIR)
 
@@ -40,12 +42,20 @@ LIB_ONE := lib$(RTE_LIBNAME).a
 endif
 endif
 
+ifeq ($(LINK_USING_CC),1)
+# Override the definition of LD here, since we're linking with CC
+LD := $(CC)
+LD_MULDEFS := $(call linkerprefix,-z$(comma)muldefs)
+CPU_LDFLAGS := $(call linkerprefix,$(CPU_LDFLAGS))
+endif
+
 .PHONY:sharelib
 sharelib: $(LIB_ONE) FORCE
 
 OBJS = $(wildcard $(RTE_OUTPUT)/build/lib/*.o)
 
-O_TO_S = $(LD) $(CPU_LDFLAGS) -shared $(OBJS) -o $(RTE_OUTPUT)/lib/$(LIB_ONE)
+O_TO_S = $(LD) $(CPU_LDFLAGS) $(LD_MULDEFS) -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)"
-- 
1.9.3

^ permalink raw reply	[flat|nested] 50+ messages in thread

* [dpdk-dev] [PATCH v3 2/6] Link apps only against single/combined library
  2014-10-09 13:04   ` [dpdk-dev] [PATCH v3 0/6] Update libs " Sergio Gonzalez Monroy
  2014-10-09 13:04     ` [dpdk-dev] [PATCH v3 1/6] Link combined shared library using CC Sergio Gonzalez Monroy
@ 2014-10-09 13:04     ` Sergio Gonzalez Monroy
  2014-10-09 13:04     ` [dpdk-dev] [PATCH v3 3/6] Remove CONFIG_RTE_BUILD_COMBINE_LIBS and related Sergio Gonzalez Monroy
                       ` (4 subsequent siblings)
  6 siblings, 0 replies; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-09 13:04 UTC (permalink / raw)
  To: dev

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
---
 mk/rte.app.mk | 160 +---------------------------------------------------------
 1 file changed, 2 insertions(+), 158 deletions(-)

diff --git a/mk/rte.app.mk b/mk/rte.app.mk
index 34dff2a..5e00e67 100644
--- a/mk/rte.app.mk
+++ b/mk/rte.app.mk
@@ -60,164 +60,12 @@ LDLIBS += -L$(RTE_SDK_BIN)/lib
 ifeq ($(NO_AUTOLIBS),)
 
 LDLIBS += --whole-archive
-
-ifeq ($(CONFIG_RTE_LIBRTE_DISTRIBUTOR),y)
-LDLIBS += -lrte_distributor
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_KNI),y)
-ifeq ($(CONFIG_RTE_EXEC_ENV_LINUXAPP),y)
-LDLIBS += -lrte_kni
-endif
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_IVSHMEM),y)
-ifeq ($(CONFIG_RTE_EXEC_ENV_LINUXAPP),y)
-LDLIBS += -lrte_ivshmem
-endif
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_PIPELINE),y)
-LDLIBS += -lrte_pipeline
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_TABLE),y)
-LDLIBS += -lrte_table
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_PORT),y)
-LDLIBS += -lrte_port
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_TIMER),y)
-LDLIBS += -lrte_timer
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_HASH),y)
-LDLIBS += -lrte_hash
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_LPM),y)
-LDLIBS += -lrte_lpm
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_POWER),y)
-LDLIBS += -lrte_power
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_ACL),y)
-LDLIBS += -lrte_acl
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_METER),y)
-LDLIBS += -lrte_meter
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_SCHED),y)
-LDLIBS += -lrte_sched
-LDLIBS += -lm
-LDLIBS += -lrt
-endif
-
+LDLIBS += -l$(RTE_LIBNAME)
+LDLIBS += --no-whole-archive
 LDLIBS += --start-group
-
-ifeq ($(CONFIG_RTE_LIBRTE_KVARGS),y)
-LDLIBS += -lrte_kvargs
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_MBUF),y)
-LDLIBS += -lrte_mbuf
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_IP_FRAG),y)
-LDLIBS += -lrte_ip_frag
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_ETHER),y)
-LDLIBS += -lethdev
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_MALLOC),y)
-LDLIBS += -lrte_malloc
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_MEMPOOL),y)
-LDLIBS += -lrte_mempool
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_RING),y)
-LDLIBS += -lrte_ring
-endif
-
-ifeq ($(CONFIG_RTE_LIBC),y)
-LDLIBS += -lc
-LDLIBS += -lm
-endif
-
-ifeq ($(CONFIG_RTE_LIBGLOSS),y)
-LDLIBS += -lgloss
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_EAL),y)
-LDLIBS += -lrte_eal
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_CMDLINE),y)
-LDLIBS += -lrte_cmdline
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_CFGFILE),y)
-LDLIBS += -lrte_cfgfile
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_PMD_BOND),y)
-LDLIBS += -lrte_pmd_bond
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_PMD_XENVIRT),y)
-LDLIBS += -lrte_pmd_xenvirt
-LDLIBS += -lxenstore
-endif
-
-ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),n)
-# plugins (link only if static libraries)
-
-ifeq ($(CONFIG_RTE_LIBRTE_VMXNET3_PMD),y)
-LDLIBS += -lrte_pmd_vmxnet3_uio
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_VIRTIO_PMD),y)
-LDLIBS += -lrte_pmd_virtio_uio
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_I40E_PMD),y)
-LDLIBS += -lrte_pmd_i40e
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_IXGBE_PMD),y)
-LDLIBS += -lrte_pmd_ixgbe
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_E1000_PMD),y)
-LDLIBS += -lrte_pmd_e1000
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_PMD_RING),y)
-LDLIBS += -lrte_pmd_ring
-endif
-
-ifeq ($(CONFIG_RTE_LIBRTE_PMD_PCAP),y)
-LDLIBS += -lrte_pmd_pcap -lpcap
-endif
-
-endif # plugins
-
 LDLIBS += $(EXECENV_LDLIBS)
-
 LDLIBS += --end-group
 
-LDLIBS += --no-whole-archive
-
 endif # ifeq ($(NO_AUTOLIBS),)
 
 LDLIBS += $(CPU_LDLIBS)
@@ -235,10 +83,6 @@ build: _postbuild
 
 exe2cmd = $(strip $(call dotfile,$(patsubst %,%.cmd,$(1))))
 
-ifeq ($(RTE_BUILD_COMBINE_LIBS),y)
-LDLIBS += -l$(RTE_LIBNAME)
-endif
-
 ifeq ($(LINK_USING_CC),1)
 LDLIBS := $(call linkerprefix,$(LDLIBS))
 LDFLAGS := $(call linkerprefix,$(LDFLAGS))
-- 
1.9.3

^ permalink raw reply	[flat|nested] 50+ messages in thread

* [dpdk-dev] [PATCH v3 3/6] Remove CONFIG_RTE_BUILD_COMBINE_LIBS and related
  2014-10-09 13:04   ` [dpdk-dev] [PATCH v3 0/6] Update libs " Sergio Gonzalez Monroy
  2014-10-09 13:04     ` [dpdk-dev] [PATCH v3 1/6] Link combined shared library using CC Sergio Gonzalez Monroy
  2014-10-09 13:04     ` [dpdk-dev] [PATCH v3 2/6] Link apps only against single/combined library Sergio Gonzalez Monroy
@ 2014-10-09 13:04     ` Sergio Gonzalez Monroy
  2014-10-09 13:04     ` [dpdk-dev] [PATCH v3 4/6] Update library build process Sergio Gonzalez Monroy
                       ` (3 subsequent siblings)
  6 siblings, 0 replies; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-09 13:04 UTC (permalink / raw)
  To: dev

Remove the configuration variable CONFIG_RTE_BUILD_COMBINE_LIBS and any
code related to it.

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
---
 config/common_bsdapp   |  3 +--
 config/common_linuxapp |  3 +--
 mk/rte.lib.mk          | 34 ----------------------------------
 mk/rte.sdkbuild.mk     |  2 +-
 mk/rte.sharelib.mk     |  4 ----
 mk/rte.vars.mk         |  4 ----
 6 files changed, 3 insertions(+), 47 deletions(-)

diff --git a/config/common_bsdapp b/config/common_bsdapp
index eebd05b..65d2ecc 100644
--- a/config/common_bsdapp
+++ b/config/common_bsdapp
@@ -79,9 +79,8 @@ CONFIG_RTE_FORCE_INTRINSICS=n
 CONFIG_RTE_BUILD_SHARED_LIB=n
 
 #
-# Combine to one single library
+# Library name
 #
-CONFIG_RTE_BUILD_COMBINE_LIBS=n
 CONFIG_RTE_LIBNAME=intel_dpdk
 
 #
diff --git a/config/common_linuxapp b/config/common_linuxapp
index 4713eb4..5bdcdf3 100644
--- a/config/common_linuxapp
+++ b/config/common_linuxapp
@@ -79,9 +79,8 @@ CONFIG_RTE_FORCE_INTRINSICS=n
 CONFIG_RTE_BUILD_SHARED_LIB=n
 
 #
-# Combine to one single library
+# Library name
 #
-CONFIG_RTE_BUILD_COMBINE_LIBS=n
 CONFIG_RTE_LIBNAME="intel_dpdk"
 
 #
diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
index f458258..53a149d 100644
--- a/mk/rte.lib.mk
+++ b/mk/rte.lib.mk
@@ -83,24 +83,6 @@ O_TO_S_DO = @set -e; \
 	$(O_TO_S) && \
 	echo $(O_TO_S_CMD) > $(call exe2cmd,$(@))
 
-ifeq ($(RTE_BUILD_SHARED_LIB),n)
-O_TO_C = $(AR) crus $(LIB_ONE) $(OBJS-y)
-O_TO_C_STR = $(subst ','\'',$(O_TO_C)) #'# fix syntax highlight
-O_TO_C_DISP = $(if $(V),"$(O_TO_C_STR)","  AR_C $(@)")
-O_TO_C_DO = @set -e; \
-	$(lib_dir) \
-	$(copy_obj)
-else
-O_TO_C = $(LD) $(LD_MULDEFS) -shared $(OBJS-y) -o $(LIB_ONE)
-O_TO_C_STR = $(subst ','\'',$(O_TO_C)) #'# fix syntax highlight
-O_TO_C_DISP = $(if $(V),"$(O_TO_C_STR)","  LD_C $(@)")
-O_TO_C_DO = @set -e; \
-	$(lib_dir) \
-	$(copy_obj)
-endif
-
-copy_obj = cp -f $(OBJS-y) $(RTE_OUTPUT)/build/lib;
-lib_dir = [ -d $(RTE_OUTPUT)/lib ] || mkdir -p $(RTE_OUTPUT)/lib;
 -include .$(LIB).cmd
 
 #
@@ -121,14 +103,6 @@ $(LIB): $(OBJS-y) $(DEP_$(LIB)) FORCE
 		$(depfile_missing),\
 		$(depfile_newer)),\
 		$(O_TO_S_DO))
-ifeq ($(RTE_BUILD_COMBINE_LIBS),y)
-	$(if $(or \
-        $(file_missing),\
-        $(call cmdline_changed,$(O_TO_C_STR)),\
-        $(depfile_missing),\
-        $(depfile_newer)),\
-        $(O_TO_C_DO))
-endif
 else
 $(LIB): $(OBJS-y) $(DEP_$(LIB)) FORCE
 	@[ -d $(dir $@) ] || mkdir -p $(dir $@)
@@ -144,14 +118,6 @@ $(LIB): $(OBJS-y) $(DEP_$(LIB)) FORCE
 	    $(depfile_missing),\
 	    $(depfile_newer)),\
 	    $(O_TO_A_DO))
-ifeq ($(RTE_BUILD_COMBINE_LIBS),y)
-	$(if $(or \
-        $(file_missing),\
-        $(call cmdline_changed,$(O_TO_C_STR)),\
-        $(depfile_missing),\
-        $(depfile_newer)),\
-        $(O_TO_C_DO))
-endif
 endif
 
 #
diff --git a/mk/rte.sdkbuild.mk b/mk/rte.sdkbuild.mk
index 3154457..f20ec1e 100644
--- a/mk/rte.sdkbuild.mk
+++ b/mk/rte.sdkbuild.mk
@@ -93,7 +93,7 @@ $(ROOTDIRS-y):
 	@[ -d $(BUILDDIR)/$@ ] || mkdir -p $(BUILDDIR)/$@
 	@echo "== Build $@"
 	$(Q)$(MAKE) S=$@ -f $(RTE_SRCDIR)/$@/Makefile -C $(BUILDDIR)/$@ all
-	@if [ $@ = lib -a $(RTE_BUILD_COMBINE_LIBS) = y ]; then \
+	@if [ $@ = lib ]; then \
 		$(MAKE) -f $(RTE_SDK)/lib/Makefile sharelib; \
 	fi
 
diff --git a/mk/rte.sharelib.mk b/mk/rte.sharelib.mk
index 73ce709..b32bd35 100644
--- a/mk/rte.sharelib.mk
+++ b/mk/rte.sharelib.mk
@@ -34,13 +34,11 @@ include $(RTE_SDK)/mk/internal/rte.build-pre.mk
 # VPATH contains at least SRCDIR
 VPATH += $(SRCDIR)
 
-ifeq ($(RTE_BUILD_COMBINE_LIBS),y)
 ifeq ($(RTE_BUILD_SHARED_LIB),y)
 LIB_ONE := lib$(RTE_LIBNAME).so
 else
 LIB_ONE := lib$(RTE_LIBNAME).a
 endif
-endif
 
 ifeq ($(LINK_USING_CC),1)
 # Override the definition of LD here, since we're linking with CC
@@ -74,7 +72,6 @@ O_TO_A_DO = @set -e; \
 # Archive objects to share library
 #
 
-ifeq ($(RTE_BUILD_COMBINE_LIBS),y)
 ifeq ($(RTE_BUILD_SHARED_LIB),y)
 $(LIB_ONE): FORCE
 	@[ -d $(dir $@) ] || mkdir -p $(dir $@)
@@ -84,7 +81,6 @@ $(LIB_ONE): FORCE
 	@[ -d $(dir $@) ] || mkdir -p $(dir $@)
 	$(O_TO_A_DO)
 endif
-endif
 
 #
 # Clean all generated files
diff --git a/mk/rte.vars.mk b/mk/rte.vars.mk
index 1e874ee..5bcc4a5 100644
--- a/mk/rte.vars.mk
+++ b/mk/rte.vars.mk
@@ -67,10 +67,6 @@ ifneq ($(BUILDING_RTE_SDK),)
   ifeq ($(RTE_BUILD_SHARED_LIB),)
     RTE_BUILD_SHARED_LIB := n
   endif
-  RTE_BUILD_COMBINE_LIBS := $(CONFIG_RTE_BUILD_COMBINE_LIBS:"%"=%)
-  ifeq ($(RTE_BUILD_COMBINE_LIBS),)
-    RTE_BUILD_COMBINE_LIBS := n
-  endif
   RTE_LIBNAME := $(CONFIG_RTE_LIBNAME:"%"=%)
   ifeq ($(RTE_LIBNAME),)
     RTE_LIBNAME := intel_dpdk
-- 
1.9.3

^ permalink raw reply	[flat|nested] 50+ messages in thread

* [dpdk-dev] [PATCH v3 4/6] Update library build process
  2014-10-09 13:04   ` [dpdk-dev] [PATCH v3 0/6] Update libs " Sergio Gonzalez Monroy
                       ` (2 preceding siblings ...)
  2014-10-09 13:04     ` [dpdk-dev] [PATCH v3 3/6] Remove CONFIG_RTE_BUILD_COMBINE_LIBS and related Sergio Gonzalez Monroy
@ 2014-10-09 13:04     ` Sergio Gonzalez Monroy
  2014-10-09 13:04     ` [dpdk-dev] [PATCH v3 5/6] Avoid duplicated code Sergio Gonzalez Monroy
                       ` (2 subsequent siblings)
  6 siblings, 0 replies; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-09 13:04 UTC (permalink / raw)
  To: dev

Remove all code related to building a separated static libs, and by default
only build a single/combined library when building static libs.
Build both separated and combined libraries when building shared libs.

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
---
 mk/rte.lib.mk | 39 +++++++++++----------------------------
 1 file changed, 11 insertions(+), 28 deletions(-)

diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
index 53a149d..e7420bf 100644
--- a/mk/rte.lib.mk
+++ b/mk/rte.lib.mk
@@ -66,19 +66,12 @@ LD_MULDEFS := $(call linkerprefix,-z$(comma)muldefs)
 CPU_LDFLAGS := $(call linkerprefix,$(CPU_LDFLAGS))
 endif
 
-O_TO_A = $(AR) crus $(LIB) $(OBJS-y)
-O_TO_A_STR = $(subst ','\'',$(O_TO_A)) #'# fix syntax highlight
-O_TO_A_DISP = $(if $(V),"$(O_TO_A_STR)","  AR $(@)")
-O_TO_A_CMD = "cmd_$@ = $(O_TO_A_STR)"
-O_TO_A_DO = @set -e; \
-	echo $(O_TO_A_DISP); \
-	$(O_TO_A) && \
-	echo $(O_TO_A_CMD) > $(call exe2cmd,$(@))
-
 O_TO_S = $(LD) $(CPU_LDFLAGS) $(LD_MULDEFS) -shared $(OBJS-y) -o $(LIB)
-O_TO_S_STR = $(subst ','\'',$(O_TO_S)) #'# fix syntax highlight
+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)"
 O_TO_S_DO = @set -e; \
+	cp -f $(OBJS-y) $(RTE_OUTPUT)/build/lib; \
 	echo $(O_TO_S_DISP); \
 	$(O_TO_S) && \
 	echo $(O_TO_S_CMD) > $(call exe2cmd,$(@))
@@ -88,8 +81,8 @@ O_TO_S_DO = @set -e; \
 #
 # Archive objects in .a file if needed
 #
-ifeq ($(RTE_BUILD_SHARED_LIB),y)
 $(LIB): $(OBJS-y) $(DEP_$(LIB)) FORCE
+ifeq ($(RTE_BUILD_SHARED_LIB),y)
 	@[ -d $(dir $@) ] || mkdir -p $(dir $@)
 	$(if $(D),\
 		@echo -n "$< -> $@ " ; \
@@ -98,35 +91,25 @@ $(LIB): $(OBJS-y) $(DEP_$(LIB)) FORCE
 		echo -n "depfile_missing=$(call boolean,$(depfile_missing)) " ; \
 		echo "depfile_newer=$(call boolean,$(depfile_newer)) ")
 	$(if $(or \
-		$(file_missing),\
-		$(call cmdline_changed,$(O_TO_S_STR)),\
-		$(depfile_missing),\
-		$(depfile_newer)),\
-		$(O_TO_S_DO))
-else
-$(LIB): $(OBJS-y) $(DEP_$(LIB)) FORCE
-	@[ -d $(dir $@) ] || mkdir -p $(dir $@)
-	$(if $(D),\
-	    @echo -n "$< -> $@ " ; \
-	    echo -n "file_missing=$(call boolean,$(file_missing)) " ; \
-	    echo -n "cmdline_changed=$(call boolean,$(call cmdline_changed,$(O_TO_A_STR))) " ; \
-	    echo -n "depfile_missing=$(call boolean,$(depfile_missing)) " ; \
-	    echo "depfile_newer=$(call boolean,$(depfile_newer)) ")
-	$(if $(or \
 	    $(file_missing),\
-	    $(call cmdline_changed,$(O_TO_A_STR)),\
+	    $(call cmdline_changed,$(O_TO_S_STR)),\
 	    $(depfile_missing),\
 	    $(depfile_newer)),\
-	    $(O_TO_A_DO))
+	    $(O_TO_S_DO))
+else
+	@set -e; \
+	cp -f $(OBJS-y) $(RTE_OUTPUT)/build/lib;
 endif
 
 #
 # install lib in $(RTE_OUTPUT)/lib
 #
 $(RTE_OUTPUT)/lib/$(LIB): $(LIB)
+ifeq ($(RTE_BUILD_SHARED_LIB),y)
 	@echo "  INSTALL-LIB $(LIB)"
 	@[ -d $(RTE_OUTPUT)/lib ] || mkdir -p $(RTE_OUTPUT)/lib
 	$(Q)cp -f $(LIB) $(RTE_OUTPUT)/lib
+endif
 
 #
 # Clean all generated files
-- 
1.9.3

^ permalink raw reply	[flat|nested] 50+ messages in thread

* [dpdk-dev] [PATCH v3 5/6] Avoid duplicated code
  2014-10-09 13:04   ` [dpdk-dev] [PATCH v3 0/6] Update libs " Sergio Gonzalez Monroy
                       ` (3 preceding siblings ...)
  2014-10-09 13:04     ` [dpdk-dev] [PATCH v3 4/6] Update library build process Sergio Gonzalez Monroy
@ 2014-10-09 13:04     ` Sergio Gonzalez Monroy
  2014-10-09 13:04     ` [dpdk-dev] [PATCH v3 6/6] Link apps/DSOs against EXECENV_LDLIBS with --as-needed Sergio Gonzalez Monroy
  2014-10-13 16:01     ` [dpdk-dev] [PATCH v3 0/6] Update libs build process Gonzalez Monroy, Sergio
  6 siblings, 0 replies; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-09 13:04 UTC (permalink / raw)
  To: dev

Rewrite rules to avoid duplicated code.

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
---
 mk/rte.sharelib.mk | 37 +++++++++++++++----------------------
 1 file changed, 15 insertions(+), 22 deletions(-)

diff --git a/mk/rte.sharelib.mk b/mk/rte.sharelib.mk
index b32bd35..8fc6548 100644
--- a/mk/rte.sharelib.mk
+++ b/mk/rte.sharelib.mk
@@ -52,35 +52,28 @@ sharelib: $(LIB_ONE) FORCE
 
 OBJS = $(wildcard $(RTE_OUTPUT)/build/lib/*.o)
 
-O_TO_S = $(LD) $(CPU_LDFLAGS) $(LD_MULDEFS) -shared $(OBJS)\
+ifeq ($(RTE_BUILD_SHARED_LIB),y)
+O_TO_L = $(LD) $(CPU_LDFLAGS) $(LD_MULDEFS) -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)"
-O_TO_S_DO = @set -e; \
-    echo $(O_TO_S_DISP); \
-    $(O_TO_S)
+L_DISP=LD
+else
+O_TO_L = $(AR) crus $(RTE_OUTPUT)/lib/$(LIB_ONE) $(OBJS)
+L_DISP=AR
+endif
+O_TO_L_STR = $(subst ','\'',$(O_TO_L)) #')# fix syntax highlight
+O_TO_L_DISP = $(if $(V),"$(O_TO_L_STR)","  $(L_DISP) $(@)")
+O_TO_L_CMD = "cmd_$@ = $(O_TO_L_STR)"
+O_TO_L_DO = @set -e; \
+	mkdir -p $(RTE_OUTPUT)/lib; \
+	echo $(O_TO_L_DISP); \
+	$(O_TO_L)
 
-O_TO_A =  $(AR) crus $(RTE_OUTPUT)/lib/$(LIB_ONE) $(OBJS)
-O_TO_A_STR = $(subst ','\'',$(O_TO_A)) #'# fix syntax highlight
-O_TO_A_DISP = $(if $(V),"$(O_TO_A_STR)","  LD $(@)")
-O_TO_A_CMD = "cmd_$@ = $(O_TO_A_STR)"
-O_TO_A_DO = @set -e; \
-    echo $(O_TO_A_DISP); \
-    $(O_TO_A)
 #
 # Archive objects to share library
 #
 
-ifeq ($(RTE_BUILD_SHARED_LIB),y)
 $(LIB_ONE): FORCE
-	@[ -d $(dir $@) ] || mkdir -p $(dir $@)
-	$(O_TO_S_DO)
-else
-$(LIB_ONE): FORCE
-	@[ -d $(dir $@) ] || mkdir -p $(dir $@)
-	$(O_TO_A_DO)
-endif
+	$(O_TO_L_DO)
 
 #
 # Clean all generated files
-- 
1.9.3

^ permalink raw reply	[flat|nested] 50+ messages in thread

* [dpdk-dev] [PATCH v3 6/6] Link apps/DSOs against EXECENV_LDLIBS with --as-needed
  2014-10-09 13:04   ` [dpdk-dev] [PATCH v3 0/6] Update libs " Sergio Gonzalez Monroy
                       ` (4 preceding siblings ...)
  2014-10-09 13:04     ` [dpdk-dev] [PATCH v3 5/6] Avoid duplicated code Sergio Gonzalez Monroy
@ 2014-10-09 13:04     ` Sergio Gonzalez Monroy
  2014-10-13 16:01     ` [dpdk-dev] [PATCH v3 0/6] Update libs build process Gonzalez Monroy, Sergio
  6 siblings, 0 replies; 50+ messages in thread
From: Sergio Gonzalez Monroy @ 2014-10-09 13:04 UTC (permalink / raw)
  To: dev

Include external shared libs dependencies when building shared
libraries.

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
---
 mk/rte.app.mk      | 4 ++--
 mk/rte.lib.mk      | 8 +++++++-
 mk/rte.sharelib.mk | 7 ++++++-
 3 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/mk/rte.app.mk b/mk/rte.app.mk
index 5e00e67..e775ad7 100644
--- a/mk/rte.app.mk
+++ b/mk/rte.app.mk
@@ -62,9 +62,9 @@ ifeq ($(NO_AUTOLIBS),)
 LDLIBS += --whole-archive
 LDLIBS += -l$(RTE_LIBNAME)
 LDLIBS += --no-whole-archive
-LDLIBS += --start-group
+LDLIBS += --as-needed
 LDLIBS += $(EXECENV_LDLIBS)
-LDLIBS += --end-group
+LDLIBS += --no-as-needed
 
 endif # ifeq ($(NO_AUTOLIBS),)
 
diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
index e7420bf..947e17d 100644
--- a/mk/rte.lib.mk
+++ b/mk/rte.lib.mk
@@ -59,14 +59,20 @@ build: _postbuild
 
 exe2cmd = $(strip $(call dotfile,$(patsubst %,%.cmd,$(1))))
 
+O_TO_S_LDLIBS := --as-needed
+O_TO_S_LDLIBS += $(EXECENV_LDLIBS)
+O_TO_S_LDLIBS += --no-as-needed
+
 ifeq ($(LINK_USING_CC),1)
 # Override the definition of LD here, since we're linking with CC
 LD := $(CC)
 LD_MULDEFS := $(call linkerprefix,-z$(comma)muldefs)
 CPU_LDFLAGS := $(call linkerprefix,$(CPU_LDFLAGS))
+O_TO_S_LDLIBS := $(call linkerprefix,$(O_TO_S_LDLIBS))
 endif
 
-O_TO_S = $(LD) $(CPU_LDFLAGS) $(LD_MULDEFS) -shared $(OBJS-y) -o $(LIB)
+O_TO_S = $(LD) $(CPU_LDFLAGS) $(LD_MULDEFS) -shared $(OBJS-y) \
+	$(O_TO_S_LDLIBS) -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_CMD = "cmd_$@ = $(O_TO_S_STR)"
diff --git a/mk/rte.sharelib.mk b/mk/rte.sharelib.mk
index 8fc6548..380aa7d 100644
--- a/mk/rte.sharelib.mk
+++ b/mk/rte.sharelib.mk
@@ -40,11 +40,16 @@ else
 LIB_ONE := lib$(RTE_LIBNAME).a
 endif
 
+O_TO_L_LDLIBS := --as-needed
+O_TO_L_LDLIBS += $(EXECENV_LDLIBS)
+O_TO_L_LDLIBS += --no-as-needed
+
 ifeq ($(LINK_USING_CC),1)
 # Override the definition of LD here, since we're linking with CC
 LD := $(CC)
 LD_MULDEFS := $(call linkerprefix,-z$(comma)muldefs)
 CPU_LDFLAGS := $(call linkerprefix,$(CPU_LDFLAGS))
+O_TO_L_LDLIBS := $(call linkerprefix,$(O_TO_L_LDLIBS))
 endif
 
 .PHONY:sharelib
@@ -54,7 +59,7 @@ OBJS = $(wildcard $(RTE_OUTPUT)/build/lib/*.o)
 
 ifeq ($(RTE_BUILD_SHARED_LIB),y)
 O_TO_L = $(LD) $(CPU_LDFLAGS) $(LD_MULDEFS) -shared $(OBJS)\
-	-o $(RTE_OUTPUT)/lib/$(LIB_ONE)
+	$(O_TO_L_LDLIBS) -o $(RTE_OUTPUT)/lib/$(LIB_ONE)
 L_DISP=LD
 else
 O_TO_L = $(AR) crus $(RTE_OUTPUT)/lib/$(LIB_ONE) $(OBJS)
-- 
1.9.3

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH v3 0/6] Update libs build process
  2014-10-09 13:04   ` [dpdk-dev] [PATCH v3 0/6] Update libs " Sergio Gonzalez Monroy
                       ` (5 preceding siblings ...)
  2014-10-09 13:04     ` [dpdk-dev] [PATCH v3 6/6] Link apps/DSOs against EXECENV_LDLIBS with --as-needed Sergio Gonzalez Monroy
@ 2014-10-13 16:01     ` Gonzalez Monroy, Sergio
  2014-10-21  9:43       ` Gonzalez Monroy, Sergio
  6 siblings, 1 reply; 50+ messages in thread
From: Gonzalez Monroy, Sergio @ 2014-10-13 16:01 UTC (permalink / raw)
  To: dev

Are there any more comments on this patch set?

Thanks,
Sergio


> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Sergio Gonzalez
> Monroy
> Sent: Thursday, October 9, 2014 2:05 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH v3 0/6] Update libs build process
> 
> As per the proposal, this patch set does:
>  - Remove CONFIG_RTE_BUILD_COMBINE_LIBS as a configuration option.
>  - For static library, build a single/combined library.
>  - For shared libraries, build both individual/separated and single/combined
>    libraries.
>  - Link apps only against single/combined libs.
>  - Include external shared libs dependencies when building shared libraries.
> 
> v3:
>  - Split some of the patches for easier review
>  - Improve patches descriptions
> 
> Sergio Gonzalez Monroy (6):
>   Link combined shared library using CC
>   Link apps only against single/combined library
>   Remove CONFIG_RTE_BUILD_COMBINE_LIBS and related
>   Update library build process
>   Avoid duplicated code
>   Link apps/DSOs against EXECENV_LDLIBS with --as-needed
> 
>  config/common_bsdapp   |   3 +-
>  config/common_linuxapp |   3 +-
>  mk/rte.app.mk          | 164 ++-----------------------------------------------
>  mk/rte.lib.mk          |  81 ++++++------------------
>  mk/rte.sdkbuild.mk     |   2 +-
>  mk/rte.sharelib.mk     |  54 ++++++++--------
>  mk/rte.vars.mk         |   4 --
>  7 files changed, 54 insertions(+), 257 deletions(-)
> 
> --
> 1.9.3

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH v3 0/6] Update libs build process
  2014-10-13 16:01     ` [dpdk-dev] [PATCH v3 0/6] Update libs build process Gonzalez Monroy, Sergio
@ 2014-10-21  9:43       ` Gonzalez Monroy, Sergio
  2014-10-22 16:14         ` Gonzalez Monroy, Sergio
  0 siblings, 1 reply; 50+ messages in thread
From: Gonzalez Monroy, Sergio @ 2014-10-21  9:43 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev

Hi Thomas,

Given that most of the comments/discussion for this patch set revolved 
around the removal of COMBINE_LIBS and what libs to build by default, 
I am inclined to drop this patch set, submit minimal patch to fix 
compiler errors (initial and main purpose of this patch set) and then 
submit an RFC regarding the use/removal of COMBINE_LIBS and other outstanding issues in the build system.

Does that sound like a better approach?

Thanks,
Sergio

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Gonzalez Monroy,
> Sergio
> Sent: Monday, October 13, 2014 5:02 PM
> To: dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v3 0/6] Update libs build process
> 
> Are there any more comments on this patch set?
> 
> Thanks,
> Sergio
> 
> 
> > -----Original Message-----
> > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Sergio Gonzalez
> > Monroy
> > Sent: Thursday, October 9, 2014 2:05 PM
> > To: dev@dpdk.org
> > Subject: [dpdk-dev] [PATCH v3 0/6] Update libs build process
> >
> > As per the proposal, this patch set does:
> >  - Remove CONFIG_RTE_BUILD_COMBINE_LIBS as a configuration option.
> >  - For static library, build a single/combined library.
> >  - For shared libraries, build both individual/separated and single/combined
> >    libraries.
> >  - Link apps only against single/combined libs.
> >  - Include external shared libs dependencies when building shared libraries.
> >
> > v3:
> >  - Split some of the patches for easier review
> >  - Improve patches descriptions
> >
> > Sergio Gonzalez Monroy (6):
> >   Link combined shared library using CC
> >   Link apps only against single/combined library
> >   Remove CONFIG_RTE_BUILD_COMBINE_LIBS and related
> >   Update library build process
> >   Avoid duplicated code
> >   Link apps/DSOs against EXECENV_LDLIBS with --as-needed
> >
> >  config/common_bsdapp   |   3 +-
> >  config/common_linuxapp |   3 +-
> >  mk/rte.app.mk          | 164 ++-----------------------------------------------
> >  mk/rte.lib.mk          |  81 ++++++------------------
> >  mk/rte.sdkbuild.mk     |   2 +-
> >  mk/rte.sharelib.mk     |  54 ++++++++--------
> >  mk/rte.vars.mk         |   4 --
> >  7 files changed, 54 insertions(+), 257 deletions(-)
> >
> > --
> > 1.9.3

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [dpdk-dev] [PATCH v3 0/6] Update libs build process
  2014-10-21  9:43       ` Gonzalez Monroy, Sergio
@ 2014-10-22 16:14         ` Gonzalez Monroy, Sergio
  0 siblings, 0 replies; 50+ messages in thread
From: Gonzalez Monroy, Sergio @ 2014-10-22 16:14 UTC (permalink / raw)
  To: Gonzalez Monroy, Sergio, Thomas Monjalon; +Cc: dev

Dropping patch set.

Thanks,
Sergio

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Gonzalez Monroy,
> Sergio
> Sent: Tuesday, October 21, 2014 10:44 AM
> To: Thomas Monjalon
> Cc: dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v3 0/6] Update libs build process
> 
> Hi Thomas,
> 
> Given that most of the comments/discussion for this patch set revolved
> around the removal of COMBINE_LIBS and what libs to build by default, I am
> inclined to drop this patch set, submit minimal patch to fix compiler errors
> (initial and main purpose of this patch set) and then submit an RFC regarding
> the use/removal of COMBINE_LIBS and other outstanding issues in the build
> system.
> 
> Does that sound like a better approach?
> 
> Thanks,
> Sergio
> 

^ permalink raw reply	[flat|nested] 50+ messages in thread

end of thread, other threads:[~2014-10-22 16:18 UTC | newest]

Thread overview: 50+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-10-02 15:56 [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y Sergio Gonzalez Monroy
2014-10-02 15:56 ` [dpdk-dev] [PATCH 1/4] Link combined shared library using CC Sergio Gonzalez Monroy
2014-10-02 15:56 ` [dpdk-dev] [PATCH 2/4] Do not generate individual libs when configured with RTE_BUILD_COMBINE_LIBS=y Sergio Gonzalez Monroy
2014-10-02 20:00   ` Matthew Hall
2014-10-02 15:56 ` [dpdk-dev] [PATCH 3/4] Link apps only against combined lib or individual libs, not both Sergio Gonzalez Monroy
2014-10-02 15:56 ` [dpdk-dev] [PATCH 4/4] Cleanup Sergio Gonzalez Monroy
2014-10-02 17:26 ` [dpdk-dev] [PATCH 0/4] Fix build issues with CONFIG_RTE_BUILD_COMBINE_LIBS=y Neil Horman
2014-10-02 20:04   ` Matthew Hall
2014-10-02 20:24     ` Neil Horman
2014-10-02 21:10       ` Matthew Hall
2014-10-03  0:52         ` Neil Horman
2014-10-03 10:31       ` Sergio Gonzalez Monroy
2014-10-03 11:28         ` Neil Horman
2014-10-03 23:52           ` Stephen Hemminger
2014-10-04  2:30             ` Neil Horman
2014-10-03  7:15     ` Thomas Monjalon
2014-10-03  8:10       ` Sergio Gonzalez Monroy
2014-10-03  8:27         ` Thomas Monjalon
2014-10-03 11:32           ` Neil Horman
2014-10-03 18:17             ` Matthew Hall
2014-10-03 19:15               ` Neil Horman
2014-10-03 21:21                 ` Matthew Hall
2014-10-06 14:45                   ` Neil Horman
2014-10-03 18:13           ` Matthew Hall
2014-10-03 18:00       ` Matthew Hall
2014-10-06 10:52 ` [dpdk-dev] [PATCH v2 0/4] Update build process Sergio Gonzalez Monroy
2014-10-06 10:52   ` [dpdk-dev] [PATCH v2 1/4] Link combined shared library using CC Sergio Gonzalez Monroy
2014-10-06 10:52   ` [dpdk-dev] [PATCH v2 2/4] Link apps only against single/combined library Sergio Gonzalez Monroy
2014-10-06 10:52   ` [dpdk-dev] [PATCH v2 3/4] Update library build process Sergio Gonzalez Monroy
2014-10-06 20:46     ` Matthew Hall
2014-10-07  9:55       ` Sergio Gonzalez Monroy
2014-10-08 22:36         ` Matthew Hall
2014-10-09  9:44           ` Sergio Gonzalez Monroy
2014-10-08 15:38     ` Thomas Monjalon
2014-10-06 10:52   ` [dpdk-dev] [PATCH v2 4/4] Link apps/DSOs against EXECENV_LDLIBS with --as-needed Sergio Gonzalez Monroy
2014-10-08 15:38     ` Thomas Monjalon
2014-10-09  9:23       ` Sergio Gonzalez Monroy
2014-10-06 14:49   ` [dpdk-dev] [PATCH v2 0/4] Update build process Neil Horman
2014-10-06 15:01     ` Sergio Gonzalez Monroy
2014-10-06 16:05       ` Neil Horman
2014-10-09 13:04   ` [dpdk-dev] [PATCH v3 0/6] Update libs " Sergio Gonzalez Monroy
2014-10-09 13:04     ` [dpdk-dev] [PATCH v3 1/6] Link combined shared library using CC Sergio Gonzalez Monroy
2014-10-09 13:04     ` [dpdk-dev] [PATCH v3 2/6] Link apps only against single/combined library Sergio Gonzalez Monroy
2014-10-09 13:04     ` [dpdk-dev] [PATCH v3 3/6] Remove CONFIG_RTE_BUILD_COMBINE_LIBS and related Sergio Gonzalez Monroy
2014-10-09 13:04     ` [dpdk-dev] [PATCH v3 4/6] Update library build process Sergio Gonzalez Monroy
2014-10-09 13:04     ` [dpdk-dev] [PATCH v3 5/6] Avoid duplicated code Sergio Gonzalez Monroy
2014-10-09 13:04     ` [dpdk-dev] [PATCH v3 6/6] Link apps/DSOs against EXECENV_LDLIBS with --as-needed Sergio Gonzalez Monroy
2014-10-13 16:01     ` [dpdk-dev] [PATCH v3 0/6] Update libs build process Gonzalez Monroy, Sergio
2014-10-21  9:43       ` Gonzalez Monroy, Sergio
2014-10-22 16:14         ` Gonzalez Monroy, Sergio

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git