xref: /kvm-unit-tests/scripts/asm-offsets.mak (revision 4a18bde1663489b27e679142e56809c1fd49b90d)
1d3aacb4fSAndrew Jones#
2d3aacb4fSAndrew Jones# asm-offsets adapted from the kernel, see
3d3aacb4fSAndrew Jones#   Kbuild
4d3aacb4fSAndrew Jones#   scripts/Kbuild.include
5d3aacb4fSAndrew Jones#   scripts/Makefile.build
6d3aacb4fSAndrew Jones#
7d3aacb4fSAndrew Jones#   Authors: Andrew Jones <drjones@redhat.com>
8d3aacb4fSAndrew Jones#
9d3aacb4fSAndrew Jones
10d3aacb4fSAndrew Jonesdefine sed-y
11d3aacb4fSAndrew Jones	"/^->/{s:->#\(.*\):/* \1 */:; \
12d3aacb4fSAndrew Jones	s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
13d3aacb4fSAndrew Jones	s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
14d3aacb4fSAndrew Jones	s:->::; p;}"
15d3aacb4fSAndrew Jonesendef
16d3aacb4fSAndrew Jones
17d3aacb4fSAndrew Jonesdefine make_asm_offsets
18d3aacb4fSAndrew Jones	(set -e; \
19d3aacb4fSAndrew Jones	 echo "#ifndef __ASM_OFFSETS_H__"; \
20d3aacb4fSAndrew Jones	 echo "#define __ASM_OFFSETS_H__"; \
21d3aacb4fSAndrew Jones	 echo "/*"; \
22d3aacb4fSAndrew Jones	 echo " * Generated file. DO NOT MODIFY."; \
23d3aacb4fSAndrew Jones	 echo " *"; \
24d3aacb4fSAndrew Jones	 echo " */"; \
25d3aacb4fSAndrew Jones	 echo ""; \
26d3aacb4fSAndrew Jones	 sed -ne $(sed-y) $<; \
27d3aacb4fSAndrew Jones	 echo ""; \
28d3aacb4fSAndrew Jones	 echo "#endif" ) > $@
29d3aacb4fSAndrew Jonesendef
30d3aacb4fSAndrew Jones
31d3aacb4fSAndrew Jones$(asm-offsets:.h=.s): $(asm-offsets:.h=.c)
32d3aacb4fSAndrew Jones	$(CC) $(CFLAGS) -fverbose-asm -S -o $@ $<
33d3aacb4fSAndrew Jones
34d3aacb4fSAndrew Jones$(asm-offsets): $(asm-offsets:.h=.s)
35d3aacb4fSAndrew Jones	$(call make_asm_offsets)
36*4a18bde1SAlex Bennée	cp -f $(asm-offsets) lib/generated/
37*4a18bde1SAlex Bennée
38*4a18bde1SAlex BennéeOBJDIRS += lib/generated
39d3aacb4fSAndrew Jones
40d3aacb4fSAndrew Jonesasm_offsets_clean:
41d3aacb4fSAndrew Jones	$(RM) $(asm-offsets) $(asm-offsets:.h=.s) \
42d3aacb4fSAndrew Jones	      $(addprefix lib/generated/,$(notdir $(asm-offsets)))
43d3aacb4fSAndrew Jones
44