From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf0-f43.google.com (mail-lf0-f43.google.com [209.85.215.43]) by dpdk.org (Postfix) with ESMTP id 6A02110F29 for ; Thu, 30 Mar 2017 14:11:24 +0200 (CEST) Received: by mail-lf0-f43.google.com with SMTP id z15so24720596lfd.1 for ; Thu, 30 Mar 2017 05:11:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=X04R3Y+XNKlzXsVQuPARPzvqDOj3XFHNB5Mckg8GYOU=; b=HY+BDEp/7J+EjC8QCw7xULd5NxyD7xoVR17nhJUE2w8SYviPXVnUZn0EIMy9cHWEkH mtrZGOfJwfi2qgRIJkVLNEJtAgbfmwgRKyyPnxu8L8LbWAe6T97737Qn4EvdDUG7RGev a6liEg2zCZB4hRGCtxnxXRiHUFfeIR5f0jsRgPEGy6o9c1kY0aVEgB5qEPJzu0xLExj1 +7tUSGEyO0lPivixUR3Wnkd0xC8zk2vNT+dlEIR468DTnhxRDiVdN8a6Ryu+cwDZWUOL Fc+uArhxN4TfhVZ10XR4JzAxRch9d9N7bHRdFAcLsRliYUjsdWhfo9OlfpNjHifawK/k Gvmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=X04R3Y+XNKlzXsVQuPARPzvqDOj3XFHNB5Mckg8GYOU=; b=Pqbhjy+8DmJ5WuFWqFPjuRVtBKe1hiri3iQ2LASmFT/jgcIHNhsk8tfibVMmXU24hW ddk2srb01SlXri/mFLJzBfxkC0I6OULZXttJENPwFag66x1fc+2N/bjvw8qmXtYAFC6L dkYa8GC/pnVQh9zwMO52WbVraY+7RQqBnNEpGh11dvyjcJN407JSHzx7E6MWVDpR3ZGz f3gCBsw9ZNPGSl2Yf5GYptU4tdqoYv+wTwV4quKjj5gklD0AHKIHSQQefO1UrM6Ux+Jv Nxu5FhU4LvRMoC+aQ4RHf0kYRoPY5iiNheDfHS+elYiPrIdYncDSApr0MmzjSuo9hmWV Blqw== X-Gm-Message-State: AFeK/H24N8vpVXt5hCP6GK1HA43AixrfLWU+RjVp3jXwYVwZ8wdd457bNEeAT24wr25UFn+l X-Received: by 10.28.203.204 with SMTP id b195mr3175654wmg.51.1490875883776; Thu, 30 Mar 2017 05:11:23 -0700 (PDT) Received: from platinum (2a01cb0c03c651000226b0fffeed02fc.ipv6.abo.wanadoo.fr. [2a01:cb0c:3c6:5100:226:b0ff:feed:2fc]) by smtp.gmail.com with ESMTPSA id p38sm2585780wrb.31.2017.03.30.05.11.23 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 30 Mar 2017 05:11:23 -0700 (PDT) Date: Thu, 30 Mar 2017 14:11:20 +0200 From: Olivier Matz To: Ferruh Yigit Cc: dev@dpdk.org, thomas.monjalon@6wind.com, robin.jarry@6wind.com, jerin.jacob@caviumnetworks.com, keith.wiles@intel.com Message-ID: <20170330141120.2dbefae4@platinum> In-Reply-To: References: <1489770822-27539-1-git-send-email-olivier.matz@6wind.com> <20170324132131.2187-1-olivier.matz@6wind.com> <2c512b48-b791-7072-1b73-3ee07fd11a22@intel.com> <20170330105148.2d8db736@platinum> X-Mailer: Claws Mail 3.14.1 (GTK+ 2.24.31; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 30 Mar 2017 12:11:24 -0000 On Thu, 30 Mar 2017 10:27:49 +0100, Ferruh Yigit wrote: > On 3/30/2017 9:51 AM, Olivier Matz wrote: > > Hi Ferruh, > > > > On Tue, 28 Mar 2017 11:34:35 +0100, Ferruh Yigit 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 > >>> Tested-by: Robin Jarry > >>> Tested-by: Jerin Jacob > >> > >> <...> > >> > >>> 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