kbuild: rename hostprogs-y/always to hostprogs/always-y
PATCH 1/3 kbuild: rename hostprogs-y/always to hostprogs/always-y
[ Linux commit 5f2fb52fac15a8a8e10ce020dd532504a8abfc4e ]
In old days, the "host-progs" syntax was used for specifying host programs. It was renamed to the current "hostprogs-y" in 2004.
It is typically useful in scripts/Makefile because it allows Kbuild to selectively compile host programs based on the kernel configuration.
This commit renames like follows:
always -> always-y hostprogs-y -> hostprogs
So, scripts/Makefile will look like this:
always-$(CONFIG_BUILD_BIN2C) += ...
always-$(CONFIG_KALLSYMS) += ...
...
hostprogs := $(always-y) $(always-m)I think this makes more sense because a host program is always a host program, irrespective of the kernel configuration. We want to specify which ones to compile by CONFIG options, so always-y will be handier.
The "always", "hostprogs-y", "hostprogs-m" will be kept for backward compatibility for a while.
---
scripts/Makefile.build | 6 ++++-- scripts/Makefile.clean | 4 ++-- scripts/Makefile.host | 8 ++++---- scripts/Makefile.lib | 9 ++++++++- 4 files changed, 18 insertions(+), 9 deletions(-)
scripts/Makefile.build +4 -2
@@ -16,6 +16,8 @@ lib-y := lib-m := pbl-y := always := +always-y := +always-m := targets := subdir-y := subdir-m :=
@@ -43,7 +45,7 @@ include $(if $(wildcard $(kbuild-dir)/Kbuild), $(kbuild-dir)/Kbuild, $(kbuild-di include scripts/Makefile.lib # Do not include host rules unless needed -ifneq ($(hostprogs-y)$(hostprogs-m),) +ifneq ($(hostprogs)$(hostprogs-y)$(hostprogs-m),) include scripts/Makefile.host endif
@@ -80,7 +82,7 @@ endif __build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(pbl-target) $(extra-y)) \ $(if $(KBUILD_MODULES),$(obj-m)) \ - $(subdir-ym) $(always) + $(subdir-ym) $(always-y) @: # Linus' kernel sanity checking tool
scripts/Makefile.clean +2 -2
@@ -36,8 +36,8 @@ subdir-ymn := $(addprefix $(obj)/,$(subdir-ymn)) # directory __clean-files := $(extra-y) $(extra-m) $(extra-) \ - $(always) $(targets) $(clean-files) \ - $(hostprogs-y) $(hostprogs-m) $(hostprogs-) + $(always) $(always-y) $(always-m) $(always-) $(targets) $(clean-files) \ + $(hostprogs) $(hostprogs-y) $(hostprogs-m) $(hostprogs-) # as clean-files is given relative to the current directory, this adds # a $(obj) prefix, except for absolute paths
scripts/Makefile.host +4 -4
@@ -6,21 +6,21 @@ # Both C and C++ are supported, but preferred language is C for such utilities. # # Sample syntax (see Documentation/kbuild/makefiles.txt for reference) -# hostprogs-y := bin2hex +# hostprogs := bin2hex # Will compile bin2hex.c and create an executable named bin2hex # -# hostprogs-y := lxdialog +# hostprogs := lxdialog # lxdialog-objs := checklist.o lxdialog.o # Will compile lxdialog.c and checklist.c, and then link the executable # lxdialog, based on checklist.o and lxdialog.o # -# hostprogs-y := qconf +# hostprogs := qconf # qconf-cxxobjs := qconf.o # qconf-objs := menu.o # Will compile qconf as a C++ program, and menu as a C program. # They are linked as C++ code to the executable qconf -__hostprogs := $(sort $(hostprogs-y) $(hostprogs-m)) +__hostprogs := $(sort $(hostprogs)) # C code # Executables compiled from a single .c file
scripts/Makefile.lib +8 -1
@@ -1,3 +1,8 @@ +# SPDX-License-Identifier: GPL-2.0 +# Backward compatibility +always-y += $(always) +hostprogs += $(hostprogs-y) $(hostprogs-m) + # Figure out what we need to build from the various variables # ===========================================================================
@@ -85,10 +90,12 @@ obj-dirs := $(dir $(multi-objs) $(obj-y) $(pbl-y)) real-objs-y := $(foreach m, $(filter-out $(subdir-obj-y), $(obj-y)), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y))),$($(m:.o=-objs)) $($(m:.o=-y)),$(m))) $(extra-y) real-objs-m := $(foreach m, $(obj-m), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y))),$($(m:.o=-objs)) $($(m:.o=-y)),$(m))) +always-y += $(always-m) + # Add subdir path extra-y := $(addprefix $(obj)/,$(extra-y)) -always := $(addprefix $(obj)/,$(always)) +always-y := $(addprefix $(obj)/,$(always-y)) targets := $(addprefix $(obj)/,$(targets)) obj-y := $(addprefix $(obj)/,$(obj-y)) obj-m := $(addprefix $(obj)/,$(obj-m))
Signature · 7 lines
2.25.1 _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
PATCH 2/3 kbuild: update flex and bison rules to Linux 5.7-rc1
Import the following commits from Linux, and re-sync.
- 6ba7dc6616ce
"kbuild: make bison create C file and header in a single pattern rule"
- cf8dfd15e5fb
"kbuild: move flex and bison rules to Makefile.host"
---
scripts/Makefile.host | 20 +++++++++++++++++++- scripts/Makefile.lib | 22 ---------------------- 2 files changed, 19 insertions(+), 23 deletions(-)
scripts/Makefile.host +19 -1
@@ -1,3 +1,21 @@ +# SPDX-License-Identifier: GPL-2.0 + +# LEX +# --------------------------------------------------------------------------- +quiet_cmd_flex = LEX $@ + cmd_flex = $(LEX) -o$@ -L $< + +$(obj)/%.lex.c: $(src)/%.l FORCE + $(call if_changed,flex) + +# YACC +# --------------------------------------------------------------------------- +quiet_cmd_bison = YACC $(basename $@).[ch] + cmd_bison = $(YACC) -o $(basename $@).c --defines=$(basename $@).h -t -l $< + +$(obj)/%.tab.c $(obj)/%.tab.h: $(src)/%.y FORCE + $(call if_changed,bison) + # ========================================================================== # Building binaries on the host system # Binaries are used during the compilation of the kernel, for example
@@ -5,7 +23,7 @@ # # Both C and C++ are supported, but preferred language is C for such utilities. # -# Sample syntax (see Documentation/kbuild/makefiles.txt for reference) +# Sample syntax (see Documentation/kbuild/makefiles.rst for reference) # hostprogs := bin2hex # Will compile bin2hex.c and create an executable named bin2hex #
scripts/Makefile.lib +0 -22
@@ -195,28 +195,6 @@ $(foreach m, $(notdir $1), \ $(addprefix $(obj)/, $(foreach s, $3, $($(m:%$(strip $2)=%$(s))))))) endef -# LEX -# --------------------------------------------------------------------------- -quiet_cmd_flex = LEX $@ - cmd_flex = $(LEX) -o$@ -L $< - -$(obj)/%.lex.c: $(src)/%.l FORCE - $(call if_changed,flex) - -# YACC -# --------------------------------------------------------------------------- -quiet_cmd_bison = YACC $@ - cmd_bison = $(YACC) -o$@ -t -l $< - -$(obj)/%.tab.c: $(src)/%.y FORCE - $(call if_changed,bison) - -quiet_cmd_bison_h = YACC $@ - cmd_bison_h = $(YACC) -o/dev/null --defines=$@ -t -l $< - -$(obj)/%.tab.h: $(src)/%.y FORCE - $(call if_changed,bison_h) - # Shipped files # ===========================================================================
Signature · 7 lines
2.25.1 _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
PATCH 3/3 fixdep: update to Linux 5.7-rc1
In reply to Masahiro Yamadascripts/basic/ works for barebox as drop-in.
Update scripts/basic/ to Linux 5.7-rc1.
---
scripts/basic/.gitignore | 2 +- scripts/basic/Makefile | 19 ++++--------- scripts/basic/fixdep.c | 61 ++++++++++++++++++++++++++++------------ 3 files changed, 49 insertions(+), 33 deletions(-)
scripts/basic/.gitignore +1 -1
@@ -1,2 +1,2 @@ -docproc +# SPDX-License-Identifier: GPL-2.0-only fixdep
scripts/basic/Makefile +5 -14
@@ -1,15 +1,6 @@ -### -# Makefile.basic list the most basic programs used during the build process. -# The programs listed herein is what is needed to do the basic stuff, -# such as fix dependency file. -# This initial step is needed to avoid files to be recompiled -# when barebox configuration changes (which is what happens when -# .config is included by main Makefile. -# --------------------------------------------------------------------------- -# fixdep: Used to generate dependency information during build process +# SPDX-License-Identifier: GPL-2.0-only +# +# fixdep: used to generate dependency information during build process -hostprogs-y := fixdep -always := $(hostprogs-y) - -# fixdep is needed to compile other host programs -$(addprefix $(obj)/,$(filter-out fixdep,$(always))): $(obj)/fixdep +hostprogs := fixdep +always-y := $(hostprogs)
scripts/basic/fixdep.c +43 -18
126 lines not on this page · raw message
Signature · 7 lines
2.25.1 _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
Quoted 24 lines · Masahiro Yamada
[ Linux commit
5f2fb52fac15a8a8e10ce020dd532504a8abfc4e]In old days, the "host-progs" syntax was used for specifying host programs. It was renamed to the current "hostprogs-y" in 2004.
It is typically useful in
scripts/Makefilebecause it allowsKbuildto selectively compile host programs based on the kernel configuration.This commit renames like follows:
always -> always-y hostprogs-y -> hostprogsSo,
scripts/Makefilewill look like this:always-$(CONFIG_BUILD_BIN2C) += ... always-$(CONFIG_KALLSYMS) += ... ... hostprogs := $(always-y) $(always-m)I think this makes more sense because a host program is always a host program, irrespective of the kernel configuration. We want to specify which ones to compile by CONFIG options, so always-y will be handier.
Quoted 5 lines
The "always", "hostprogs-y", "hostprogs-m" will be kept for backward compatibility for a while.
Signed-off-by Masahiro Yamada <[email protected]>---
Series applied, thanks
Sascha
Signature · 9 lines
Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox