xref: /OK3568_Linux_fs/u-boot/Kbuild (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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