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