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 11132f6f18SThomas Huth 's:^[[:space:]]*\.ascii[[:space:]]*"\(.*\)".*:\1:; \ 12132f6f18SThomas Huth /^->/{s:->#\(.*\):/* \1 */:; \ 13d3aacb4fSAndrew Jones s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \ 14d3aacb4fSAndrew Jones s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \ 15132f6f18SThomas Huth s:->::; p;}' 16d3aacb4fSAndrew Jonesendef 17d3aacb4fSAndrew Jones 18*b9423a4fSClément Légerdefine asm_offset_name 19*b9423a4fSClément Léger $(shell echo $(notdir $(1)) | tr [:lower:]- [:upper:]_) 20*b9423a4fSClément Légerendef 21*b9423a4fSClément Léger 22d3aacb4fSAndrew Jonesdefine make_asm_offsets 23d3aacb4fSAndrew Jones (set -e; \ 24*b9423a4fSClément Léger echo "#ifndef __$(strip $(asm_offset_name))_H__"; \ 25*b9423a4fSClément Léger echo "#define __$(strip $(asm_offset_name))_H__"; \ 26d3aacb4fSAndrew Jones echo "/*"; \ 27d3aacb4fSAndrew Jones echo " * Generated file. DO NOT MODIFY."; \ 28d3aacb4fSAndrew Jones echo " *"; \ 29d3aacb4fSAndrew Jones echo " */"; \ 30d3aacb4fSAndrew Jones echo ""; \ 31d3aacb4fSAndrew Jones sed -ne $(sed-y) $<; \ 32d3aacb4fSAndrew Jones echo ""; \ 33d3aacb4fSAndrew Jones echo "#endif" ) > $@ 34d3aacb4fSAndrew Jonesendef 35d3aacb4fSAndrew Jones 36*b9423a4fSClément Légerdefine gen_asm_offsets_rules 37*b9423a4fSClément Léger$(1).s: $(1).c 38*b9423a4fSClément Léger $(CC) $(CFLAGS) -fverbose-asm -S -o $$@ $$< 39d3aacb4fSAndrew Jones 40*b9423a4fSClément Léger$(1).h: $(1).s 41*b9423a4fSClément Léger $$(call make_asm_offsets,$(1)) 42*b9423a4fSClément Léger cp -f $$@ lib/generated/ 43*b9423a4fSClément Légerendef 44*b9423a4fSClément Léger 45*b9423a4fSClément Léger$(foreach o,$(asm-offsets),$(eval $(call gen_asm_offsets_rules, $(o:.h=)))) 464a18bde1SAlex Bennée 474a18bde1SAlex BennéeOBJDIRS += lib/generated 48d3aacb4fSAndrew Jones 49d3aacb4fSAndrew Jonesasm_offsets_clean: 50d3aacb4fSAndrew Jones $(RM) $(asm-offsets) $(asm-offsets:.h=.s) \ 51d3aacb4fSAndrew Jones $(addprefix lib/generated/,$(notdir $(asm-offsets))) 52d3aacb4fSAndrew Jones 53