linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/11] kbuild: clean-ups and improvement of single targets
@ 2019-08-10 15:52 Masahiro Yamada
  2019-08-10 15:52 ` [PATCH 01/11] kbuild: move the Module.symvers check for external module build Masahiro Yamada
                   ` (11 more replies)
  0 siblings, 12 replies; 14+ messages in thread
From: Masahiro Yamada @ 2019-08-10 15:52 UTC (permalink / raw)
  To: linux-kbuild
  Cc: Christoph Hellwig, Sam Ravnborg, Masahiro Yamada,
	Alexei Starovoitov, Boris Pismenny, Daniel Borkmann,
	David S. Miller, Igor Russkikh, Jakub Kicinski, Leon Romanovsky,
	Martin KaFai Lau, Michal Marek, Saeed Mahameed, Song Liu,
	Yonghong Song, bpf, linux-kernel, linux-rdma, netdev,
	oss-drivers


01/11-09/11 are trivial clean-ups.

10/11 makes the single targets work more correctly.

11/11 cleans up Makefiles that have been added
to work aroud the single target issues.



Masahiro Yamada (11):
  kbuild: move the Module.symvers check for external module build
  kbuild: refactor part-of-module more
  kbuild: fix modkern_aflags implementation
  kbuild: remove 'make /' support
  kbuild: remove meaningless 'targets' in ./Kbuild
  kbuild: do not descend to ./Kbuild when cleaning
  kbuild: unset variables in top Makefile instead of setting 0
  kbuild: unify vmlinux-dirs and module-dirs rules
  kbuild: unify clean-dirs rule for in-kernel and external module
  kbuild: make single targets work more correctly
  treewide: remove dummy Makefiles for single targets

 Kbuild                                        |   7 -
 Makefile                                      | 193 ++++++++++--------
 .../aquantia/atlantic/hw_atl/Makefile         |   2 -
 .../mellanox/mlx5/core/accel/Makefile         |   2 -
 .../ethernet/mellanox/mlx5/core/diag/Makefile |   2 -
 .../ethernet/mellanox/mlx5/core/en/Makefile   |   2 -
 .../mellanox/mlx5/core/en/xsk/Makefile        |   1 -
 .../mellanox/mlx5/core/en_accel/Makefile      |   2 -
 .../ethernet/mellanox/mlx5/core/fpga/Makefile |   2 -
 .../mellanox/mlx5/core/ipoib/Makefile         |   2 -
 .../ethernet/mellanox/mlx5/core/lib/Makefile  |   2 -
 .../net/ethernet/netronome/nfp/bpf/Makefile   |   2 -
 .../ethernet/netronome/nfp/flower/Makefile    |   2 -
 .../ethernet/netronome/nfp/nfpcore/Makefile   |   2 -
 .../netronome/nfp/nfpcore/nfp6000/Makefile    |   2 -
 .../net/ethernet/netronome/nfp/nic/Makefile   |   2 -
 scripts/Makefile.build                        |  55 +++--
 17 files changed, 149 insertions(+), 133 deletions(-)
 delete mode 100644 drivers/net/ethernet/aquantia/atlantic/hw_atl/Makefile
 delete mode 100644 drivers/net/ethernet/mellanox/mlx5/core/accel/Makefile
 delete mode 100644 drivers/net/ethernet/mellanox/mlx5/core/diag/Makefile
 delete mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/Makefile
 delete mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/Makefile
 delete mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en_accel/Makefile
 delete mode 100644 drivers/net/ethernet/mellanox/mlx5/core/fpga/Makefile
 delete mode 100644 drivers/net/ethernet/mellanox/mlx5/core/ipoib/Makefile
 delete mode 100644 drivers/net/ethernet/mellanox/mlx5/core/lib/Makefile
 delete mode 100644 drivers/net/ethernet/netronome/nfp/bpf/Makefile
 delete mode 100644 drivers/net/ethernet/netronome/nfp/flower/Makefile
 delete mode 100644 drivers/net/ethernet/netronome/nfp/nfpcore/Makefile
 delete mode 100644 drivers/net/ethernet/netronome/nfp/nfpcore/nfp6000/Makefile
 delete mode 100644 drivers/net/ethernet/netronome/nfp/nic/Makefile

-- 
2.17.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 01/11] kbuild: move the Module.symvers check for external module build
  2019-08-10 15:52 [PATCH 00/11] kbuild: clean-ups and improvement of single targets Masahiro Yamada
@ 2019-08-10 15:52 ` Masahiro Yamada
  2019-08-10 15:52 ` [PATCH 02/11] kbuild: refactor part-of-module more Masahiro Yamada
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Masahiro Yamada @ 2019-08-10 15:52 UTC (permalink / raw)
  To: linux-kbuild
  Cc: Christoph Hellwig, Sam Ravnborg, Masahiro Yamada, Michal Marek,
	linux-kernel

$(objtree)/Module.symvers is not required for descending into
sub-directories. It is needed for the modpost stage.

Move the Module.symvers check to the right place.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---

 Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index 02aff718a11d..24c9ed272b5f 100644
--- a/Makefile
+++ b/Makefile
@@ -1620,10 +1620,10 @@ $(objtree)/Module.symvers:
 
 module-dirs := $(addprefix _module_,$(KBUILD_EXTMOD))
 PHONY += $(module-dirs) modules
-$(module-dirs): prepare $(objtree)/Module.symvers
+$(module-dirs): prepare
 	$(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@) need-modorder=1
 
