All of lore.kernel.org
 help / color / mirror / Atom feed
From: Olivier Matz <olivier.matz@6wind.com>
To: Ferruh Yigit <ferruh.yigit@intel.com>
Cc: dev@dpdk.org, thomas.monjalon@6wind.com, robin.jarry@6wind.com,
	jerin.jacob@caviumnetworks.com, keith.wiles@intel.com
Subject: Re: [PATCH v2] mk: optimize directory dependencies
Date: Thu, 30 Mar 2017 14:11:20 +0200	[thread overview]
Message-ID: <20170330141120.2dbefae4@platinum> (raw)
In-Reply-To: <b0468d8f-600f-fd55-bef3-3ca26dff68ce@intel.com>

On Thu, 30 Mar 2017 10:27:49 +0100, Ferruh Yigit <ferruh.yigit@intel.com> wrote:
> On 3/30/2017 9:51 AM, Olivier Matz wrote:
> > Hi Ferruh,
> > 
> > On Tue, 28 Mar 2017 11:34:35 +0100, Ferruh Yigit <ferruh.yigit@intel.com> wrote:  
> >> On 3/24/2017 1:21 PM, Olivier Matz wrote:  
> >>> Before this patch, the management of dependencies between directories
> >>> had several issues:
> >>>
> >>> - the generation of .depdirs, done at configuration is slow: it can take
> >>>   more than one minute on some slow targets (usually ~10s on a standard
> >>>   PC without -j).
> >>>
> >>> - for instance, it is possible to express a dependency like:
> >>>   - app/foo depends on lib/librte_foo
> >>>   - and lib/librte_foo depends on app/bar
> >>>   But this won't work because the directories are traversed with a
> >>>   depth-first algorithm, so we have to choose between doing 'app' before
> >>>   or after 'lib'.
> >>>
> >>> - the script depdirs-rule.sh is too complex.
> >>>
> >>> - we cannot use "make -d" for debug, because the output of make is used for
> >>>   the generation of .depdirs.
> >>>
> >>> This patch moves the DEPDIRS-* variables in the upper Makefile, making
> >>> the dependencies much easier to calculate. A DEPDIRS variable is still
> >>> used to process library dependencies in LDLIBS.
> >>>
> >>> After this commit, "make config" is almost immediate.
> >>>
> >>> Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
> >>> Tested-by: Robin Jarry <robin.jarry@6wind.com>
> >>> Tested-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>    
> >>
> >> <...>
> >>  
> >>>  DIRS-$(CONFIG_RTE_LIBRTE_PORT) += librte_port
> >>> +DEPDIRS-librte_port := librte_eal librte_mbuf librte_mempool librte_ether
> >>> +DEPDIRS-librte_port += librte_ip_frag librte_sched librte_kni    
> >>                                                          ^
> >> ---------------------------------------------------------+
> >>
> >> <...>
> >>  
> >>> diff --git a/lib/librte_port/Makefile b/lib/librte_port/Makefile
> >>> index 44fa73520..76629a13a 100644
> >>> --- a/lib/librte_port/Makefile
> >>> +++ b/lib/librte_port/Makefile    
> >> <...>  
> >>> -ifeq ($(CONFIG_RTE_LIBRTE_KNI),y)
> >>> -DEPDIRS-$(CONFIG_RTE_LIBRTE_PORT) += lib/librte_kni
> >>> -endif    
> >>
> >> This check needs to be reflected to new method, otherwise causing build
> >> errors for i686 target.
> >>  
> > 
> > Did you notice an error? I see no error it with:
> > 
> >     make config T=x86_64-native-linuxapp-gcc
> >     sed -i 's,CONFIG_RTE_LIBRTE_KNI=y,# CONFIG_RTE_LIBRTE_KNI is not set,' build/.config
> >     make -j8
> > 
> > 
> > I think it is not a problem, the DEPDIRS-* variable only gives an
> > ordering directive, which should be ok even if kni is not compiled.  
> 
> Can you please test shared library build, I am getting following error:
> 
> == Build lib/librte_port
>   LD librte_port.so.3.1
> /usr/bin/ld: cannot find -lrte_kni
> collect2: error: ld returned 1 exit status
> .../mk/rte.lib.mk:127: recipe for target 'librte_port.so.3.1' failed
> make[3]: *** [librte_port.so.3.1] Error 1
> .../mk/rte.subdir.mk:63: recipe for target 'librte_port' failed
> 

You're right, it happens because the libray list is built from DEPDIRS.

Thanks for spotting it, I'll check if there are other occurences and send
a fix. The simple way is probably to restore the ifeq(), but I'm wondering
if having: DEPDIRS-$(cond)-$(path) wouldn't be shorter in Makefiles.

Olivier

  reply	other threads:[~2017-03-30 12:11 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-22  1:50 [PATCH] mk: parallelize make config Ferruh Yigit
2017-01-23 17:18 ` Olivier Matz
2017-01-23 17:19   ` [PATCH] mk: optimize directory dependencies Olivier Matz
2017-01-24 11:19     ` Robin Jarry
2017-01-24 11:26       ` Bruce Richardson
2017-01-24 12:31         ` Robin Jarry
2017-01-24 11:40     ` Jerin Jacob
2017-01-24 12:15       ` Bruce Richardson
2017-01-24 12:56         ` Jerin Jacob
2017-01-24 13:26           ` Richardson, Bruce
2017-01-24 14:50             ` Olivier MATZ
2017-01-24 14:55               ` Wiles, Keith
2017-03-01 11:25                 ` Thomas Monjalon
2017-03-01 12:10                   ` Bruce Richardson
2017-03-01 12:30                   ` Olivier Matz
2017-01-24 13:05     ` Ferruh Yigit
2017-03-17 17:13     ` Olivier Matz
2017-03-17 17:47       ` Robin Jarry
2017-03-20  8:31         ` Olivier Matz
2017-03-24 13:21       ` [PATCH v2] " Olivier Matz
2017-03-27 21:33         ` Thomas Monjalon
2017-03-28 10:34         ` Ferruh Yigit
2017-03-30  8:51           ` Olivier Matz
2017-03-30  9:27             ` Ferruh Yigit
2017-03-30 12:11               ` Olivier Matz [this message]
2017-03-30 12:32                 ` [PATCH] mk: fix dependencies to optional configs Olivier Matz
2017-03-30 12:37                   ` Ferruh Yigit
2017-03-30 13:37                     ` Thomas Monjalon
2017-01-23 17:50   ` [PATCH] mk: parallelize make config Wiles, Keith
2017-01-24  8:42     ` Olivier MATZ
2017-01-24 10:02       ` Bruce Richardson
2017-01-23 19:03 ` Michał Mirosław
2017-01-30  9:41   ` Ferruh Yigit
2017-01-24 10:52 ` Bruce Richardson
2017-01-29 15:29 ` Thomas Monjalon
2017-01-30  9:46   ` Ferruh Yigit
2017-01-30 10:21 ` [PATCH v2] " Ferruh Yigit
2017-01-30 18:13   ` 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=20170330141120.2dbefae4@platinum \
    --to=olivier.matz@6wind.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=jerin.jacob@caviumnetworks.com \
    --cc=keith.wiles@intel.com \
    --cc=robin.jarry@6wind.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 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.