xref: /kvm-unit-tests/scripts/asm-offsets.mak (revision 6ed97c50871a0d85e9ef5e1f4da96bc4263b4b97)
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:->#\(.*\):/* \1 */:; \
12	s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
13	s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
14	s:->::; p;}"
15endef
16
17define make_asm_offsets
18	(set -e; \
19	 echo "#ifndef __ASM_OFFSETS_H__"; \
20	 echo "#define __ASM_OFFSETS_H__"; \
21	 echo "/*"; \
22	 echo " * Generated file. DO NOT MODIFY."; \
23	 echo " *"; \
24	 echo " */"; \
25	 echo ""; \
26	 sed -ne $(sed-y) $<; \
27	 echo ""; \
28	 echo "#endif" ) > $@
29endef
30
31$(asm-offsets:.h=.s): $(asm-offsets:.h=.c)
32	$(CC) $(CFLAGS) -fverbose-asm -S -o $@ $<
33
34$(asm-offsets): $(asm-offsets:.h=.s)
35	$(call make_asm_offsets)
36	cp -f $(asm-offsets) lib/generated
37
38asm_offsets_clean:
39	$(RM) $(asm-offsets) $(asm-offsets:.h=.s) \
40	      $(addprefix lib/generated/,$(notdir $(asm-offsets)))
41
42