-modules: $(module-dirs)
+modules: $(module-dirs) $(objtree)/Module.symvers
 	@$(kecho) '  Building modules, stage 2.';
 	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
 
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 02/11] kbuild: refactor part-of-module more
  2019-08-10 15:52 [PATCH 00/11] kbuild: clean-ups and improvement of single targets Masahiro Yamada
  2019-08-10 15:52 ` [PATCH 01/11] kbuild: move the Module.symvers check for external module build Masahiro Yamada
@ 2019-08-10 15:52 ` Masahiro Yamada
  2019-08-10 15:52 ` [PATCH 03/11] kbuild: fix modkern_aflags implementation Masahiro Yamada
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Masahiro Yamada @ 2019-08-10 15:52 UTC (permalink / raw)
  To: linux-kbuild
  Cc: Christoph Hellwig, Sam Ravnborg, Masahiro Yamada, Michal Marek,
	linux-kernel

Make it even shorter.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---

 scripts/Makefile.build | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index 2f66ed388d1c..64e47a9a54c5 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -98,8 +98,7 @@ endif
 # ---------------------------------------------------------------------------
 
 # Default is built-in, unless we know otherwise
-$(foreach x, i ll lst o s symtypes, $(patsubst %.o,%.$(x),$(real-obj-m))): \
-	part-of-module := y
+part-of-module = $(if $(filter $(basename $@).o, $(real-obj-m)),y)
 
 modkern_cflags =                                          \
 	$(if $(part-of-module),                           \
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 03/11] kbuild: fix modkern_aflags implementation
  2019-08-10 15:52 [PATCH 00/11] kbuild: clean-ups and improvement of single targets Masahiro Yamada
  2019-08-10 15:52 ` [PATCH 01/11] kbuild: move the Module.symvers check for external module build Masahiro Yamada
  2019-08-10 15:52 ` [PATCH 02/11] kbuild: refactor part-of-module more Masahiro Yamada
@ 2019-08-10 15:52 ` Masahiro Yamada
  2019-08-10 15:53 ` [PATCH 04/11] kbuild: remove 'make /' support Masahiro Yamada
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Masahiro Yamada @ 2019-08-10 15:52 UTC (permalink / raw)
  To: linux-kbuild
  Cc: Christoph Hellwig, Sam Ravnborg, Masahiro Yamada, Michal Marek,
	linux-kernel

For the single target building %.symtypes from %.S, $(a_flags) is
expanded into the _KERNEL flags even if the object is a part of a
module.

$(real-obj-m:.o=.symtypes): modkern_aflags := $(KBUILD_AFLAGS_MODULE) $(AFLAGS_MODULE)

... would fix the issue, but it is not nice to duplicate similar code
for every suffix.

Implement modkern_aflags in the same way as modkern_cflags.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---

 scripts/Makefile.build | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index 64e47a9a54c5..3633558f7861 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -309,10 +309,9 @@ $(obj)/%.h.s: $(src)/%.h FORCE
 # Compile assembler sources (.S)
 # ---------------------------------------------------------------------------
 
-modkern_aflags := $(KBUILD_AFLAGS_KERNEL) $(AFLAGS_KERNEL)
-
-$(real-obj-m)      : modkern_aflags := $(KBUILD_AFLAGS_MODULE) $(AFLAGS_MODULE)
-$(real-obj-m:.o=.s): modkern_aflags := $(KBUILD_AFLAGS_MODULE) $(AFLAGS_MODULE)
+modkern_aflags = $(if $(part-of-module),				\
+			$(KBUILD_AFLAGS_MODULE) $(AFLAGS_MODULE),	\
+			$(KBUILD_AFLAGS_KERNEL) $(AFLAGS_KERNEL))
 
 # .S file exports must have their C prototypes defined in asm/asm-prototypes.h
 # or a file that it includes, in order to get versioned symbols. We build a
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 04/11] kbuild: remove 'make /' support
  2019-08-10 15:52 [PATCH 00/11] kbuild: clean-ups and improvement of single targets Masahiro Yamada
                   ` (2 preceding siblings ...)
  2019-08-10 15:52 ` [PATCH 03/11] kbuild: fix modkern_aflags implementation Masahiro Yamada
@ 2019-08-10 15:53 ` Masahiro Yamada
  2019-08-10 15:53 ` [PATCH 05/11] kbuild: remove meaningless 'targets' in ./Kbuild Masahiro Yamada
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Masahiro Yamada @ 2019-08-10 15:53 UTC (permalink / raw)
  To: linux-kbuild
  Cc: Christoph Hellwig, Sam Ravnborg, Masahiro Yamada, Michal Marek,
	linux-kernel

'make /' is just an alias for 'make ./'; this builds all objects of an
external module, but skips the modpost stage.

I am not a big fan of 'make /' since it looks as if it were touching
the root directory of the system. I like 'make ./' better.

I do not know how many people are using it, but let's show a hint if
it is used. Also, move it close to the external module rules since
this only makes sense for external modules.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---

 Makefile | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/Makefile b/Makefile
index 24c9ed272b5f..86afce391582 100644
--- a/Makefile
+++ b/Makefile
@@ -1648,6 +1648,10 @@ $(clean-dirs):
 
 clean: rm-files := $(KBUILD_EXTMOD)/Module.symvers
 
+PHONY += /
+/:
+	@echo >&2 '"$(MAKE) /" is no longer supported. Please use "$(MAKE) ./" instead.'
+
 PHONY += help
 help:
 	@echo  '  Building external modules.'
@@ -1783,11 +1787,6 @@ endif
 	$(Q)$(MAKE) $(build)=$(build-dir) $(build-target:.ko=.mod)
 	$(Q)echo $(build-target) > $(MODORDER)
 	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
-
-# Modules
-PHONY += /
-/: ./
-
 %/: prepare FORCE
 	$(Q)$(MAKE) KBUILD_MODULES=1 $(build)=$(build-dir) need-modorder=1
 
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 05/11] kbuild: remove meaningless 'targets' in ./Kbuild
  2019-08-10 15:52 [PATCH 00/11] kbuild: clean-ups and improvement of single targets Masahiro Yamada
                   ` (3 preceding siblings ...)
  2019-08-10 15:53 ` [PATCH 04/11] kbuild: remove 'make /' support Masahiro Yamada
@ 2019-08-10 15:53 ` Masahiro Yamada
  2019-08-10 15:53 ` [PATCH 06/11] kbuild: do not descend to ./Kbuild when cleaning Masahiro Yamada
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Masahiro Yamada @ 2019-08-10 15:53 UTC (permalink / raw)
  To: linux-kbuild
  Cc: Christoph Hellwig, Sam Ravnborg, Masahiro Yamada, linux-kernel

timeconst.h is generated by $(call filechk,...), missing-syscalls and
old-atomics are invoked by $(call cmd,...)

None of them needs to be added to 'targets'.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---

 Kbuild | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/Kbuild b/Kbuild
index 8637fd14135f..d40366e967d7 100644
--- a/Kbuild
+++ b/Kbuild
@@ -18,8 +18,6 @@ $(bounds-file): kernel/bounds.s FORCE
 
 timeconst-file := include/generated/timeconst.h
 
-targets += $(timeconst-file)
-
 filechk_gentimeconst = echo $(CONFIG_HZ) | bc -q $<
 
 $(timeconst-file): kernel/time/timeconst.bc FORCE
@@ -42,7 +40,6 @@ $(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s FORCE
 # Check for missing system calls
 
 always += missing-syscalls
-targets += missing-syscalls
 
 quiet_cmd_syscalls = CALL    $<
       cmd_syscalls = $(CONFIG_SHELL) $< $(CC) $(c_flags) $(missing_syscalls_flags)
@@ -54,7 +51,6 @@ missing-syscalls: scripts/checksyscalls.sh $(offsets-file) FORCE
 # Check atomic headers are up-to-date
 
 always += old-atomics
-targets += old-atomics
 
 quiet_cmd_atomics = CALL    $<
       cmd_atomics = $(CONFIG_SHELL) $<
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 06/11] kbuild: do not descend to ./Kbuild when cleaning
  2019-08-10 15:52 [PATCH 00/11] kbuild: clean-ups and improvement of single targets Masahiro Yamada
                   ` (4 preceding siblings ...)
  2019-08-10 15:53 ` [PATCH 05/11] kbuild: remove meaningless 'targets' in ./Kbuild Masahiro Yamada
@ 2019-08-10 15:53 ` Masahiro Yamada
  2019-08-10 15:53 ` [PATCH 07/11] kbuild: unset variables in top Makefile instead of setting 0 Masahiro Yamada
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Masahiro Yamada @ 2019-08-10 15:53 UTC (permalink / raw)
  To: linux-kbuild
  Cc: Christoph Hellwig, Sam Ravnborg, Masahiro Yamada, Michal Marek,
	linux-kernel

'make clean' descends into ./Kbuild, but does not clean anything
since everything is added to no-clean-files.

There is no need to descend to ./Kbuild in the first place.
We can drop the no-clean-files assignment.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---

 Kbuild   | 3 ---
 Makefile | 2 +-
 2 files changed, 1 insertion(+), 4 deletions(-)

diff --git a/Kbuild b/Kbuild
index d40366e967d7..3109ac786e76 100644
--- a/Kbuild
+++ b/Kbuild
@@ -57,6 +57,3 @@ quiet_cmd_atomics = CALL    $<
 
 old-atomics: scripts/atomic/check-atomics.sh FORCE
 	$(call cmd,atomics)
-
-# Keep these three files during make clean
-no-clean-files := $(bounds-file) $(offsets-file) $(timeconst-file)
diff --git a/Makefile b/Makefile
index 86afce391582..3c186f59f152 100644
--- a/Makefile
+++ b/Makefile
@@ -1396,7 +1396,7 @@ DISTCLEAN_FILES += tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS
 #
 clean: rm-dirs  := $(CLEAN_DIRS)
 clean: rm-files := $(CLEAN_FILES)
-clean-dirs      := $(addprefix _clean_, . $(vmlinux-alldirs))
+clean-dirs      := $(addprefix _clean_, $(vmlinux-alldirs))
 
 PHONY += $(clean-dirs) clean archclean vmlinuxclean
 $(clean-dirs):
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 07/11] kbuild: unset variables in top Makefile instead of setting 0
  2019-08-10 15:52 [PATCH 00/11] kbuild: clean-ups and improvement of single targets Masahiro Yamada
                   ` (5 preceding siblings ...)
  2019-08-10 15:53 ` [PATCH 06/11] kbuild: do not descend to ./Kbuild when cleaning Masahiro Yamada
@ 2019-08-10 15:53 ` Masahiro Yamada
  2019-08-10 15:53 ` [PATCH 08/11] kbuild: unify vmlinux-dirs and module-dirs rules Masahiro Yamada
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Masahiro Yamada @ 2019-08-10 15:53 UTC (permalink / raw)
  To: linux-kbuild
  Cc: Christoph Hellwig, Sam Ravnborg, Masahiro Yamada, Michal Marek,
	linux-kernel

There is no need to set 0 to variables such as config-targets,
mixed-targets, etc.

Unset instead of setting 0 in order to use 'ifdef' to test them.

I also renamed:

  config-targets  ->  config-build
  mixed-targets   ->  mixed-build
  dot-config      ->  need-config

to clarify what we are doing.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---

 Makefile | 46 +++++++++++++++++++++++-----------------------
 1 file changed, 23 insertions(+), 23 deletions(-)

diff --git a/Makefile b/Makefile
index 3c186f59f152..706ca0d633df 100644
--- a/Makefile
+++ b/Makefile
@@ -272,32 +272,32 @@ no-dot-config-targets := $(clean-targets) \
 no-sync-config-targets := $(no-dot-config-targets) install %install \
 			   kernelrelease
 
-config-targets  := 0
-mixed-targets   := 0
-dot-config      := 1
-may-sync-config := 1
+config-build	:=
+mixed-build	:=
+need-config	:= 1
+may-sync-config	:= 1
 
 ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
 	ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
-		dot-config := 0
+		need-config :=
 	endif
 endif
 
 ifneq ($(filter $(no-sync-config-targets), $(MAKECMDGOALS)),)
 	ifeq ($(filter-out $(no-sync-config-targets), $(MAKECMDGOALS)),)
-		may-sync-config := 0
+		may-sync-config :=
 	endif
 endif
 
 ifneq ($(KBUILD_EXTMOD),)
-	may-sync-config := 0
+	may-sync-config :=
 endif
 
 ifeq ($(KBUILD_EXTMOD),)
         ifneq ($(filter config %config,$(MAKECMDGOALS)),)
-                config-targets := 1
+		config-build := 1
                 ifneq ($(words $(MAKECMDGOALS)),1)
-                        mixed-targets := 1
+			mixed-build := 1
                 endif
         endif
 endif
@@ -305,18 +305,18 @@ endif
 # For "make -j clean all", "make -j mrproper defconfig all", etc.
 ifneq ($(filter $(clean-targets),$(MAKECMDGOALS)),)
         ifneq ($(filter-out $(clean-targets),$(MAKECMDGOALS)),)
-                mixed-targets := 1
+		mixed-build := 1
         endif
 endif
 
 # install and modules_install need also be processed one by one
 ifneq ($(filter install,$(MAKECMDGOALS)),)
         ifneq ($(filter modules_install,$(MAKECMDGOALS)),)
-	        mixed-targets := 1
+		mixed-build := 1
         endif
 endif
 
-ifeq ($(mixed-targets),1)
+ifdef mixed-build
 # ===========================================================================
 # We're called with mixed targets (*config and build targets).
 # Handle them one by one.
@@ -332,7 +332,7 @@ __build_one_by_one:
 		$(MAKE) -f $(srctree)/Makefile $$i; \
 	done
 
-else
+else # !mixed-build
 
 include scripts/Kbuild.include
 
@@ -544,7 +544,7 @@ endif
 # and from include/config/auto.conf.cmd to detect the compiler upgrade.
 CC_VERSION_TEXT = $(shell $(CC) --version 2>/dev/null | head -n 1)
 
-ifeq ($(config-targets),1)
+ifdef config-build
 # ===========================================================================
 # *config targets only - make sure prerequisites are updated, and descend
 # in scripts/kconfig to make the *config target
@@ -561,7 +561,7 @@ config: scripts_basic outputmakefile FORCE
 %config: scripts_basic outputmakefile FORCE
 	$(Q)$(MAKE) $(build)=scripts/kconfig $@
 
-else
+else #!config-build
 # ===========================================================================
 # Build targets only - this includes vmlinux, arch specific targets, clean
 # targets and others. In general all targets except *config targets.
@@ -604,7 +604,7 @@ endif
 
 export KBUILD_MODULES KBUILD_BUILTIN
 
-ifeq ($(dot-config),1)
+ifdef need-config
 include include/config/auto.conf
 endif
 
@@ -652,8 +652,8 @@ ARCH_AFLAGS :=
 ARCH_CFLAGS :=
 include arch/$(SRCARCH)/Makefile
 
-ifeq ($(dot-config),1)
-ifeq ($(may-sync-config),1)
+ifdef need-config
+ifdef may-sync-config
 # Read in dependencies to all Kconfig* files, make sure to run syncconfig if
 # changes are detected. This should be included after arch/$(SRCARCH)/Makefile
 # because some architectures define CROSS_COMPILE there.
@@ -676,7 +676,7 @@ $(KCONFIG_CONFIG):
 # The syncconfig should be executed only once to make all the targets.
 %/auto.conf %/auto.conf.cmd %/tristate.conf: $(KCONFIG_CONFIG)
 	$(Q)$(MAKE) -f $(srctree)/Makefile syncconfig
-else
+else # !may-sync-config
 # External modules and some install targets need include/generated/autoconf.h
 # and include/config/auto.conf but do not care if they are up-to-date.
 # Use auto.conf to trigger the test
@@ -692,7 +692,7 @@ include/config/auto.conf:
 	/bin/false)
 
 endif # may-sync-config
-endif # $(dot-config)
+endif # need-config
 
 KBUILD_CFLAGS	+= $(call cc-option,-fno-delete-null-pointer-checks,)
 KBUILD_CFLAGS	+= $(call cc-disable-warning,frame-address,)
@@ -1809,9 +1809,9 @@ existing-targets := $(wildcard $(sort $(targets)))
 
 -include $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).cmd)
 
-endif   # ifeq ($(config-targets),1)
-endif   # ifeq ($(mixed-targets),1)
-endif   # need-sub-make
+endif # config-targets
+endif # mixed-build
+endif # need-sub-make
 
 PHONY += FORCE
 FORCE:
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 08/11] kbuild: unify vmlinux-dirs and module-dirs rules
  2019-08-10 15:52 [PATCH 00/11] kbuild: clean-ups and improvement of single targets Masahiro Yamada
                   ` (6 preceding siblings ...)
  2019-08-10 15:53 ` [PATCH 07/11] kbuild: unset variables in top Makefile instead of setting 0 Masahiro Yamada
@ 2019-08-10 15:53 ` Masahiro Yamada
  2019-08-10 15:53 ` [PATCH 09/11] kbuild: unify clean-dirs rule for in-kernel and external module Masahiro Yamada
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Masahiro Yamada @ 2019-08-10 15:53 UTC (permalink / raw)
  To: linux-kbuild
  Cc: Christoph Hellwig, Sam Ravnborg, Masahiro Yamada, Michal Marek,
	linux-kernel

The in-kernel build and external module build have similar code
for descending into sub-directories.

Factor out the code into the common place.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---

 Makefile | 43 +++++++++++++++++++++----------------------
 1 file changed, 21 insertions(+), 22 deletions(-)

diff --git a/Makefile b/Makefile
index 706ca0d633df..e60c09d57b30 100644
--- a/Makefile
+++ b/Makefile
@@ -1016,6 +1016,8 @@ vmlinux-alldirs	:= $(sort $(vmlinux-dirs) Documentation \
 		     $(patsubst %/,%,$(filter %/, $(init-) $(core-) \
 			$(drivers-) $(net-) $(libs-) $(virt-))))
 
+build-dirs	:= $(vmlinux-dirs)
+
 init-y		:= $(patsubst %/, %/built-in.a, $(init-y))
 core-y		:= $(patsubst %/, %/built-in.a, $(core-y))
 drivers-y	:= $(patsubst %/, %/built-in.a, $(drivers-y))
@@ -1038,7 +1040,7 @@ vmlinux-deps := $(KBUILD_LDS) $(KBUILD_VMLINUX_OBJS) $(KBUILD_VMLINUX_LIBS)
 # Recurse until adjust_autoksyms.sh is satisfied
 PHONY += autoksyms_recursive
 ifdef CONFIG_TRIM_UNUSED_KSYMS
-autoksyms_recursive: $(vmlinux-deps) modules.order
+autoksyms_recursive: descend modules.order
 	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \
 	  "$(MAKE) -f $(srctree)/Makefile vmlinux"
 endif
@@ -1070,17 +1072,7 @@ targets := vmlinux
 
 # The actual objects are generated when descending,
 # make sure no implicit rule kicks in
-$(sort $(vmlinux-deps)): $(vmlinux-dirs) ;
-
-# Handle descending into subdirectories listed in $(vmlinux-dirs)
-# Preset locale variables to speed up the build process. Limit locale
-# tweaks to this spot to avoid wrong language settings when running
-# make menuconfig etc.
-# Error messages still appears in the original language
-
-PHONY += $(vmlinux-dirs)
-$(vmlinux-dirs): prepare
-	$(Q)$(MAKE) $(build)=$@ need-builtin=1 need-modorder=1
+$(sort $(vmlinux-deps)): descend ;
 
 filechk_kernel.release = \
 	echo "$(KERNELVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
@@ -1302,13 +1294,13 @@ modules: $(if $(KBUILD_BUILTIN),vmlinux) modules.order modules.builtin
 	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
 	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/modules-check.sh
 
-modules.order: $(vmlinux-dirs)
-	$(Q)$(AWK) '!x[$$0]++' $(addsuffix /$@, $(vmlinux-dirs)) > $@
+modules.order: descend
+	$(Q)$(AWK) '!x[$$0]++' $(addsuffix /$@, $(build-dirs)) > $@
 
-modbuiltin-dirs := $(addprefix _modbuiltin_, $(vmlinux-dirs))
+modbuiltin-dirs := $(addprefix _modbuiltin_, $(build-dirs))
 
 modules.builtin: $(modbuiltin-dirs)
-	$(Q)$(AWK) '!x[$$0]++' $(addsuffix /$@, $(vmlinux-dirs)) > $@
+	$(Q)$(AWK) '!x[$$0]++' $(addsuffix /$@, $(build-dirs)) > $@
 
 PHONY += $(modbuiltin-dirs)
 # tristate.conf is not included from this Makefile. Add it as a prerequisite
@@ -1618,12 +1610,9 @@ $(objtree)/Module.symvers:
 	echo "           is missing; modules will have no dependencies and modversions."; \
 	echo )
 
-module-dirs := $(addprefix _module_,$(KBUILD_EXTMOD))
-PHONY += $(module-dirs) modules
-$(module-dirs): prepare
-	$(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@) need-modorder=1
-
-modules: $(module-dirs) $(objtree)/Module.symvers
+build-dirs := $(KBUILD_EXTMOD)
+PHONY += modules
+modules: descend $(objtree)/Module.symvers
 	@$(kecho) '  Building modules, stage 2.';
 	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
 
@@ -1665,6 +1654,16 @@ help:
 PHONY += prepare
 endif # KBUILD_EXTMOD
 
+# Handle descending into subdirectories listed in $(build-dirs)
+# Preset locale variables to speed up the build process. Limit locale
+# tweaks to this spot to avoid wrong language settings when running
+# make menuconfig etc.
+# Error messages still appears in the original language
+PHONY += descend $(build-dirs)
+descend: $(build-dirs)
+$(build-dirs): prepare
+	$(Q)$(MAKE) $(build)=$@ need-builtin=1 need-modorder=1
+
 clean: $(clean-dirs)
 	$(call cmd,rmdirs)
 	$(call cmd,rmfiles)
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 09/11] kbuild: unify clean-dirs rule for in-kernel and external module
  2019-08-10 15:52 [PATCH 00/11] kbuild: clean-ups and improvement of single targets Masahiro Yamada
                   ` (7 preceding siblings ...)
  2019-08-10 15:53 ` [PATCH 08/11] kbuild: unify vmlinux-dirs and module-dirs rules Masahiro Yamada
@ 2019-08-10 15:53 ` Masahiro Yamada
  2019-08-10 15:53 ` [PATCH 10/11] kbuild: make single targets work more correctly Masahiro Yamada
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Masahiro Yamada @ 2019-08-10 15:53 UTC (permalink / raw)
  To: linux-kbuild
  Cc: Christoph Hellwig, Sam Ravnborg, Masahiro Yamada, Michal Marek,
	linux-kernel

Factor out the duplicated code for in-kernel and external module
cleaning.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---

 Makefile | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/Makefile b/Makefile
index e60c09d57b30..871c42e241a6 100644
--- a/Makefile
+++ b/Makefile
@@ -1017,6 +1017,7 @@ vmlinux-alldirs	:= $(sort $(vmlinux-dirs) Documentation \
 			$(drivers-) $(net-) $(libs-) $(virt-))))
 
 build-dirs	:= $(vmlinux-dirs)
+clean-dirs	:= $(vmlinux-alldirs)
 
 init-y		:= $(patsubst %/, %/built-in.a, $(init-y))
 core-y		:= $(patsubst %/, %/built-in.a, $(core-y))
@@ -1388,11 +1389,8 @@ DISTCLEAN_FILES += tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS
 #
 clean: rm-dirs  := $(CLEAN_DIRS)
 clean: rm-files := $(CLEAN_FILES)
-clean-dirs      := $(addprefix _clean_, $(vmlinux-alldirs))
 
-PHONY += $(clean-dirs) clean archclean vmlinuxclean
-$(clean-dirs):
-	$(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@)
+PHONY += archclean vmlinuxclean
 
 vmlinuxclean:
 	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/link-vmlinux.sh clean
@@ -1629,12 +1627,7 @@ PHONY += _emodinst_post
 _emodinst_post: _emodinst_
 	$(call cmd,depmod)
 
-clean-dirs := $(addprefix _clean_,$(KBUILD_EXTMOD))
-
-PHONY += $(clean-dirs) clean
-$(clean-dirs):
-	$(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@)
-
+clean-dirs := $(KBUILD_EXTMOD)
 clean: rm-files := $(KBUILD_EXTMOD)/Module.symvers
 
 PHONY += /
@@ -1664,6 +1657,11 @@ descend: $(build-dirs)
 $(build-dirs): prepare
 	$(Q)$(MAKE) $(build)=$@ need-builtin=1 need-modorder=1
 
+clean-dirs := $(addprefix _clean_, $(clean-dirs))
+PHONY += $(clean-dirs) clean
+$(clean-dirs):
+	$(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@)
+
 clean: $(clean-dirs)
 	$(call cmd,rmdirs)
 	$(call cmd,rmfiles)
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 10/11] kbuild: make single targets work more correctly
  2019-08-10 15:52 [PATCH 00/11] kbuild: clean-ups and improvement of single targets Masahiro Yamada
                   ` (8 preceding siblings ...)
  2019-08-10 15:53 ` [PATCH 09/11] kbuild: unify clean-dirs rule for in-kernel and external module Masahiro Yamada
@ 2019-08-10 15:53 ` Masahiro Yamada
  2019-08-10 15:53 ` [PATCH 11/11] treewide: remove dummy Makefiles for single targets Masahiro Yamada
  2019-08-19 14:52 ` [PATCH 00/11] kbuild: clean-ups and improvement of " Masahiro Yamada
  11 siblings, 0 replies; 14+ messages in thread
