From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ferruh.yigit@intel.com>
Received: from mga09.intel.com (mga09.intel.com [134.134.136.24])
 by dpdk.org (Postfix) with ESMTP id 7502CD00F
 for <dev@dpdk.org>; Tue, 28 Mar 2017 12:34:38 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=intel.com; i=@intel.com; q=dns/txt; s=intel;
 t=1490697278; x=1522233278;
 h=subject:to:references:cc:from:message-id:date:
 mime-version:in-reply-to:content-transfer-encoding;
 bh=oNKwCXESjcZxyQQSDKT5U/ZoaUu+4yDh5R75GpfpTUQ=;
 b=rLv/CScI242hRKeGxU+Vb3aTmXahx8WJsJkI4cD3O+DdH5zdEVUqbq8Q
 diIVfuhWzqA+oRAlQvBJ370nt4HBYg==;
Received: from fmsmga001.fm.intel.com ([10.253.24.23])
 by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;
 28 Mar 2017 03:34:37 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.36,236,1486454400"; d="scan'208";a="1127987095"
Received: from fyigit-mobl1.ger.corp.intel.com (HELO [10.237.220.122])
 ([10.237.220.122])
 by fmsmga001.fm.intel.com with ESMTP; 28 Mar 2017 03:34:35 -0700
To: Olivier Matz <olivier.matz@6wind.com>, dev@dpdk.org
References: <1489770822-27539-1-git-send-email-olivier.matz@6wind.com>
 <20170324132131.2187-1-olivier.matz@6wind.com>
Cc: thomas.monjalon@6wind.com, robin.jarry@6wind.com,
 jerin.jacob@caviumnetworks.com, keith.wiles@intel.com
From: Ferruh Yigit <ferruh.yigit@intel.com>
Message-ID: <2c512b48-b791-7072-1b73-3ee07fd11a22@intel.com>
Date: Tue, 28 Mar 2017 11:34:35 +0100
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101
 Thunderbird/45.8.0
MIME-Version: 1.0
In-Reply-To: <20170324132131.2187-1-olivier.matz@6wind.com>
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: 7bit
Subject: Re: [dpdk-dev] [PATCH v2] mk: optimize directory dependencies
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Tue, 28 Mar 2017 10:34:38 -0000

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.

> -
>  include $(RTE_SDK)/mk/rte.lib.mk

<...>