xref: /openbmc/u-boot/Kbuild (revision 254d68b6)
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
76a44d806SMasahiro Yamada#####
86a44d806SMasahiro Yamada# 1) Generate generic-asm-offsets.h
96a44d806SMasahiro Yamada
106a44d806SMasahiro Yamadageneric-offsets-file := include/generated/generic-asm-offsets.h
116a44d806SMasahiro Yamada
126a44d806SMasahiro Yamadaalways  := $(generic-offsets-file)
136a44d806SMasahiro Yamadatargets := $(generic-offsets-file) lib/asm-offsets.s
146a44d806SMasahiro Yamada
156a44d806SMasahiro Yamadaquiet_cmd_generic-offsets = GEN     $@
166a44d806SMasahiro Yamadadefine cmd_generic-offsets
176a44d806SMasahiro Yamada	(set -e; \
186a44d806SMasahiro Yamada	 echo "#ifndef __GENERIC_ASM_OFFSETS_H__"; \
196a44d806SMasahiro Yamada	 echo "#define __GENERIC_ASM_OFFSETS_H__"; \
206a44d806SMasahiro Yamada	 echo "/*"; \
216a44d806SMasahiro Yamada	 echo " * DO NOT MODIFY."; \
226a44d806SMasahiro Yamada	 echo " *"; \
236a44d806SMasahiro Yamada	 echo " * This file was generated by Kbuild"; \
246a44d806SMasahiro Yamada	 echo " *"; \
256a44d806SMasahiro Yamada	 echo " */"; \
266a44d806SMasahiro Yamada	 echo ""; \
276a44d806SMasahiro Yamada	 sed -ne $(sed-y) $<; \
286a44d806SMasahiro Yamada	 echo ""; \
296a44d806SMasahiro Yamada	 echo "#endif" ) > $@
306a44d806SMasahiro Yamadaendef
316a44d806SMasahiro Yamada
326a44d806SMasahiro Yamada# We use internal kbuild rules to avoid the "is up to date" message from make
336a44d806SMasahiro Yamadalib/asm-offsets.s: lib/asm-offsets.c FORCE
346a44d806SMasahiro Yamada	$(Q)mkdir -p $(dir $@)
356a44d806SMasahiro Yamada	$(call if_changed_dep,cc_s_c)
366a44d806SMasahiro Yamada
376a44d806SMasahiro Yamada$(obj)/$(generic-offsets-file): lib/asm-offsets.s Kbuild
386a44d806SMasahiro Yamada	$(Q)mkdir -p $(dir $@)
396a44d806SMasahiro Yamada	$(call cmd,generic-offsets)
406a44d806SMasahiro Yamada
416a44d806SMasahiro Yamada#####
426a44d806SMasahiro Yamada# 2) Generate asm-offsets.h
436a44d806SMasahiro Yamada#
446a44d806SMasahiro Yamada
45*254d68b6SMasahiro Yamadaifneq ($(wildcard $(srctree)/arch/$(ARCH)/lib/asm-offsets.c),)
466a44d806SMasahiro Yamadaoffsets-file := include/generated/asm-offsets.h
476a44d806SMasahiro Yamadaendif
486a44d806SMasahiro Yamada
496a44d806SMasahiro Yamadaalways  += $(offsets-file)
506a44d806SMasahiro Yamadatargets += $(offsets-file)
51*254d68b6SMasahiro Yamadatargets += arch/$(ARCH)/lib/asm-offsets.s
526a44d806SMasahiro Yamada
536a44d806SMasahiro Yamada
546a44d806SMasahiro Yamada# Default sed regexp - multiline due to syntax constraints
556a44d806SMasahiro Yamadadefine sed-y
566a44d806SMasahiro Yamada	"/^->/{s:->#\(.*\):/* \1 */:; \
576a44d806SMasahiro Yamada	s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
586a44d806SMasahiro Yamada	s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
596a44d806SMasahiro Yamada	s:->::; p;}"
606a44d806SMasahiro Yamadaendef
616a44d806SMasahiro Yamada
626a44d806SMasahiro YamadaCFLAGS_asm-offsets.o := -DDO_DEPS_ONLY
636a44d806SMasahiro Yamada
646a44d806SMasahiro Yamadaquiet_cmd_offsets = GEN     $@
656a44d806SMasahiro Yamadadefine cmd_offsets
666a44d806SMasahiro Yamada	(set -e; \
676a44d806SMasahiro Yamada	 echo "#ifndef __ASM_OFFSETS_H__"; \
686a44d806SMasahiro Yamada	 echo "#define __ASM_OFFSETS_H__"; \
696a44d806SMasahiro Yamada	 echo "/*"; \
706a44d806SMasahiro Yamada	 echo " * DO NOT MODIFY."; \
716a44d806SMasahiro Yamada	 echo " *"; \
726a44d806SMasahiro Yamada	 echo " * This file was generated by Kbuild"; \
736a44d806SMasahiro Yamada	 echo " *"; \
746a44d806SMasahiro Yamada	 echo " */"; \
756a44d806SMasahiro Yamada	 echo ""; \
766a44d806SMasahiro Yamada	 sed -ne $(sed-y) $<; \
776a44d806SMasahiro Yamada	 echo ""; \
786a44d806SMasahiro Yamada	 echo "#endif" ) > $@
796a44d806SMasahiro Yamadaendef
806a44d806SMasahiro Yamada
816a44d806SMasahiro Yamada# We use internal kbuild rules to avoid the "is up to date" message from make
82*254d68b6SMasahiro Yamadaarch/$(ARCH)/lib/asm-offsets.s: arch/$(ARCH)/lib/asm-offsets.c FORCE
836a44d806SMasahiro Yamada	$(Q)mkdir -p $(dir $@)
846a44d806SMasahiro Yamada	$(call if_changed_dep,cc_s_c)
856a44d806SMasahiro Yamada
86*254d68b6SMasahiro Yamada$(obj)/$(offsets-file): arch/$(ARCH)/lib/asm-offsets.s Kbuild
876a44d806SMasahiro Yamada	$(call cmd,offsets)
88