From: Masahiro Yamada @ 2019-08-10 15:53 UTC (permalink / raw)
  To: linux-kbuild
  Cc: Christoph Hellwig, Sam Ravnborg, Masahiro Yamada, Michal Marek,
	linux-kernel

Currently, the single target build directly descends into the directory
of the target. For example,

  $ make foo/bar/baz.o

... directly descends into foo/bar/.

On the other hand, the normal build usually descends one directory at
a time, i.e. descends into foo/, and then foo/bar/.

This difference causes some problems.

[1] miss subdir-asflags-y, subdir-ccflags-y in upper Makefiles

    The options in subdir-{as,cc}flags-y take effect in the current
    and its sub-directories. In other words, they are inherited
    downward. In the example above, the single target will miss
    subdir-{as,cc}flags-y if they are defined in foo/Makefile.

[2] could be built in a different directory

    As Documentation/kbuild/modules.rst section 4.3 says, Kbuild can
    handle files that are spread over several sub-directories.

    The build rule of foo/bar/baz.o may not necessarily be specified in
    foo/bar/Makefile. It might be specifies in foo/Makefile as follows:

    [foo/Makefile]
    obj-y := bar/baz.o

    This often happens when a module is so big that its source files
    are divided into sub-directories.

    In this case, there is no Makefile in the foo/bar/ level, yet the
    single target descends into foo/bar/, then fails due to the missing
    Makefile. You can still do 'make foo/bar/' for partial building,
    but cannot do 'make foo/bar/baz.s'. I beleive the single target
    '%.s' is a useful feature for inspecting the compiler output.

    Some modules work around this issue by putting an empty Makefile
    in every sub-directory.

