mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2024-12-29 17:23:36 +00:00
kbuild: Consolidate header generation from ASM offset information
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>
This commit is contained in:
parent
6748cb3c29
commit
ebf003f0cf
25
Kbuild
25
Kbuild
@ -7,31 +7,6 @@
|
|||||||
# 4) Check for missing system calls
|
# 4) Check for missing system calls
|
||||||
# 5) Generate constants.py (may need bounds.h)
|
# 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
|
# 1) Generate bounds.h
|
||||||
|
|
||||||
|
@ -50,32 +50,10 @@ CFLAGS_traps.o += -mfixed-range=f2-f5,f16-f31
|
|||||||
# The gate DSO image is built using a special linker script.
|
# The gate DSO image is built using a special linker script.
|
||||||
include $(src)/Makefile.gate
|
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
|
# 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
|
arch/$(SRCARCH)/kernel/nr-irqs.s: arch/$(SRCARCH)/kernel/nr-irqs.c
|
||||||
$(Q)mkdir -p $(dir $@)
|
$(Q)mkdir -p $(dir $@)
|
||||||
$(call if_changed_dep,cc_s_c)
|
$(call if_changed_dep,cc_s_c)
|
||||||
|
|
||||||
include/generated/nr-irqs.h: arch/$(SRCARCH)/kernel/nr-irqs.s
|
include/generated/nr-irqs.h: arch/$(SRCARCH)/kernel/nr-irqs.s FORCE
|
||||||
$(Q)mkdir -p $(dir $@)
|
$(call filechk,offsets,__ASM_NR_IRQS_H__)
|
||||||
$(call cmd,nr_irqs)
|
|
||||||
|
@ -408,3 +408,31 @@ quiet_cmd_xzmisc = XZMISC $@
|
|||||||
cmd_xzmisc = (cat $(filter-out FORCE,$^) | \
|
cmd_xzmisc = (cat $(filter-out FORCE,$^) | \
|
||||||
xz --check=crc32 --lzma2=dict=1MiB) > $@ || \
|
xz --check=crc32 --lzma2=dict=1MiB) > $@ || \
|
||||||
(rm -f $@ ; false)
|
(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
|
||||||
|
@ -7,32 +7,8 @@ modpost-objs := modpost.o file2alias.o sumversion.o
|
|||||||
|
|
||||||
devicetable-offsets-file := devicetable-offsets.h
|
devicetable-offsets-file := devicetable-offsets.h
|
||||||
|
|
||||||
define sed-y
|
$(obj)/$(devicetable-offsets-file): $(obj)/devicetable-offsets.s FORCE
|
||||||
"/^->/{s:->#\(.*\):/* \1 */:; \
|
$(call filechk,offsets,__DEVICETABLE_OFFSETS_H__)
|
||||||
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)
|
|
||||||
|
|
||||||
targets += $(devicetable-offsets-file) devicetable-offsets.s
|
targets += $(devicetable-offsets-file) devicetable-offsets.s
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user