xref: /openbmc/u-boot/Kbuild (revision 490cf5f0)
16a44d806SMasahiro Yamada#
26a44d806SMasahiro Yamada# Kbuild for top-level directory of U-Boot
36a44d806SMasahiro Yamada# This file takes care of the following:
46a44d806SMasahiro Yamada# 1) Generate generic-asm-offsets.h
56a44d806SMasahiro Yamada# 2) Generate asm-offsets.h
66a44d806SMasahiro Yamada
7*490cf5f0SMasahiro Yamada# Default sed regexp - multiline due to syntax constraints
8*490cf5f0SMasahiro Yamadadefine sed-y
9*490cf5f0SMasahiro Yamada	"s:[[:space:]]*\.ascii[[:space:]]*\"\(.*\)\":\1:; \
10*490cf5f0SMasahiro Yamada	/^->/{s:->#\(.*\):/* \1 */:; \
11*490cf5f0SMasahiro Yamada	s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
12*490cf5f0SMasahiro Yamada	s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
13*490cf5f0SMasahiro Yamada	s:->::; p;}"
14*490cf5f0SMasahiro Yamadaendef
156a44d806SMasahiro Yamada
16*490cf5f0SMasahiro Yamadaquiet_cmd_offsets = GEN     $@
17*490cf5f0SMasahiro Yamadadefine cmd_offsets
186a44d806SMasahiro Yamada	(set -e; \
19*490cf5f0SMasahiro Yamada	 echo "#ifndef $2"; \
20*490cf5f0SMasahiro Yamada	 echo "#define $2"; \
216a44d806SMasahiro Yamada	 echo "/*"; \
226a44d806SMasahiro Yamada	 echo " * DO NOT MODIFY."; \
236a44d806SMasahiro Yamada	 echo " *"; \
246a44d806SMasahiro Yamada	 echo " * This file was generated by Kbuild"; \
256a44d806SMasahiro Yamada	 echo " *"; \
266a44d806SMasahiro Yamada	 echo " */"; \
276a44d806SMasahiro Yamada	 echo ""; \
286a44d806SMasahiro Yamada	 sed -ne $(sed-y) $<; \
296a44d806SMasahiro Yamada	 echo ""; \
306a44d806SMasahiro Yamada	 echo "#endif" ) > $@
316a44d806SMasahiro Yamadaendef
326a44d806SMasahiro Yamada
33*490cf5f0SMasahiro Yamada#####
34*490cf5f0SMasahiro Yamada# 1) Generate generic-asm-offsets.h
35*490cf5f0SMasahiro Yamada
36*490cf5f0SMasahiro Yamadageneric-offsets-file := include/generated/generic-asm-offsets.h
37*490cf5f0SMasahiro Yamada
38*490cf5f0SMasahiro Yamadaalways  := $(generic-offsets-file)
39*490cf5f0SMasahiro Yamadatargets := $(generic-offsets-file) lib/asm-offsets.s
40*490cf5f0SMasahiro Yamada
416a44d806SMasahiro Yamada# We use internal kbuild rules to avoid the "is up to date" message from make
426a44d806SMasahiro Yamadalib/asm-offsets.s: lib/asm-offsets.c FORCE
436a44d806SMasahiro Yamada	$(Q)mkdir -p $(dir $@)
446a44d806SMasahiro Yamada	$(call if_changed_dep,cc_s_c)
456a44d806SMasahiro Yamada
466a44d806SMasahiro Yamada$(obj)/$(generic-offsets-file): lib/asm-offsets.s Kbuild
476a44d806SMasahiro Yamada	$(Q)mkdir -p $(dir $@)
48*490cf5f0SMasahiro Yamada	$(call cmd,offsets,__GENERIC_ASM_OFFSETS_H__)
496a44d806SMasahiro Yamada
506a44d806SMasahiro Yamada#####
516a44d806SMasahiro Yamada# 2) Generate asm-offsets.h
526a44d806SMasahiro Yamada#
536a44d806SMasahiro Yamada
54254d68b6SMasahiro Yamadaifneq ($(wildcard $(srctree)/arch/$(ARCH)/lib/asm-offsets.c),)
556a44d806SMasahiro Yamadaoffsets-file := include/generated/asm-offsets.h
566a44d806SMasahiro Yamadaendif
576a44d806SMasahiro Yamada
586a44d806SMasahiro Yamadaalways  += $(offsets-file)
596a44d806SMasahiro Yamadatargets += $(offsets-file)
60254d68b6SMasahiro Yamadatargets += arch/$(ARCH)/lib/asm-offsets.s
616a44d806SMasahiro Yamada
626a44d806SMasahiro YamadaCFLAGS_asm-offsets.o := -DDO_DEPS_ONLY
636a44d806SMasahiro Yamada
646a44d806SMasahiro Yamada# We use internal kbuild rules to avoid the "is up to date" message from make
65254d68b6SMasahiro Yamadaarch/$(ARCH)/lib/asm-offsets.s: arch/$(ARCH)/lib/asm-offsets.c FORCE
666a44d806SMasahiro Yamada	$(Q)mkdir -p $(dir $@)
676a44d806SMasahiro Yamada	$(call if_changed_dep,cc_s_c)
686a44d806SMasahiro Yamada
69254d68b6SMasahiro Yamada$(obj)/$(offsets-file): arch/$(ARCH)/lib/asm-offsets.s Kbuild
70*490cf5f0SMasahiro Yamada	$(call cmd,offsets,__ASM_OFFSETS_H__)
71