mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Frank Rowand <frowand.list@gmail.com>
To: Masahiro Yamada <yamada.masahiro@socionext.com>,
	linux-kbuild@vger.kernel.org
Cc: Sam Ravnborg <sam@ravnborg.org>,
	Michal Marek <michal.lkml@markovi.net>,
	linux-kernel@vger.kernel.org, Arnd Bergmann <arnd@arndb.de>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Frank Rowand <frank.rowand@sony.com>,
	Geert Uytterhoeven <geert@linux-m68k.org>
Subject: Re: [PATCH 04/10] kbuild: add %.lex.c and %.tab.[ch] to 'targets' automatically
Date: Fri, 23 Mar 2018 18:22:36 -0700	[thread overview]
Message-ID: <a0d06987-833a-f8f1-1aee-7f3307b5469c@gmail.com> (raw)
In-Reply-To: <1521810279-6282-4-git-send-email-yamada.masahiro@socionext.com>

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 <yamada.masahiro@socionext.com>

Acked-by: Frank Rowand <frowand.list@gmail.com>

-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
> 

  reply	other threads:[~2018-03-24  1:22 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-23 13:04 [PATCH 01/10] .gitignore: move *.lex.c *.tab.[ch] patterns to the top-level .gitignore Masahiro Yamada
2018-03-23 13:04 ` [PATCH 02/10] kbuild: clean up *.lex.c and *.tab.[ch] patterns from top-level Makefile Masahiro Yamada
2018-03-24  1:20   ` Frank Rowand
2018-03-23 13:04 ` [PATCH 03/10] genksyms: generate lexer and parser during build instead of shipping Masahiro Yamada
2018-03-30 17:40   ` [03/10] " Andrei Vagin
2018-03-30 22:21     ` Andrei Vagin
2018-03-31  2:20       ` Masahiro Yamada
2018-03-31  5:11         ` Andrei Vagin
2018-03-23 13:04 ` [PATCH 04/10] kbuild: add %.lex.c and %.tab.[ch] to 'targets' automatically Masahiro Yamada
2018-03-24  1:22   ` Frank Rowand [this message]
2018-03-23 13:04 ` [PATCH 05/10] kbuild: add %.dtb.S and %.dtb " Masahiro Yamada
2018-03-24  1:24   ` Frank Rowand
2018-03-23 13:04 ` [PATCH 06/10] .gitignore: move *-asn1.[ch] patterns to the top-level .gitignore Masahiro Yamada
2018-03-27  6:04   ` Masahiro Yamada
2018-03-23 13:04 ` [PATCH 07/10] kbuild: clean up *-asn1.[ch] patterns from top-level Makefile Masahiro Yamada
2018-03-27  6:04   ` Masahiro Yamada
2018-03-23 13:04 ` [PATCH 08/10] kbuild: rename *-asn1.[ch] to *.asn.[ch] Masahiro Yamada
2018-03-23 13:30   ` Masahiro Yamada
2018-03-26 15:45   ` David Howells
2018-03-27  4:08     ` Masahiro Yamada
2018-03-27  6:06   ` Masahiro Yamada
2018-03-23 13:04 ` [PATCH 09/10] kbuild: add *.asn1.[ch] to 'targets' automatically Masahiro Yamada
2018-03-26 15:38   ` Masahiro Yamada
2018-03-23 13:04 ` [PATCH 10/10] kbuild: mark $(targets) as .SECONDARY and remove .PRECIOUS specifier Masahiro Yamada
2018-03-24  1:26   ` Frank Rowand
2018-03-24  1:27 ` [PATCH 01/10] .gitignore: move *.lex.c *.tab.[ch] patterns to the top-level .gitignore Frank Rowand

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=a0d06987-833a-f8f1-1aee-7f3307b5469c@gmail.com \
    --to=frowand.list@gmail.com \
    --cc=arnd@arndb.de \
    --cc=frank.rowand@sony.com \
    --cc=geert@linux-m68k.org \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michal.lkml@markovi.net \
    --cc=sam@ravnborg.org \
    --cc=yamada.masahiro@socionext.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

all inboxes | Powered by JetHome®