| From foo@baz Wed Nov 21 18:50:25 CET 2018 |
| From: Matthias Kaehlcke <mka@chromium.org> |
| Date: Wed, 12 Apr 2017 12:43:52 -0700 |
| Subject: kbuild: Consolidate header generation from ASM offset information |
| |
| From: Matthias Kaehlcke <mka@chromium.org> |
| |
| 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: Nick Desaulniers <ndesaulniers@google.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| Kbuild | 25 ------------------------- |
| arch/ia64/kernel/Makefile | 26 ++------------------------ |
| scripts/Makefile.lib | 28 ++++++++++++++++++++++++++++ |
| scripts/mod/Makefile | 28 ++-------------------------- |
| 4 files changed, 32 insertions(+), 75 deletions(-) |
| |
| --- a/Kbuild |
| +++ b/Kbuild |
| @@ -7,31 +7,6 @@ |
| # 4) Check for missing system calls |
| # 5) Generate constants.py (may need bounds.h) |
| |
| -# Default sed regexp - multiline due to syntax constraints |
| -define sed-y |
| - "/^->/{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-y); \ |
| - echo ""; \ |
| - echo "#endif" ) |
| -endef |
| - |
| ##### |
| # 1) Generate bounds.h |
| |
| --- a/arch/ia64/kernel/Makefile |
| +++ b/arch/ia64/kernel/Makefile |
| @@ -50,32 +50,10 @@ CFLAGS_traps.o += -mfixed-range=f2-f5,f |
| # The gate DSO image is built using a special linker script. |
| include $(src)/Makefile.gate |
| |
| -# Calculate NR_IRQ = max(IA64_NATIVE_NR_IRQS, XEN_NR_IRQS, ...) based on config |
| -define sed-y |
| - "/^->/{s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; s:->::; p;}" |
| -endef |
| -quiet_cmd_nr_irqs = GEN $@ |
| -define cmd_nr_irqs |
| - (set -e; \ |
| - echo "#ifndef __ASM_NR_IRQS_H__"; \ |
| - echo "#define __ASM_NR_IRQS_H__"; \ |
| - echo "/*"; \ |
| - echo " * DO NOT MODIFY."; \ |
| - echo " *"; \ |
| - echo " * This file was generated by Kbuild"; \ |
| - echo " *"; \ |
| - echo " */"; \ |
| - echo ""; \ |
| - sed -ne $(sed-y) $<; \ |
| - echo ""; \ |
| - echo "#endif" ) > $@ |
| -endef |
| - |
| # We use internal kbuild rules to avoid the "is up to date" message from make |
| arch/$(SRCARCH)/kernel/nr-irqs.s: arch/$(SRCARCH)/kernel/nr-irqs.c |
| $(Q)mkdir -p $(dir $@) |
| $(call if_changed_dep,cc_s_c) |
| |
| -include/generated/nr-irqs.h: arch/$(SRCARCH)/kernel/nr-irqs.s |
| - $(Q)mkdir -p $(dir $@) |
| - $(call cmd,nr_irqs) |
| +include/generated/nr-irqs.h: arch/$(SRCARCH)/kernel/nr-irqs.s FORCE |
| + $(call filechk,offsets,__ASM_NR_IRQS_H__) |
| --- a/scripts/Makefile.lib |
| +++ b/scripts/Makefile.lib |
| @@ -408,3 +408,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 |
| --- a/scripts/mod/Makefile |
| +++ b/scripts/mod/Makefile |
| @@ -7,32 +7,8 @@ modpost-objs := modpost.o file2alias.o s |
| |
| devicetable-offsets-file := devicetable-offsets.h |
| |
| -define sed-y |
| - "/^->/{s:->#\(.*\):/* \1 */:; \ |
| - s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \ |
| - s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \ |
| - s:->::; p;}" |
| -endef |
| - |
| -quiet_cmd_offsets = GEN $@ |
| -define cmd_offsets |
| - (set -e; \ |
| - echo "#ifndef __DEVICETABLE_OFFSETS_H__"; \ |
| - echo "#define __DEVICETABLE_OFFSETS_H__"; \ |
| - echo "/*"; \ |
| - echo " * DO NOT MODIFY."; \ |
| - echo " *"; \ |
| - echo " * This file was generated by Kbuild"; \ |
| - echo " *"; \ |
| - echo " */"; \ |
| - echo ""; \ |
| - sed -ne $(sed-y) $<; \ |
| - echo ""; \ |
| - echo "#endif" ) > $@ |
| -endef |
| - |
| -$(obj)/$(devicetable-offsets-file): $(obj)/devicetable-offsets.s |
| - $(call if_changed,offsets) |
| +$(obj)/$(devicetable-offsets-file): $(obj)/devicetable-offsets.s FORCE |
| + $(call filechk,offsets,__DEVICETABLE_OFFSETS_H__) |
| |
| targets += $(devicetable-offsets-file) devicetable-offsets.s |
| |