This commit fixes those issues by letting the single target build
descend in the same way as the normal build does.

Another change is the single target build now will observe the CONFIG
options. Previously, it allowed users to build the foo.o even when
the corresponding CONFIG_FOO is disabled:

   obj-$(CONFIG_FOO) += foo.o

In the new behavior, the single target build will just fail and show
"No rule to make target ..." (or "Nothing to be done for ..." if the
stale object already exists, but cannot be updated).

The disadvantage of this commit is the build speed. Now that the
single target build visits every directory and parses lots of
Makefiles, it is slower than before. (But, I hope it will not be
too slow.)

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---

 Makefile               | 83 +++++++++++++++++++++++++++---------------
 scripts/Makefile.build | 45 ++++++++++++++++++++---
 2 files changed, 92 insertions(+), 36 deletions(-)

diff --git a/Makefile b/Makefile
index 871c42e241a6..a93d6f6b996a 100644
--- a/Makefile
+++ b/Makefile
@@ -271,11 +271,16 @@ no-dot-config-targets := $(clean-targets) \
 			 %asm-generic kernelversion %src-pkg
 no-sync-config-targets := $(no-dot-config-targets) install %install \
 			   kernelrelease
+single-targets := %.a %.i %.ko %.lds %.lst %.mod %o %.s %.symtypes %/
+ifdef CONFIG_CC_IS_CLANG
+single-targets += %.ll
+endif
 
 config-build	:=
 mixed-build	:=
 need-config	:= 1
 may-sync-config	:= 1
