xref: /kvm-unit-tests/scripts/asm-offsets.mak (revision fd6aada0dac74cf00e2d0b701362e1f89d2c28e3)
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
38OBJDIRS += lib/generated
39
40asm_offsets_clean:
41	$(RM) $(asm-offsets) $(asm-offsets:.h=.s) \
42	      $(addprefix lib/generated/,$(notdir $(asm-offsets)))
43
44