Messages in this thread Patch in this message | | | From | Masahiro Yamada <> | Subject | [PATCH 3/3] kbuild: show hint if subdir-y/m is used to visit module Makefile | Date | Tue, 6 Aug 2019 19:03:23 +0900 |
| |
Since commit ff9b45c55b26 ("kbuild: modpost: read modules.order instead of $(MODVERDIR)/*.mod"), a module is no longer built in the following pattern:
[Makefile] subdir-y := some-module
[some-module/Makefile] obj-m := some-module.o
You cannot write Makefile this way in upstream because modules.order is not correctly generated. subdir-y is used to descend to a sub-directory that builds tools, device trees, etc.
For external modules, the modules order does not matter. So, the Makefile above was known to work.
I believe the Makefile should be re-written as follows:
[Makefile] obj-m := some-module/
[some-module/Makefile] obj-m := some-module.o
However, people will have no idea if their Makefile suddenly stops working. In fact, I received questions from multiple people.
Show a warning if obj-m is specified in a Makefile visited by subdir-y or subdir-m.
Cc: Jan Kiszka <jan.kiszka@siemens.com> Cc: Tom Stonecypher <thomas.edwardx.stonecypher@intel.com> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> ---
scripts/Makefile.build | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/scripts/Makefile.build b/scripts/Makefile.build index 37a1d2cd49d4..4a26c7ed9198 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build @@ -52,6 +52,13 @@ ifndef obj $(warning kbuild: Makefile.build is included improperly) endif +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.) +endif +endif + # =========================================================================== ifneq ($(strip $(lib-y) $(lib-m) $(lib-)),) -- 2.17.1
| |