+single-build	:=
 
 ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
 	ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
@@ -302,6 +307,14 @@ ifeq ($(KBUILD_EXTMOD),)
         endif
 endif
 
+# We cannot build single targets and the others at the same time
+ifneq ($(filter $(single-targets), $(MAKECMDGOALS)),)
+	single-build := 1
+	ifneq ($(filter-out $(single-targets), $(MAKECMDGOALS)),)
+		mixed-build := 1
+	endif
+endif
+
 # For "make -j clean all", "make -j mrproper defconfig all", etc.
 ifneq ($(filter $(clean-targets),$(MAKECMDGOALS)),)
         ifneq ($(filter-out $(clean-targets),$(MAKECMDGOALS)),)
@@ -1655,7 +1668,7 @@ endif # KBUILD_EXTMOD
 PHONY += descend $(build-dirs)
 descend: $(build-dirs)
 $(build-dirs): prepare
-	$(Q)$(MAKE) $(build)=$@ need-builtin=1 need-modorder=1
+	$(Q)$(MAKE) $(build)=$@ single-build=$(single-build) need-builtin=1 need-modorder=1
 
 clean-dirs := $(addprefix _clean_, $(clean-dirs))
 PHONY += $(clean-dirs) clean
@@ -1752,40 +1765,50 @@ tools/%: FORCE
 
 # Single targets
 # ---------------------------------------------------------------------------
