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 asm_offset_name 19 $(shell echo $(notdir $(1)) | tr [:lower:]- [:upper:]_) 20endef 21 22define make_asm_offsets 23 (set -e; \ 24 echo "#ifndef __$(strip $(asm_offset_name))_H__"; \ 25 echo "#define __$(strip $(asm_offset_name))_H__"; \ 26 echo "/*"; \ 27 echo " * Generated file. DO NOT MODIFY."; \ 28 echo " *"; \ 29 echo " */"; \ 30 echo ""; \ 31 sed -ne $(sed-y) $<; \ 32 echo ""; \ 33 echo "#endif" ) > $@ 34endef 35 36define gen_asm_offsets_rules 37$(1).s: $(1).c 38 $(CC) $(CFLAGS) -fverbose-asm -S -o $$@ $$< 39 40$(1).h: $(1).s 41 $$(call make_asm_offsets,$(1)) 42 cp -f $$@ lib/generated/ 43endef 44 45$(foreach o,$(asm-offsets),$(eval $(call gen_asm_offsets_rules, $(o:.h=)))) 46 47OBJDIRS += lib/generated 48 49asm_offsets_clean: 50 $(RM) $(asm-offsets) $(asm-offsets:.h=.s) \ 51 $(addprefix lib/generated/,$(notdir $(asm-offsets))) 52 53