1# 2# Kbuild for top-level directory of U-Boot 3# This file takes care of the following: 4# 1) Generate generic-asm-offsets.h 5# 2) Generate asm-offsets.h 6 7##### 8# 1) Generate generic-asm-offsets.h 9 10generic-offsets-file := include/generated/generic-asm-offsets.h 11 12always := $(generic-offsets-file) 13targets := $(generic-offsets-file) lib/asm-offsets.s 14 15quiet_cmd_generic-offsets = GEN $@ 16define cmd_generic-offsets 17 (set -e; \ 18 echo "#ifndef __GENERIC_ASM_OFFSETS_H__"; \ 19 echo "#define __GENERIC_ASM_OFFSETS_H__"; \ 20 echo "/*"; \ 21 echo " * DO NOT MODIFY."; \ 22 echo " *"; \ 23 echo " * This file was generated by Kbuild"; \ 24 echo " *"; \ 25 echo " */"; \ 26 echo ""; \ 27 sed -ne $(sed-y) $<; \ 28 echo ""; \ 29 echo "#endif" ) > $@ 30endef 31 32# We use internal kbuild rules to avoid the "is up to date" message from make 33lib/asm-offsets.s: lib/asm-offsets.c FORCE 34 $(Q)mkdir -p $(dir $@) 35 $(call if_changed_dep,cc_s_c) 36 37$(obj)/$(generic-offsets-file): lib/asm-offsets.s Kbuild 38 $(Q)mkdir -p $(dir $@) 39 $(call cmd,generic-offsets) 40 41##### 42# 2) Generate asm-offsets.h 43# 44 45ifneq ($(wildcard $(srctree)/arch/$(ARCH)/lib/asm-offsets.c),) 46offsets-file := include/generated/asm-offsets.h 47endif 48 49always += $(offsets-file) 50targets += $(offsets-file) 51targets += arch/$(ARCH)/lib/asm-offsets.s 52 53 54# Default sed regexp - multiline due to syntax constraints 55define sed-y 56 "s:[[:space:]]*\.ascii[[:space:]]*\"\(.*\)\":\1:; \ 57 /^->/{s:->#\(.*\):/* \1 */:; \ 58 s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \ 59 s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \ 60 s:->::; p;}" 61endef 62 63CFLAGS_asm-offsets.o := -DDO_DEPS_ONLY 64 65quiet_cmd_offsets = GEN $@ 66define cmd_offsets 67 (set -e; \ 68 echo "#ifndef __ASM_OFFSETS_H__"; \ 69 echo "#define __ASM_OFFSETS_H__"; \ 70 echo "/*"; \ 71 echo " * DO NOT MODIFY."; \ 72 echo " *"; \ 73 echo " * This file was generated by Kbuild"; \ 74 echo " *"; \ 75 echo " */"; \ 76 echo ""; \ 77 sed -ne $(sed-y) $<; \ 78 echo ""; \ 79 echo "#endif" ) > $@ 80endef 81 82# We use internal kbuild rules to avoid the "is up to date" message from make 83arch/$(ARCH)/lib/asm-offsets.s: arch/$(ARCH)/lib/asm-offsets.c FORCE 84 $(Q)mkdir -p $(dir $@) 85 $(call if_changed_dep,cc_s_c) 86 87$(obj)/$(offsets-file): arch/$(ARCH)/lib/asm-offsets.s Kbuild 88 $(call cmd,offsets) 89