1*4882a593Smuzhiyun# 2*4882a593Smuzhiyun# Kbuild for top-level directory of U-Boot 3*4882a593Smuzhiyun# This file takes care of the following: 4*4882a593Smuzhiyun# 1) Generate generic-asm-offsets.h 5*4882a593Smuzhiyun# 2) Generate asm-offsets.h 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun# Default sed regexp - multiline due to syntax constraints 8*4882a593Smuzhiyundefine sed-y 9*4882a593Smuzhiyun "s:[[:space:]]*\.ascii[[:space:]]*\"\(.*\)\":\1:; \ 10*4882a593Smuzhiyun /^->/{s:->#\(.*\):/* \1 */:; \ 11*4882a593Smuzhiyun s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \ 12*4882a593Smuzhiyun s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \ 13*4882a593Smuzhiyun s:->::; p;}" 14*4882a593Smuzhiyunendef 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun# Use filechk to avoid rebuilds when a header changes, but the resulting file 17*4882a593Smuzhiyun# does not 18*4882a593Smuzhiyundefine filechk_offsets 19*4882a593Smuzhiyun (set -e; \ 20*4882a593Smuzhiyun echo "#ifndef $2"; \ 21*4882a593Smuzhiyun echo "#define $2"; \ 22*4882a593Smuzhiyun echo "/*"; \ 23*4882a593Smuzhiyun echo " * DO NOT MODIFY."; \ 24*4882a593Smuzhiyun echo " *"; \ 25*4882a593Smuzhiyun echo " * This file was generated by Kbuild"; \ 26*4882a593Smuzhiyun echo " */"; \ 27*4882a593Smuzhiyun echo ""; \ 28*4882a593Smuzhiyun sed -ne $(sed-y); \ 29*4882a593Smuzhiyun echo ""; \ 30*4882a593Smuzhiyun echo "#endif" ) 31*4882a593Smuzhiyunendef 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun##### 34*4882a593Smuzhiyun# 1) Generate generic-asm-offsets.h 35*4882a593Smuzhiyun 36*4882a593Smuzhiyungeneric-offsets-file := include/generated/generic-asm-offsets.h 37*4882a593Smuzhiyun 38*4882a593Smuzhiyunalways := $(generic-offsets-file) 39*4882a593Smuzhiyuntargets := lib/asm-offsets.s 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun# We use internal kbuild rules to avoid the "is up to date" message from make 42*4882a593Smuzhiyunlib/asm-offsets.s: lib/asm-offsets.c FORCE 43*4882a593Smuzhiyun $(Q)mkdir -p $(dir $@) 44*4882a593Smuzhiyun $(call if_changed_dep,cc_s_c) 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun$(obj)/$(generic-offsets-file): lib/asm-offsets.s FORCE 47*4882a593Smuzhiyun $(call filechk,offsets,__GENERIC_ASM_OFFSETS_H__) 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun##### 50*4882a593Smuzhiyun# 2) Generate asm-offsets.h 51*4882a593Smuzhiyun# 52*4882a593Smuzhiyun 53*4882a593Smuzhiyunifneq ($(wildcard $(srctree)/arch/$(ARCH)/lib/asm-offsets.c),) 54*4882a593Smuzhiyunoffsets-file := include/generated/asm-offsets.h 55*4882a593Smuzhiyunendif 56*4882a593Smuzhiyun 57*4882a593Smuzhiyunalways += $(offsets-file) 58*4882a593Smuzhiyuntargets += arch/$(ARCH)/lib/asm-offsets.s 59*4882a593Smuzhiyun 60*4882a593SmuzhiyunCFLAGS_asm-offsets.o := -DDO_DEPS_ONLY 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun# We use internal kbuild rules to avoid the "is up to date" message from make 63*4882a593Smuzhiyunarch/$(ARCH)/lib/asm-offsets.s: arch/$(ARCH)/lib/asm-offsets.c FORCE 64*4882a593Smuzhiyun $(Q)mkdir -p $(dir $@) 65*4882a593Smuzhiyun $(call if_changed_dep,cc_s_c) 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun$(obj)/$(offsets-file): arch/$(ARCH)/lib/asm-offsets.s FORCE 68*4882a593Smuzhiyun $(call filechk,offsets,__ASM_OFFSETS_H__) 69