path: root/Makefile
diff options
authorMasahiro Yamada <>2021-06-02 23:02:13 +0900
committerMasahiro Yamada <>2021-06-17 09:50:59 +0900
commit74ee585b7eecd98be3650e677625a0ee588d08e0 (patch)
treee62e213c8cbf35b48322f18149ffd2a902464da6 /Makefile
parentc7c90e121e992eefdf07945e5a6e9cf097b29463 (diff)
kbuild: remove trailing slashes from $(KBUILD_EXTMOD)
M= (or KBUILD_EXTMOD) generally expects a directory path without any trailing slashes, like M=a/b/c. If you add a trailing slash, like M=a/b/c/, you will get ugly build logs (two slashes in a series), but it still works fine as long as it is consistent between 'make modules' and 'make modules_install'. The following commands correctly build and install the modules. $ make M=a/b/c/ modules $ sudo make M=a/b/c/ modules_install Since commit ccae4cfa7bfb ("kbuild: refactor scripts/Makefile.modinst"), a problem happens if you add a trailing slash only for modules_install. $ make M=a/b/c modules $ sudo make M=a/b/c/ modules_install No module is installed in this case, Johannes Berg reported. [1] Trim any trailing slashes from $(KBUILD_EXTMOD). I used the 'dirname' command to remove all the trailing slashes in case someone adds more slashes like M=a/b/c/////. The Make's built-in function, $(dir ...) cannot take care of such a case. [1]: Fixes: ccae4cfa7bfb ("kbuild: refactor scripts/Makefile.modinst") Reported-by: Johannes Berg <> Signed-off-by: Masahiro Yamada <>
Diffstat (limited to 'Makefile')
1 files changed, 5 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 504327207d66..cbab0dc53065 100644
--- a/Makefile
+++ b/Makefile
@@ -129,6 +129,11 @@ endif
$(if $(word 2, $(KBUILD_EXTMOD)), \
$(error building multiple external modules is not supported))
+# Remove trailing slashes
+ifneq ($(filter %/, $(KBUILD_EXTMOD)),)
+KBUILD_EXTMOD := $(shell dirname $(KBUILD_EXTMOD).)
# Kbuild will save output files in the current working directory.