-# Single targets are compatible with:
-# - build with mixed source and output
-# - build with separate output dir 'make O=...'
-# - external modules
+# To build individual files in subdirectories, you can do like this:
+#
+#   make foo/bar/baz.s
 #
-#  target-dir => where to store outputfile
-#  build-dir  => directory in kernel source tree to use
-
-build-target = $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD)/)$@
-build-dir = $(patsubst %/,%,$(dir $(build-target)))
-
-%.i: prepare FORCE
-	$(Q)$(MAKE) $(build)=$(build-dir) $(build-target)
-%.ll: prepare FORCE
-	$(Q)$(MAKE) $(build)=$(build-dir) $(build-target)
-%.lst: prepare FORCE
-	$(Q)$(MAKE) $(build)=$(build-dir) $(build-target)
-%.o: prepare FORCE
-	$(Q)$(MAKE) $(build)=$(build-dir) $(build-target)
-%.s: prepare FORCE
-	$(Q)$(MAKE) $(build)=$(build-dir) $(build-target)
-%.symtypes: prepare FORCE
-	$(Q)$(MAKE) $(build)=$(build-dir) $(build-target)
+# The supported suffixes for single-target are listed in 'single-targets'
+#
+# To build only under specific subdirectories, you can do like this:
+#
+#   make foo/bar/baz/
+
+ifdef single-build
+
+single-all := $(filter $(single-targets), $(MAKECMDGOALS))
+
 ifeq ($(KBUILD_EXTMOD),)
-# For the single build of an in-tree module, use a temporary file to avoid
+# For the single build of in-tree modules, use a temporary file to avoid
 # the situation of modules_install installing an invalid modules.order.
-%.ko: MODORDER := .modules.tmp
+MODORDER := .modules.tmp
+else
+single-all := $(addprefix $(KBUILD_EXTMOD)/, $(single-all)))
 endif
-%.ko: prepare FORCE
-	$(Q)$(MAKE) $(build)=$(build-dir) $(build-target:.ko=.mod)
-	$(Q)echo $(build-target) > $(MODORDER)
+
+# .ko is special because modpost is needed
+single-ko := $(sort $(filter %.ko, $(single-all)))
+single-non-ko := $(sort $(patsubst %.ko,%.mod, $(single-all)))
+
+$(single-ko): single_modpost
+	@:
+
+PHONY += single_modpost
+single_modpost: $(single-non-ko)
+	$(Q){ $(foreach m, $(single-ko), echo $m;) } > $(MODORDER)
 	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
-%/: prepare FORCE
-	$(Q)$(MAKE) KBUILD_MODULES=1 $(build)=$(build-dir) need-modorder=1
+
+KBUILD_MODULES := 1
+
+$(single-non-ko): descend
+	@:
+
+export KBUILD_SINGLE_TARGETS := $(single-non-ko)
+
+single-build = $(if $(filter-out $@/, $(single-non-ko)),1)
+
+endif
 
 # FIXME Should go into a make.lib or something
 # ===========================================================================
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index 3633558f7861..5e58db1d01b2 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -52,7 +52,7 @@ ifndef obj
 $(warning kbuild: Makefile.build is included improperly)
 endif
 
-ifeq ($(MAKECMDGOALS)$(need-modorder),)
+ifeq ($(need-modorder),)
 ifneq ($(obj-m),)
 $(warning $(patsubst %.o,'%.ko',$(obj-m)) will not be built even though obj-m is specified.)
 $(warning You cannot use subdir-y/m to visit a module Makefile. Use obj-y/m instead.)
@@ -76,11 +76,6 @@ endif
 
 mod-targets := $(patsubst %.o, %.mod, $(obj-m))
 
-__build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(extra-y)) \
-	 $(if $(KBUILD_MODULES),$(obj-m) $(mod-targets) $(modorder-target)) \
-	 $(subdir-ym) $(always)
-	@:
-
 # Linus' kernel sanity checking tool
 ifeq ($(KBUILD_CHECKSRC),1)
   quiet_cmd_checksrc       = CHECK   $<
@@ -487,12 +482,50 @@ targets += $(call intermediate_targets, .asn1.o, .asn1.c .asn1.h) \
 	   $(call intermediate_targets, .lex.o, .lex.c) \
 	   $(call intermediate_targets, .tab.o, .tab.c .tab.h)
 
