From: Christian Ehrhardt <christian.ehrhardt@canonical.com>
To: Panu Matilainen <pmatilai@redhat.com>
Cc: dev <dev@dpdk.org>, Thomas Monjalon <thomas.monjalon@6wind.com>,
Ferruh Yigit <ferruh.yigit@intel.com>
Subject: Re: [dpdk-dev] [PATCH] mk: generate internal library dependencies from DEPDIRS-y automatically
Date: Tue, 7 Jun 2016 14:36:26 +0200 [thread overview]
Message-ID: <CAATJJ0L9QEiQQqD9KBgKYTr9ki_T+WDy2257nWUkOGpHxwfbpQ@mail.gmail.com> (raw)
In-Reply-To: <62da0f5f31b2ab9db2dcc16acd2f8425a575a26f.1465293714.git.pmatilai@redhat.com>
Hi Panu,
thanks for refreshing that - I'm much more happy with ldd output of most
libraries now after build with that.
And it comes much slimmer than my initial approach that touched all lib
makefiles.
Acked-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
FYI - for anyone else also trying this in a backported way to 16.04 it
needs c6417ce6 and aace9d0b as prereq.
This being done is a nice step taken towards saner linking.
But I still struggle to see how to fix the circular dependency between
librte_eal and librte_mempool.
Maybe now is a time to look at this part of the original threads again to
eventually get apps less overlinked?
=> http://www.dpdk.org/ml/archives/dev/2016-May/039441.html
My naive suggestions in generalized form can be found there (no answer yet):
=>
http://stackoverflow.com/questions/37351699/how-to-create-both-so-files-for-two-circular-depending-libraries
Kind Regards,
Christian
Christian Ehrhardt
Software Engineer, Ubuntu Server
Canonical Ltd
On Tue, Jun 7, 2016 at 12:01 PM, Panu Matilainen <pmatilai@redhat.com>
wrote:
> Up to now dependencies between DPDK internal libraries have been
> untracked at shared library level, requiring applications to know
> about library internal dependencies and often consequently overlinking.
>
> Since the dependencies are already recorded for build ordering in the
> makefiles, we can use that information to generate LDLIBS entries for
> internal libraries automatically.
>
> Also revert commit 8180554d82b3 ("vhost: fix linkage of driver with
> library") which is made redundant by this change.
>
> Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
> ---
> drivers/net/vhost/Makefile | 1 -
> mk/rte.lib.mk | 7 +++++++
> 2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/vhost/Makefile b/drivers/net/vhost/Makefile
> index 30b91a0..f49a69b 100644
> --- a/drivers/net/vhost/Makefile
> +++ b/drivers/net/vhost/Makefile
> @@ -38,7 +38,6 @@ LIB = librte_pmd_vhost.a
>
> CFLAGS += -O3
> CFLAGS += $(WERROR_FLAGS)
> -LDLIBS += -lrte_vhost
>
> EXPORT_MAP := rte_pmd_vhost_version.map
>
> diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
> index b420280..1ff403f 100644
> --- a/mk/rte.lib.mk
> +++ b/mk/rte.lib.mk
> @@ -77,6 +77,13 @@ else
> _CPU_LDFLAGS := $(CPU_LDFLAGS)
> endif
>
> +# Translate DEPDIRS-y into LDLIBS
> +# Ignore (sub)directory dependencies which do not provide an actual
> library
> +_IGNORE_DIRS = lib/librte_eal/% lib/librte_net lib/librte_compat
> +_DEPDIRS = $(filter-out $(_IGNORE_DIRS),$(DEPDIRS-y))
> +_LDDIRS = $(subst librte_ether,libethdev,$(_DEPDIRS))
> +LDLIBS += $(subst lib/lib,-l,$(_LDDIRS))
> +
> O_TO_A = $(AR) crDs $(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 $(@)")
> --
> 2.5.5
>
>
next prev parent reply other threads:[~2016-06-07 12:36 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-07 10:01 Panu Matilainen
2016-06-07 12:36 ` Christian Ehrhardt [this message]
2016-06-07 13:00 ` Thomas Monjalon
2016-06-07 14:07 ` Bruce Richardson
2016-06-07 14:19 ` Thomas Monjalon
2016-06-07 14:37 ` Bruce Richardson
2016-06-07 14:40 ` Wiles, Keith
2016-06-08 12:34 ` Olivier Matz
2016-06-08 13:38 ` Thomas Monjalon
2016-06-09 9:40 ` Thomas Monjalon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAATJJ0L9QEiQQqD9KBgKYTr9ki_T+WDy2257nWUkOGpHxwfbpQ@mail.gmail.com \
--to=christian.ehrhardt@canonical.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.com \
--cc=pmatilai@redhat.com \
--cc=thomas.monjalon@6wind.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).