All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Gonzalez Monroy, Sergio" <sergio.gonzalez.monroy-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
To: Neil Horman <nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
Cc: "dev-VfR2kkLFssw@public.gmane.org" <dev-VfR2kkLFssw@public.gmane.org>
Subject: Re: [PATCH 0/8] Improve build process
Date: Thu, 29 Jan 2015 17:04:20 +0000	[thread overview]
Message-ID: <91383E96CE459D47BCE92EFBF5CE73B004F43D9B@IRSMSX108.ger.corp.intel.com> (raw)
In-Reply-To: <20150129163859.GE1999-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>

> From: Neil Horman [mailto:nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org]
> Sent: Thursday, January 29, 2015 4:39 PM
> To: Gonzalez Monroy, Sergio
> Cc: dev-VfR2kkLFssw@public.gmane.org
> Subject: Re: [dpdk-dev] [PATCH 0/8] Improve build process
> 
> On Thu, Jan 29, 2015 at 03:20:03PM +0000, Sergio Gonzalez Monroy wrote:
> > This patch series improves the DPDK build system mostly for shared
> > libraries (and a few nits for static libraries) with the following goals:
> >  - Create a library containing core DPDK libraries (librte_eal,
> >    librte_malloc, librte_mempool, librte_mbuf and librte_ring).
> >    The idea of core libraries is to group those libraries that are
> >    always required (and have interdependencies) for any DPDK application.
> >  - Remove config option to build a combined library.
> >  - For shared libraries, explicitly link against dependant
> >    libraries (adding entries to DT_NEEDED).
> >  - Update app linking flags for static/shared DPDK libs.
> >
> > Sergio Gonzalez Monroy (8):
> >   mk: remove combined library and related options
> >   core: create new librte_core
> >   mk: new corelib makefile
> >   lib: update DEPDIRS variable
> >   lib: set LDLIBS for each library
> >   mk: use LDLIBS when linking shared libraries
> >   mk: update LDLIBS for app building
> >   mk: add -lpthread to linuxapp EXECENV_LDLIBS
> >
> >  config/common_bsdapp                        |   6 --
> >  config/common_linuxapp                      |   6 --
> >  config/defconfig_ppc_64-power8-linuxapp-gcc |   2 -
> >  lib/Makefile                                |   1 -
> >  lib/librte_acl/Makefile                     |   5 +-
> >  lib/librte_cfgfile/Makefile                 |   4 +-
> >  lib/librte_cmdline/Makefile                 |   6 +-
> >  lib/librte_core/Makefile                    |  45 +++++++++++++
> >  lib/librte_distributor/Makefile             |   5 +-
> >  lib/librte_eal/bsdapp/eal/Makefile          |   3 +-
> >  lib/librte_eal/linuxapp/eal/Makefile        |   3 +-
> >  lib/librte_ether/Makefile                   |   4 +-
> >  lib/librte_hash/Makefile                    |   4 +-
> >  lib/librte_ip_frag/Makefile                 |   6 +-
> >  lib/librte_ivshmem/Makefile                 |   4 +-
> >  lib/librte_kni/Makefile                     |   6 +-
> >  lib/librte_kvargs/Makefile                  |   6 +-
> >  lib/librte_lpm/Makefile                     |   6 +-
> >  lib/librte_malloc/Makefile                  |   2 +-
> >  lib/librte_mbuf/Makefile                    |   2 +-
> >  lib/librte_mempool/Makefile                 |   2 +-
> >  lib/librte_meter/Makefile                   |   4 +-
> >  lib/librte_pipeline/Makefile                |   3 +
> >  lib/librte_pmd_af_packet/Makefile           |   5 +-
> >  lib/librte_pmd_bond/Makefile                |   7 +-
> >  lib/librte_pmd_e1000/Makefile               |   8 ++-
> >  lib/librte_pmd_enic/Makefile                |   8 ++-
> >  lib/librte_pmd_i40e/Makefile                |   8 ++-
> >  lib/librte_pmd_ixgbe/Makefile               |   8 ++-
> >  lib/librte_pmd_pcap/Makefile                |   5 +-
> >  lib/librte_pmd_ring/Makefile                |   6 +-
> >  lib/librte_pmd_virtio/Makefile              |   7 +-
> >  lib/librte_pmd_vmxnet3/Makefile             |   8 ++-
> >  lib/librte_pmd_xenvirt/Makefile             |   8 ++-
> >  lib/librte_port/Makefile                    |   8 +--
> >  lib/librte_power/Makefile                   |   4 +-
> >  lib/librte_ring/Makefile                    |   2 +-
> >  lib/librte_sched/Makefile                   |   7 +-
> >  lib/librte_table/Makefile                   |   8 +--
> >  lib/librte_timer/Makefile                   |   6 +-
> >  lib/librte_vhost/Makefile                   |   9 +--
> >  mk/exec-env/linuxapp/rte.vars.mk            |   2 +
> >  mk/rte.app.mk                               |  53 ++++-----------
> >  mk/rte.corelib.mk                           |  84 +++++++++++++++++++++++
> >  mk/rte.lib.mk                               |  49 +++-----------
> >  mk/rte.sdkbuild.mk                          |   3 -
> >  mk/rte.sharelib.mk                          | 101 ----------------------------
> >  mk/rte.vars.mk                              |   9 ---
> >  48 files changed, 276 insertions(+), 282 deletions(-)  create mode
> > 100644 lib/librte_core/Makefile  create mode 100644 mk/rte.corelib.mk
> > delete mode 100644 mk/rte.sharelib.mk
> >
> > --
> > 1.9.3
> >
> >
> Something occured to me thinking about this patch set.  I noticed recently
> that different rules are used to build the shared combined lib from the
> individual shared objects.  The implication here is that linker options specified
> in individual make files (like the LIBABIVER and EXPORT_MAP options in my
> ABI versioning script) get ignored, which is bad.  Any other file specific linker
> options (like <file>_LDFLAGS specified in individual library makefiles are
> getting dropped for the combined lib.
> 
> It seems like it would be better if the combined libs were manufactured as
> linker scripts themselves (textfiles that used linker directives to include
> individual libraries under the covers (see /lib64/libc.so for an example).
> 
> The disadvantage of such an approach are fairly minimal.  With such a
> combined library, you still need to install individual libraries, but for
> applications that wish to link and run against a single dpdk library will still work
> just as they currently do, you can link to just a single library.
> 
> The advantage is clear however.  By following a linker script aproach, objects
> build as separate libraries are built exactly the same way, using the same
> rules with the same options.  It reduces the dpdk build environment size and
> complexity, and reduces the opportunity for bugs to creep in from forgetting
> to add build options to multiple locations.  It also provides a more granular
> approach for grouping files.  Creating a dpdk core library becomes a matter of
> creating a one line linker script named libdpdk_core.so, rather than re-
> arraning sections of the build system.
> 
> Thoughts?
> Neil
> 
Hi  Neil,

I think that is a very interesting approach.
I have tried to do something similar in this patch by removing rte.sharelib.mk and
just having rte.lib.mk to do the linking, leaving as you suggest a single file to
modify anything related to building libs.

I do think however that your proposal is an improvement over the current patch.

So basically we want:
- get rid of rte.corelib.mk
- generate librte_core.so linker script grouping core libs
- we do not modify DEPDIR variables
- when setting LDLIBS to each lib, we do specify -lrte_core, right?

Regards,
Sergio

  parent reply	other threads:[~2015-01-29 17:04 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-29 15:20 [PATCH 0/8] Improve build process Sergio Gonzalez Monroy
     [not found] ` <1422544811-26385-1-git-send-email-sergio.gonzalez.monroy-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-01-29 15:20   ` [PATCH 1/8] mk: remove combined library and related options Sergio Gonzalez Monroy
2015-01-29 15:20   ` [PATCH 2/8] core: create new librte_core Sergio Gonzalez Monroy
2015-01-29 15:20   ` [PATCH 3/8] mk: new corelib makefile Sergio Gonzalez Monroy
2015-01-29 15:20   ` [PATCH 4/8] lib: update DEPDIRS variable Sergio Gonzalez Monroy
2015-01-29 15:20   ` [PATCH 5/8] lib: set LDLIBS for each library Sergio Gonzalez Monroy
2015-01-29 15:20   ` [PATCH 6/8] mk: use LDLIBS when linking shared libraries Sergio Gonzalez Monroy
2015-01-29 15:20   ` [PATCH 7/8] mk: update LDLIBS for app building Sergio Gonzalez Monroy
2015-01-29 15:20   ` [PATCH 8/8] mk: add -lpthread to linuxapp EXECENV_LDLIBS Sergio Gonzalez Monroy
2015-01-29 16:38   ` [PATCH 0/8] Improve build process Neil Horman
     [not found]     ` <20150129163859.GE1999-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2015-01-29 17:02       ` Thomas Monjalon
2015-01-29 17:04       ` Gonzalez Monroy, Sergio [this message]
     [not found]         ` <91383E96CE459D47BCE92EFBF5CE73B004F43D9B-kPTMFJFq+rEMvF1YICWikbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-01-29 19:45           ` Neil Horman
     [not found]             ` <20150129194539.GG1999-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2015-01-30 13:39               ` Gonzalez Monroy, Sergio
     [not found]                 ` <91383E96CE459D47BCE92EFBF5CE73B004F453D7-kPTMFJFq+rEMvF1YICWikbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-01-30 14:05                   ` Neil Horman
     [not found]                     ` <20150130140507.GA2664-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2015-01-30 17:38                       ` Gonzalez Monroy, Sergio
     [not found]                         ` <91383E96CE459D47BCE92EFBF5CE73B004F45534-kPTMFJFq+rEMvF1YICWikbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-01-30 18:12                           ` Neil Horman
     [not found]                             ` <20150130181249.GC2664-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2015-02-11 11:11                               ` Gonzalez Monroy, Sergio
     [not found]                                 ` <91383E96CE459D47BCE92EFBF5CE73B004F4AB9B-kPTMFJFq+rEMvF1YICWikbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-02-12  5:41                                   ` Neil Horman
     [not found]                                     ` <20150212054105.GC5504-0o1r3XBGOEbbgkc5XkKeNuvMHUBZFtU3YPYVAmT7z5s@public.gmane.org>
2015-02-12  9:17                                       ` Gonzalez Monroy, Sergio
     [not found]                                         ` <54DC6FB3.8020608-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-02-12 12:16                                           ` Neil Horman
2015-02-12  9:22                                   ` Panu Matilainen
     [not found]                                     ` <54DC70F3.4020902-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-02-12 10:03                                       ` Gonzalez Monroy, Sergio
     [not found]                                         ` <54DC7A87.1090208-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-02-12 12:23                                           ` Neil Horman
     [not found]                                             ` <20150212122354.GB8729-0o1r3XBGOEbbgkc5XkKeNuvMHUBZFtU3YPYVAmT7z5s@public.gmane.org>
2015-02-12 14:07                                               ` Panu Matilainen
     [not found]                                                 ` <54DCB3B6.1010204-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-02-12 15:52                                                   ` Neil Horman
     [not found]                                                     ` <20150212155225.GB4634-0o1r3XBGOEbbgkc5XkKeNuvMHUBZFtU3YPYVAmT7z5s@public.gmane.org>
2015-02-13 10:14                                                       ` Panu Matilainen
     [not found]                                                         ` <54DDCE68.7090400-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-02-13 11:08                                                           ` Gonzalez Monroy, Sergio
     [not found]                                                             ` <54DDDB12.3090100-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-02-13 12:51                                                               ` Neil Horman
     [not found]                                                                 ` <20150213125142.GA11979-0o1r3XBGOEbbgkc5XkKeNuvMHUBZFtU3YPYVAmT7z5s@public.gmane.org>
2015-02-20 14:31                                                                   ` Gonzalez Monroy, Sergio
     [not found]                                                                     ` <54E74548.7010805-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-02-22 23:37                                                                       ` Neil Horman
     [not found]                                                                         ` <20150222233740.GB31293-0o1r3XBGOEbbgkc5XkKeNuvMHUBZFtU3YPYVAmT7z5s@public.gmane.org>
2015-02-23 10:25                                                                           ` Gonzalez Monroy, Sergio
     [not found]                                                                             ` <54EAFFFD.5000200-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-02-23 13:52                                                                               ` Neil Horman
     [not found]                                                                                 ` <20150223135205.GA19230-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2015-02-23 14:58                                                                                   ` Gonzalez Monroy, Sergio
     [not found]                                                                                     ` <54EB4016.1040204-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-02-23 18:23                                                                                       ` Neil Horman
     [not found]                                                                                         ` <20150223182319.GC19230-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2015-02-24 13:24                                                                                           ` Gonzalez Monroy, Sergio
2015-03-12 16:27   ` [PATCH v2 0/4] " Sergio Gonzalez Monroy
     [not found]     ` <1426177681-16931-1-git-send-email-sergio.gonzalez.monroy-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-03-12 16:27       ` [PATCH v2 1/4] mk: Remove combined library and related options Sergio Gonzalez Monroy
     [not found]         ` <1426177681-16931-2-git-send-email-sergio.gonzalez.monroy-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-03-13 10:49           ` Kavanagh, Mark B
     [not found]             ` <DC5AD7FA266D86499789B1BCAEC715F846D52C87-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-13 11:19               ` Gonzalez Monroy, Sergio
     [not found]                 ` <5502C7D9.2060503-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-03-13 11:34                   ` Kavanagh, Mark B
     [not found]                     ` <DC5AD7FA266D86499789B1BCAEC715F846D52D13-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-13 11:48                       ` Gonzalez Monroy, Sergio
     [not found]                         ` <5502CEAB.8060801-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-03-13 13:16                           ` Kavanagh, Mark B
     [not found]                             ` <DC5AD7FA266D86499789B1BCAEC715F846D52DDA-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-13 14:11                               ` Gonzalez Monroy, Sergio
2015-03-13 13:17                           ` Neil Horman
     [not found]                             ` <20150313131719.GA28191-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2015-03-13 14:12                               ` Stefan Puiu
     [not found]                                 ` <CACKs7VAOZ-e6=jC_kUJC0eO5wfj5r3uaPOR3QGyHpzxC_vLttA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-03-13 15:18                                   ` Neil Horman
     [not found]                                     ` <20150313151855.GG28191-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2015-03-13 15:28                                       ` Gonzalez Monroy, Sergio
     [not found]                                         ` <55030200.4070505-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-03-13 16:16                                           ` Neil Horman
2015-03-13 16:07           ` Stephen Hemminger
2015-03-13 16:32             ` Neil Horman
2015-03-13 16:38             ` Gonzalez Monroy, Sergio
2015-03-18 12:11           ` Gonzalez Monroy, Sergio
     [not found]             ` <55096B86.7040303-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-03-18 12:59               ` Thomas Monjalon
2015-03-18 15:30                 ` Stefan Puiu
     [not found]                   ` <CACKs7VBNmmdPoBcv-vPpn-HVQr2Nd2Gr_2shTuqdh2L1MsfY_Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-03-18 15:52                     ` Gonzalez Monroy, Sergio
2015-03-18 16:48                     ` Neil Horman
2015-03-26  8:52                 ` Gonzalez Monroy, Sergio
     [not found]                   ` <5513C8CD.80408-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-03-26 10:30                     ` Neil Horman
2015-03-18 16:41               ` Neil Horman
2015-03-12 16:27       ` [PATCH v2 2/4] lib: Set LDLIBS for each library Sergio Gonzalez Monroy
2015-03-12 16:28       ` [PATCH v2 3/4] mk: Use LDLIBS when linking shared libraries Sergio Gonzalez Monroy
2015-03-12 16:28       ` [PATCH v2 4/4] mk: update LDLIBS for app building Sergio Gonzalez Monroy

Reply instructions:

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

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

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

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

  git send-email \
    --in-reply-to=91383E96CE459D47BCE92EFBF5CE73B004F43D9B@IRSMSX108.ger.corp.intel.com \
    --to=sergio.gonzalez.monroy-ral2jqcrhueavxtiumwx3w@public.gmane.org \
    --cc=dev-VfR2kkLFssw@public.gmane.org \
    --cc=nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org \
    /path/to/YOUR_REPLY

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

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.