+# Build
+# ---------------------------------------------------------------------------
+
+ifdef single-build
+
+curdir-single := $(sort $(foreach x, $(KBUILD_SINGLE_TARGETS), \
+			$(if $(filter $(x) $(basename $(x)).o, $(targets)), $(x))))
+
+# Handle single targets without any rule: show "Nothing to be done for ..." or
+# "No rule to make target ..." depending on whether the target exists.
+unknown-single := $(filter-out $(addsuffix /%, $(subdir-ym)), \
+			$(filter $(obj)/%, \
+				$(filter-out $(curdir-single), \
+					$(KBUILD_SINGLE_TARGETS))))
+
+__build: $(curdir-single) $(subdir-ym)
+ifneq ($(unknown-single),)
+	$(Q)$(MAKE) -f /dev/null $(unknown-single)
+endif
+	@:
+
+ifeq ($(curdir-single),)
+# Nothing to do in this directory. Do not include any .*.cmd file for speed-up
+targets :=
+else
+targets += $(curdir-single)
+endif
+
+else
+
+__build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(extra-y)) \
+	 $(if $(KBUILD_MODULES),$(obj-m) $(mod-targets) $(modorder-target)) \
+	 $(subdir-ym) $(always)
+	@:
+
+endif
+
 # Descending
 # ---------------------------------------------------------------------------
 
 PHONY += $(subdir-ym)
 $(subdir-ym):
 	$(Q)$(MAKE) $(build)=$@ \
+	$(if $(filter $@/, $(KBUILD_SINGLE_TARGETS)),single-build=) \
 	need-builtin=$(if $(filter $@/built-in.a, $(subdir-obj-y)),1) \
 	need-modorder=$(if $(need-modorder),$(if $(filter $@/modules.order, $(modorder)),1))
 
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 11/11] treewide: remove dummy Makefiles for single targets
  2019-08-10 15:52 [PATCH 00/11] kbuild: clean-ups and improvement of single targets Masahiro Yamada
                   ` (9 preceding siblings ...)
  2019-08-10 15:53 ` [PATCH 10/11] kbuild: make single targets work more correctly Masahiro Yamada
@ 2019-08-10 15:53 ` Masahiro Yamada
  2019-08-11  9:55   ` Leon Romanovsky
  2019-08-19 14:52 ` [PATCH 00/11] kbuild: clean-ups and improvement of " Masahiro Yamada
  11 siblings, 1 reply; 14+ messages in thread
From: Masahiro Yamada @ 2019-08-10 15:53 UTC (permalink / raw)
  To: linux-kbuild
  Cc: Christoph Hellwig, Sam Ravnborg, Masahiro Yamada,
	Alexei Starovoitov, Boris Pismenny, Daniel Borkmann,
	David S. Miller, Igor Russkikh, Jakub Kicinski, Leon Romanovsky,
	Martin KaFai Lau, Saeed Mahameed, Song Liu, Yonghong Song, bpf,
	linux-kernel, linux-rdma, netdev, oss-drivers

Now that the single target build descends into sub-directories
in the same ways as the normal build, these dummy Makefiles
are not needed any more.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---

 drivers/net/ethernet/aquantia/atlantic/hw_atl/Makefile      | 2 --
 drivers/net/ethernet/mellanox/mlx5/core/accel/Makefile      | 2 --
 drivers/net/ethernet/mellanox/mlx5/core/diag/Makefile       | 2 --
 drivers/net/ethernet/mellanox/mlx5/core/en/Makefile         | 2 --
 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/Makefile     | 1 -
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/Makefile   | 2 --
 drivers/net/ethernet/mellanox/mlx5/core/fpga/Makefile       | 2 --
 drivers/net/ethernet/mellanox/mlx5/core/ipoib/Makefile      | 2 --
 drivers/net/ethernet/mellanox/mlx5/core/lib/Makefile        | 2 --
 drivers/net/ethernet/netronome/nfp/bpf/Makefile             | 2 --
 drivers/net/ethernet/netronome/nfp/flower/Makefile          | 2 --
 drivers/net/ethernet/netronome/nfp/nfpcore/Makefile         | 2 --
 drivers/net/ethernet/netronome/nfp/nfpcore/nfp6000/Makefile | 2 --
 drivers/net/ethernet/netronome/nfp/nic/Makefile             | 2 --
 14 files changed, 27 deletions(-)
 delete mode 100644 drivers/net/ethernet/aquantia/atlantic/hw_atl/Makefile
 delete mode 100644 drivers/net/ethernet/mellanox/mlx5/core/accel/Makefile
 delete mode 100644 drivers/net/ethernet/mellanox/mlx5/core/diag/Makefile
 delete mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/Makefile
 delete mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/Makefile
 delete mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en_accel/Makefile
 delete mode 100644 drivers/net/ethernet/mellanox/mlx5/core/fpga/Makefile
 delete mode 100644 drivers/net/ethernet/mellanox/mlx5/core/ipoib/Makefile
 delete mode 100644 drivers/net/ethernet/mellanox/mlx5/core/lib/Makefile
 delete mode 100644 drivers/net/ethernet/netronome/nfp/bpf/Makefile
 delete mode 100644 drivers/net/ethernet/netronome/nfp/flower/Makefile
 delete mode 100644 drivers/net/ethernet/netronome/nfp/nfpcore/Makefile
 delete mode 100644 drivers/net/ethernet/netronome/nfp/nfpcore/nfp6000/Makefile
 delete mode 100644 drivers/net/ethernet/netronome/nfp/nic/Makefile

diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/Makefile b/drivers/net/ethernet/aquantia/atlantic/hw_atl/Makefile
deleted file mode 100644
index 805fa28f391a..000000000000
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# kbuild requires Makefile in a directory to build individual objects
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/accel/Makefile b/drivers/net/ethernet/mellanox/mlx5/core/accel/Makefile
deleted file mode 100644
index c78512eed8d7..000000000000
--- a/drivers/net/ethernet/mellanox/mlx5/core/accel/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-subdir-ccflags-y += -I$(src)/..
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/diag/Makefile b/drivers/net/ethernet/mellanox/mlx5/core/diag/Makefile
deleted file mode 100644
index c78512eed8d7..000000000000
--- a/drivers/net/ethernet/mellanox/mlx5/core/diag/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-subdir-ccflags-y += -I$(src)/..
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/Makefile b/drivers/net/ethernet/mellanox/mlx5/core/en/Makefile
deleted file mode 100644
index c78512eed8d7..000000000000
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-subdir-ccflags-y += -I$(src)/..
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/Makefile b/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/Makefile
deleted file mode 100644
index 5ee42991900a..000000000000
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-subdir-ccflags-y += -I$(src)/../..
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/Makefile b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/Makefile
deleted file mode 100644
index c78512eed8d7..000000000000
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-subdir-ccflags-y += -I$(src)/..
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fpga/Makefile b/drivers/net/ethernet/mellanox/mlx5/core/fpga/Makefile
deleted file mode 100644
index c78512eed8d7..000000000000
--- a/drivers/net/ethernet/mellanox/mlx5/core/fpga/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-subdir-ccflags-y += -I$(src)/..
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/ipoib/Makefile b/drivers/net/ethernet/mellanox/mlx5/core/ipoib/Makefile
deleted file mode 100644
index c78512eed8d7..000000000000
--- a/drivers/net/ethernet/mellanox/mlx5/core/ipoib/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-subdir-ccflags-y += -I$(src)/..
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lib/Makefile b/drivers/net/ethernet/mellanox/mlx5/core/lib/Makefile
deleted file mode 100644
index c78512eed8d7..000000000000
--- a/drivers/net/ethernet/mellanox/mlx5/core/lib/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-subdir-ccflags-y += -I$(src)/..
diff --git a/drivers/net/ethernet/netronome/nfp/bpf/Makefile b/drivers/net/ethernet/netronome/nfp/bpf/Makefile
deleted file mode 100644
index 805fa28f391a..000000000000
--- a/drivers/net/ethernet/netronome/nfp/bpf/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# kbuild requires Makefile in a directory to build individual objects
diff --git a/drivers/net/ethernet/netronome/nfp/flower/Makefile b/drivers/net/ethernet/netronome/nfp/flower/Makefile
deleted file mode 100644
index 805fa28f391a..000000000000
--- a/drivers/net/ethernet/netronome/nfp/flower/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# kbuild requires Makefile in a directory to build individual objects
diff --git a/drivers/net/ethernet/netronome/nfp/nfpcore/Makefile b/drivers/net/ethernet/netronome/nfp/nfpcore/Makefile
deleted file mode 100644
index 805fa28f391a..000000000000
--- a/drivers/net/ethernet/netronome/nfp/nfpcore/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# kbuild requires Makefile in a directory to build individual objects
diff --git a/drivers/net/ethernet/netronome/nfp/nfpcore/nfp6000/Makefile b/drivers/net/ethernet/netronome/nfp/nfpcore/nfp6000/Makefile
deleted file mode 100644
index 805fa28f391a..000000000000
--- a/drivers/net/ethernet/netronome/nfp/nfpcore/nfp6000/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# kbuild requires Makefile in a directory to build individual objects
diff --git a/drivers/net/ethernet/netronome/nfp/nic/Makefile b/drivers/net/ethernet/netronome/nfp/nic/Makefile
deleted file mode 100644
index 805fa28f391a..000000000000
--- a/drivers/net/ethernet/netronome/nfp/nic/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# kbuild requires Makefile in a directory to build individual objects
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH 11/11] treewide: remove dummy Makefiles for single targets
  2019-08-10 15:53 ` [PATCH 11/11] treewide: remove dummy Makefiles for single targets Masahiro Yamada
