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