History

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.

Matthias Kaehlcke committed 9 years ago

Commit ebf003f1 parent 6748cb34 files · +32 −75Browse files

Showing the changes to scripts (2 of 4 files). Show all

Unified · Split

2 files
  1. scripts/Makefile.lib +28 −0
  2. scripts/mod/Makefile +2 −26
scripts/Makefile.lib+28−0
@@ -408,3 +408,31 @@ quiet_cmd_xzmisc = XZMISC $@ · 407 unmodified lines
408408 cmd_xzmisc = (cat $(filter-out FORCE,$^) | \
409409 xz --check=crc32 --lzma2=dict=1MiB) > $@ || \
410410 (rm -f $@ ; false)
411+
412+# ASM offsets
413+# ---------------------------------------------------------------------------
414+
415+# Default sed regexp - multiline due to syntax constraints
416+define sed-offsets
417+ "/^->/{s:->#\(.*\):/* \1 */:; \
418+ s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
419+ s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
420+ s:->::; p;}"
421+endef
422+
423+# Use filechk to avoid rebuilds when a header changes, but the resulting file
424+# does not
425+define filechk_offsets
426+ (set -e; \
427+ echo "#ifndef $2"; \
428+ echo "#define $2"; \
429+ echo "/*"; \
430+ echo " * DO NOT MODIFY."; \
431+ echo " *"; \
432+ echo " * This file was generated by Kbuild"; \
433+ echo " */"; \
434+ echo ""; \
435+ sed -ne $(sed-offsets); \
436+ echo ""; \
437+ echo "#endif" )
438+endef
scripts/mod/Makefile+2−26
@@ -7,32 +7,8 @@ modpost-objs := modpost.o file2alias.o sumversion.o · 6 unmodified lines
77
88 devicetable-offsets-file := devicetable-offsets.h
99
10−define sed-y
11− "/^->/{s:->#\(.*\):/* \1 */:; \
12− s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
13− s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
14− s:->::; p;}"
15−endef
16−
17−quiet_cmd_offsets = GEN $@
18−define cmd_offsets
19− (set -e; \
20− echo "#ifndef __DEVICETABLE_OFFSETS_H__"; \
21− echo "#define __DEVICETABLE_OFFSETS_H__"; \
22− echo "/*"; \
23− echo " * DO NOT MODIFY."; \
24− echo " *"; \
25− echo " * This file was generated by Kbuild"; \
26− echo " *"; \
27− echo " */"; \
28− echo ""; \
29− sed -ne $(sed-y) $<; \
30− echo ""; \
31− echo "#endif" ) > $@
32−endef
33−
34−$(obj)/$(devicetable-offsets-file): $(obj)/devicetable-offsets.s
35− $(call if_changed,offsets)
10+$(obj)/$(devicetable-offsets-file): $(obj)/devicetable-offsets.s FORCE
11+ $(call filechk,offsets,__DEVICETABLE_OFFSETS_H__)
3612
3713 targets += $(devicetable-offsets-file) devicetable-offsets.s
3814

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t