@ 2019-08-11  9:55   ` Leon Romanovsky
  0 siblings, 0 replies; 14+ messages in thread
From: Leon Romanovsky @ 2019-08-11  9:55 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: linux-kbuild, Christoph Hellwig, Sam Ravnborg,
	Alexei Starovoitov, Boris Pismenny, Daniel Borkmann,
	David S. Miller, Igor Russkikh, Jakub Kicinski, Martin KaFai Lau,
	Saeed Mahameed, Song Liu, Yonghong Song, bpf, linux-kernel,
	linux-rdma, netdev, oss-drivers

On Sun, Aug 11, 2019 at 12:53:07AM +0900, Masahiro Yamada wrote:
> Now that the single target build descends into sub-directories
> in the same ways as the normal build, these dummy Makefiles
> are not needed any more.
>
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> ---
>

It is hard to test/review/ack on this patch without seeing previous
patches, especially patch #10 where you changed logic of single targets.

Thanks

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 00/11] kbuild: clean-ups and improvement of single targets
  2019-08-10 15:52 [PATCH 00/11] kbuild: clean-ups and improvement of single targets Masahiro Yamada
                   ` (10 preceding siblings ...)
  2019-08-10 15:53 ` [PATCH 11/11] treewide: remove dummy Makefiles for single targets Masahiro Yamada
@ 2019-08-19 14:52 ` Masahiro Yamada
  11 siblings, 0 replies; 14+ messages in thread
From: Masahiro Yamada @ 2019-08-19 14:52 UTC (permalink / raw)
  To: Linux Kbuild mailing list
  Cc: Christoph Hellwig, Sam Ravnborg, Alexei Starovoitov,
	Boris Pismenny, Daniel Borkmann, David S. Miller, Igor Russkikh,
	Jakub Kicinski, Leon Romanovsky, Martin KaFai Lau, Michal Marek,
	Saeed Mahameed, Song Liu, Yonghong Song, bpf,
	Linux Kernel Mailing List, linux-rdma, Networking, oss-drivers

On Sun, Aug 11, 2019 at 12:55 AM Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:
>
>
> 01/11-09/11 are trivial clean-ups.
>
> 10/11 makes the single targets work more correctly.
>
> 11/11 cleans up Makefiles that have been added
> to work aroud the single target issues.
>
>
>
> Masahiro Yamada (11):
>   kbuild: move the Module.symvers check for external module build
>   kbuild: refactor part-of-module more
>   kbuild: fix modkern_aflags implementation
>   kbuild: remove 'make /' support
>   kbuild: remove meaningless 'targets' in ./Kbuild
>   kbuild: do not descend to ./Kbuild when cleaning
>   kbuild: unset variables in top Makefile instead of setting 0
>   kbuild: unify vmlinux-dirs and module-dirs rules
>   kbuild: unify clean-dirs rule for in-kernel and external module
>   kbuild: make single targets work more correctly
>   treewide: remove dummy Makefiles for single targets


Patch 01-09 applied.

10-11 have been superseded.



-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2019-08-19 14:53 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-10 15:52 [PATCH 00/11] kbuild: clean-ups and improvement of single targets Masahiro Yamada
2019-08-10 15:52 ` [PATCH 01/11] kbuild: move the Module.symvers check for external module build Masahiro Yamada
2019-08-10 15:52 ` [PATCH 02/11] kbuild: refactor part-of-module more Masahiro Yamada
2019-08-10 15:52 ` [PATCH 03/11] kbuild: fix modkern_aflags implementation Masahiro Yamada
2019-08-10 15:53 ` [PATCH 04/11] kbuild: remove 'make /' support Masahiro Yamada
2019-08-10 15:53 ` [PATCH 05/11] kbuild: remove meaningless 'targets' in ./Kbuild Masahiro Yamada
2019-08-10 15:53 ` [PATCH 06/11] kbuild: do not descend to ./Kbuild when cleaning Masahiro Yamada
2019-08-10 15:53 ` [PATCH 07/11] kbuild: unset variables in top Makefile instead of setting 0 Masahiro Yamada
2019-08-10 15:53 ` [PATCH 08/11] kbuild: unify vmlinux-dirs and module-dirs rules Masahiro Yamada
2019-08-10 15:53 ` [PATCH 09/11] kbuild: unify clean-dirs rule for in-kernel and external module Masahiro Yamada
2019-08-10 15:53 ` [PATCH 10/11] kbuild: make single targets work more correctly Masahiro Yamada
2019-08-10 15:53 ` [PATCH 11/11] treewide: remove dummy Makefiles for single targets Masahiro Yamada
2019-08-11  9:55   ` Leon Romanovsky
2019-08-19 14:52 ` [PATCH 00/11] kbuild: clean-ups and improvement of " Masahiro Yamada

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).