summaryrefslogtreecommitdiff
path: root/scripts/Makefile.lib
diff options
context:
space:
mode:
authorMatthias Kaehlcke <mka@chromium.org>2017-04-12 22:43:52 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-11-27 18:07:57 +0300
commitc7288b457145b8e9a3ffbee1c0fb78afeb9d3693 (patch)
tree34330904819f67f8aee43fb56b4d5d7a5971da9d /scripts/Makefile.lib
parent3ebd7941d0bdc85ebfc6eaa58fbf53e0f26e00e3 (diff)
downloadlinux-c7288b457145b8e9a3ffbee1c0fb78afeb9d3693.tar.xz
kbuild: Consolidate header generation from ASM offset information
commit ebf003f0cfb3705e60d40dedc3ec949176c741af upstream. Largely redundant code is used in different places to generate C headers from offset information extracted from assembly language output. Consolidate the code in Makefile.lib and use this instead. Signed-off-by: Matthias Kaehlcke <mka@chromium.org> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'scripts/Makefile.lib')
-rw-r--r--scripts/Makefile.lib28
1 files changed, 28 insertions, 0 deletions
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index a2d0e6d32659..18a1c8381ce0 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -388,3 +388,31 @@ quiet_cmd_xzmisc = XZMISC $@
cmd_xzmisc = (cat $(filter-out FORCE,$^) | \
xz --check=crc32 --lzma2=dict=1MiB) > $@ || \
(rm -f $@ ; false)
+
+# ASM offsets
+# ---------------------------------------------------------------------------
+
+# Default sed regexp - multiline due to syntax constraints
+define sed-offsets
+ "/^->/{s:->#\(.*\):/* \1 */:; \
+ s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
+ s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
+ s:->::; p;}"
+endef
+
+# Use filechk to avoid rebuilds when a header changes, but the resulting file
+# does not
+define filechk_offsets
+ (set -e; \
+ echo "#ifndef $2"; \
+ echo "#define $2"; \
+ echo "/*"; \
+ echo " * DO NOT MODIFY."; \
+ echo " *"; \
+ echo " * This file was generated by Kbuild"; \
+ echo " */"; \
+ echo ""; \
+ sed -ne $(sed-offsets); \
+ echo ""; \
+ echo "#endif" )
+endef