Received: by 10.213.65.68 with SMTP id h4csp837629imn; Fri, 23 Mar 2018 18:23:54 -0700 (PDT) X-Google-Smtp-Source: AG47ELtS2hSBKDpw/sJeCSX1ImwT/tzW/FMhqh0tr5QGIp7FL8ig33NXC7Qgf2ILfeeVbjgR5/RM X-Received: by 10.99.115.9 with SMTP id o9mr22584060pgc.332.1521854634106; Fri, 23 Mar 2018 18:23:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521854634; cv=none; d=google.com; s=arc-20160816; b=ktxfC3UnS3TgD1IIzvdwJBEdRBCdB6ad+FCNmduL3IjgUq00EHErTjAxv3GQqg4shD jjRJfCqzHIDAzEhFEoTweG1ZZ0OWTGWm5DKvcglVSmkjiQrteWvXOMW0EShfrgLy7cX5 JQfG4Y2ZNDk+YtDxSrvqzBrkM2fEgTuXYIic2u175hoqgOL36/R8Ii58jz5zi0BJ2Cz3 BfjkAk81xgIq63oVh+mLqd5Zc2ivFKHpELa87kI5VAnVEhtoyPpWPllhVFhioST6FITC MKVAq6gKwRwH+Ee1XVA+RXWRIcTOocV23yldcLbxMhnXlWIyunPxdz8dBnpgEz0267OQ ftSQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature :arc-authentication-results; bh=dNnHesWHQnoNLk/JRXZxlINUU1pS3toFc2jtm2oTsm0=; b=JHH+YUSI9vltw/3bMGp9L9nYBJ58hWNzdA/iKbEVkqmNVwxnwOa/5nbJ/kOhSL8wZh PVA43S9gg1c2wel84SwQ0mQATcktD5YrNMTPW9LykSulKa7q19xtYCvhxtndaKvxEzVg lSXCA4YM5jY/qAC2bUcmKKKeb4UDxoEjM9hjk8o/BDKDmE2LXBSpdCbhlMeeimF1YasV njEWfYNQFyHFD816PP151nVE34tOgLA7371Rd2Q2uqclCf0bkahkMgka7dE37/z6zCZU b4cCdroX/lWdpHmBuJzM2QTLam/87sIKfb2PWKYxxXH8eRPfkFGgOVxaOH5mA6cgCyxL /enw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=J/ICrzGs; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l12si6901318pgr.66.2018.03.23.18.23.39; Fri, 23 Mar 2018 18:23:54 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=J/ICrzGs; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752125AbeCXBWk (ORCPT + 99 others); Fri, 23 Mar 2018 21:22:40 -0400 Received: from mail-pg0-f68.google.com ([74.125.83.68]:41700 "EHLO mail-pg0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751617AbeCXBWi (ORCPT ); Fri, 23 Mar 2018 21:22:38 -0400 Received: by mail-pg0-f68.google.com with SMTP id m24so5209320pgv.8; Fri, 23 Mar 2018 18:22:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=dNnHesWHQnoNLk/JRXZxlINUU1pS3toFc2jtm2oTsm0=; b=J/ICrzGsGbh8skFbylkQPdnN4GP4y9WmEPCWbiAlVRglIstB2Rzn7boAr2GmzcyNcS prm4TTxgcy61/xALSsU0MdksPPOnXunEbaMUAtZDsKYMhum4Zsa+FCMI0mRCWSpa9il3 7yM7pbiWGbdSuFNfmsIQT8y4FaQXBPjdswekJfwEX31gZpn8GHqrBbXTZ3NKlqh8yFfP TX7g+hKYs40gCL0HvaugoYnamimgTzO5Y67fRpHRXoBxvBhgMen3ovUFe36IEMqCd8nU OgfygCZnKP80lSCcP/dvWlhF0bGL5EHiW58BwjrKlO4nPb6y896UBQA+oOq2xNXiZvuU O/Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=dNnHesWHQnoNLk/JRXZxlINUU1pS3toFc2jtm2oTsm0=; b=nI+MYSWEXP2pKsUU3ICah+GBL4koIdJxAinxERZKeoBO7qum2jAot/dQhdup4SrttY xw6zZE7TvBVf3zL/McVEQixQvr5IJa4ncNjE7EO4UUz1wpbb/RL5Q1XHWnjvcnwRx3xH rNYkJRObcx2LUpZrlgMqUXYhcWa4JoPITflafvUUTyWIRyicoEe5rD3cDjr31FPSsK0K it2ZnvvZaGG5naAnC5bAWKK/ZZDpAVkhf4naQbp2ohkptXhX49fIEO4BCssix/XqpPwN TnnEE3xxDLK4easYfFpydNoZBskdKWL2xUBPO1wnq/UrMcPdqMP59uTRpvL47l/7UJ6p d+2Q== X-Gm-Message-State: AElRT7GsdgcpDD+rfp2mYcap74aiOhC5NR2xMj2r+J/lkcA1WmdrTi2m kj/mkuFONHV03VN97lWsM3s= X-Received: by 10.101.74.15 with SMTP id s15mr22472326pgq.382.1521854558074; Fri, 23 Mar 2018 18:22:38 -0700 (PDT) Received: from [192.168.1.70] (c-73-93-215-6.hsd1.ca.comcast.net. [73.93.215.6]) by smtp.gmail.com with ESMTPSA id a13sm17535518pgd.1.2018.03.23.18.22.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 23 Mar 2018 18:22:37 -0700 (PDT) Subject: Re: [PATCH 04/10] kbuild: add %.lex.c and %.tab.[ch] to 'targets' automatically To: Masahiro Yamada , linux-kbuild@vger.kernel.org Cc: Sam Ravnborg , Michal Marek , linux-kernel@vger.kernel.org, Arnd Bergmann , Laurent Pinchart , Frank Rowand , Geert Uytterhoeven References: <1521810279-6282-1-git-send-email-yamada.masahiro@socionext.com> <1521810279-6282-4-git-send-email-yamada.masahiro@socionext.com> From: Frank Rowand Message-ID: Date: Fri, 23 Mar 2018 18:22:36 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <1521810279-6282-4-git-send-email-yamada.masahiro@socionext.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 03/23/18 06:04, Masahiro Yamada wrote: > Files generated by if_changed* must be added to 'targets' to include > *.cmd files. Otherwise, they would be regenerated every time. > > The build system automatically adds objects to 'targets' where > appropriate, such as obj-y, extra-y, etc. but does nothing for > intermediate files. So, each Makefile needs to add them by itself. > > There are some common cases where objects are generated by chained > rules. Lexers and parsers are compiled like follows: > > %.lex.o <- %.lex.c <- %.l > %.tab.o <- %.tab.c <- %.y > > They are common patterns, so it is reasonable to take care of them > in the core Makefile instead of requiring each Makefile to do so. > > At this moment, you cannot delete 'target += zconf.lex.c' because > zconf.lex.c is included from zconf.tab.c instead of being compiled. > This will be possible with further refactoring in the future. > > Signed-off-by: Masahiro Yamada Acked-by: Frank Rowand -Frank > --- > > scripts/Makefile.build | 11 +++++++++++ > scripts/dtc/Makefile | 3 --- > scripts/genksyms/Makefile | 2 -- > scripts/kconfig/Makefile | 2 +- > 4 files changed, 12 insertions(+), 6 deletions(-) > > diff --git a/scripts/Makefile.build b/scripts/Makefile.build > index 77cce68..36f7990 100644 > --- a/scripts/Makefile.build > +++ b/scripts/Makefile.build > @@ -538,6 +538,17 @@ $(call multi_depend, $(multi-used-m), .o, -objs -y -m) > targets += $(multi-used-m) > targets := $(filter-out $(PHONY), $(targets)) > > +# Add intermediate targets: > +# When building objects with specific suffix patterns, add intermediate > +# targets that the final targets are derived from. > +intermediate_targets = $(foreach sfx, $(2), \ > + $(patsubst %$(strip $(1)),%$(sfx), \ > + $(filter %$(strip $(1)), $(targets)))) > +# %.lex.o <- %.lex.c <- %.l > +# %.tab.o <- %.tab.[ch] <- %.y > +targets += $(call intermediate_targets, .lex.o, .lex.c) \ > + $(call intermediate_targets, .tab.o, .tab.c .tab.h) > + > # Descending > # --------------------------------------------------------------------------- > > diff --git a/scripts/dtc/Makefile b/scripts/dtc/Makefile > index d17ba64..9cac65b 100644 > --- a/scripts/dtc/Makefile > +++ b/scripts/dtc/Makefile > @@ -27,6 +27,3 @@ HOSTCFLAGS_dtc-parser.tab.o := $(HOSTCFLAGS_DTC) > > # dependencies on generated files need to be listed explicitly > $(obj)/dtc-lexer.lex.o: $(obj)/dtc-parser.tab.h > - > -# generated files need to include *.cmd > -targets := dtc-lexer.lex.c dtc-parser.tab.c dtc-parser.tab.h > diff --git a/scripts/genksyms/Makefile b/scripts/genksyms/Makefile > index f4749e8..aeefd47 100644 > --- a/scripts/genksyms/Makefile > +++ b/scripts/genksyms/Makefile > @@ -32,5 +32,3 @@ HOSTCFLAGS_lex.lex.o := -I$(src) > > # dependencies on generated files need to be listed explicitly > $(obj)/lex.lex.o: $(obj)/parse.tab.h > - > -targets := lex.lex.c parse.tab.c parse.tab.h > diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile > index 1dcd797..5def877 100644 > --- a/scripts/kconfig/Makefile > +++ b/scripts/kconfig/Makefile > @@ -207,7 +207,7 @@ gconf-objs := gconf.o zconf.tab.o > > hostprogs-y := conf nconf mconf kxgettext qconf gconf > > -targets += zconf.tab.c zconf.lex.c > +targets += zconf.lex.c > clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck > clean-files += gconf.glade.h > clean-files += config.pot linux.pot >