blob: a5fdbf5d6d6dced31268bdb3f2f8e950c3e2c365 [file] [log] [blame]
#
# asm-offsets adapted from the kernel, see
# Kbuild
# scripts/Kbuild.include
# scripts/Makefile.build
#
# Authors: Andrew Jones <drjones@redhat.com>
#
define sed-y
's:^[[:space:]]*\.ascii[[:space:]]*"\(.*\)".*:\1:; \
/^->/{s:->#\(.*\):/* \1 */:; \
s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
s:->::; p;}'
endef
define asm_offset_name
$(shell echo $(notdir $(1)) | tr [:lower:]- [:upper:]_)
endef
define make_asm_offsets
(set -e; \
echo "#ifndef __$(strip $(asm_offset_name))_H__"; \
echo "#define __$(strip $(asm_offset_name))_H__"; \
echo "/*"; \
echo " * Generated file. DO NOT MODIFY."; \
echo " *"; \
echo " */"; \
echo ""; \
sed -ne $(sed-y) $<; \
echo ""; \
echo "#endif" ) > $@
endef
define gen_asm_offsets_rules
$(1).s: $(1).c
$(CC) $(CFLAGS) -fverbose-asm -S -o $$@ $$<
$(1).h: $(1).s
$$(call make_asm_offsets,$(1))
cp -f $$@ lib/generated/
endef
$(foreach o,$(asm-offsets),$(eval $(call gen_asm_offsets_rules, $(o:.h=))))
OBJDIRS += lib/generated
asm_offsets_clean:
$(RM) $(asm-offsets) $(asm-offsets:.h=.s) \
$(addprefix lib/generated/,$(notdir $(asm-offsets)))