diff options
author | Masahiro Yamada <yamada.masahiro@socionext.com> | 2019-06-22 15:55:20 +0900 |
---|---|---|
committer | Masahiro Yamada <yamada.masahiro@socionext.com> | 2019-06-24 03:43:03 +0900 |
commit | 7ff4f0805eb5056662093b9886a819d2352e188b (patch) | |
tree | 54516fa447465a436f25711024295857415399f0 | |
parent | a222061b85234d8a44486a46bd4df7e2cda52385 (diff) |
kbuild: fix 'No such file or directory' warning for headers_install
Since commit d5470d14431e ("kbuild: re-implement Makefile.headersinst
without recursion"), headers_install emits an ugly warning.
$ make headers_install
[ snip ]
UPD include/generated/uapi/linux/version.h
find: ‘./include/uapi/Kbuild’: No such file or directory
HDRINST usr/include/video/uvesafb.h
...
This happens for GNU Make <= 4.2.1
When I wrote that commit, I missed this warning because I was using the
state-of-the-art Make version compiled from the git tree.
$(wildcard $(src)/*/) is intended to match to only existing directories
since it has a trailing slash, but actually matches to regular files too.
(include/uapi/Kbuild in this case)
This is a bug of GNU Make, and was fixed by:
| commit b7acb10e86dc8f5fdf2a2bbd87e1059c315e31d6
| Author: spagoveanu@gmail.com <spagoveanu@gmail.com>
| Date: Wed Jun 20 02:03:48 2018 +0300
|
| * src/dir.c: Preserve glob d_type field
We need to cater to old Make versions. Add '$(filter %/,...) to filter
out the regular files.
Fixes: d5470d14431e ("kbuild: re-implement Makefile.headersinst without recursion")
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
-rw-r--r-- | scripts/Makefile.headersinst | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/scripts/Makefile.headersinst b/scripts/Makefile.headersinst index d2b572a7a628..1b405a7ed14f 100644 --- a/scripts/Makefile.headersinst +++ b/scripts/Makefile.headersinst @@ -20,8 +20,10 @@ dst := usr/include -include $(src)/Kbuild -src-subdirs := $(patsubst $(src)/%/,%,$(wildcard $(src)/*/)) -gen-subdirs := $(patsubst $(gen)/%/,%,$(wildcard $(gen)/*/)) +# $(filter %/, ...) is a workaround for GNU Make <= 4.2.1, where +# $(wildcard $(src)/*/) contains not only directories but also regular files. +src-subdirs := $(patsubst $(src)/%/,%,$(filter %/, $(wildcard $(src)/*/))) +gen-subdirs := $(patsubst $(gen)/%/,%,$(filter %/, $(wildcard $(gen)/*/))) all-subdirs := $(sort $(src-subdirs) $(gen-subdirs)) src-headers := $(if $(src-subdirs), $(shell cd $(src) && find $(src-subdirs) -name '*.h')) |