# This helper makefile is used for creating # - symbolic links (arch/$ARCH/include/asm/arch # - include/autoconf.mk, {spl,tpl}/include/autoconf.mk # - include/config.h # # When our migration to Kconfig is done # (= When we move all CONFIGs from header files to Kconfig) # this makefile can be deleted. # obj is "include" or "spl/include" or "tpl/include" # for non-SPL, SPL, TPL, respectively include $(obj)/config/auto.conf include scripts/Kbuild.include # Need to define CC and CPP again here in case the top Makefile did not # include config.mk. Some architectures expect CROSS_COMPILE to be defined # in arch/$(ARCH)/config.mk CC = $(CROSS_COMPILE)gcc CPP = $(CC) -E include config.mk UBOOTINCLUDE := \ -I$(obj) \ -Iinclude \ $(if $(KBUILD_SRC), -I$(srctree)/include) \ -I$(srctree)/arch/$(ARCH)/include \ -include $(srctree)/include/linux/kconfig.h c_flags := $(KBUILD_CFLAGS) $(KBUILD_CPPFLAGS) $(PLATFORM_CPPFLAGS) \ $(UBOOTINCLUDE) $(NOSTDINC_FLAGS) quiet_cmd_autoconf_dep = GEN $@ cmd_autoconf_dep = $(CC) -x c -DDO_DEPS_ONLY -M -MP $(c_flags) \ -MQ include/config/auto.conf $(srctree)/include/common.h > $@ || { \ rm $@; false; \ } include/autoconf.mk.dep: FORCE $(call cmd,autoconf_dep) # We are migrating from board headers to Kconfig little by little. # In the interim, we use both of # - include/config/auto.conf (generated by Kconfig) # - include/autoconf.mk (used in the U-Boot conventional configuration) # The following rule creates autoconf.mk # include/config/auto.conf is grepped in order to avoid duplication of the # same CONFIG macros quiet_cmd_autoconf = GEN $@ cmd_autoconf = \ $(CPP) $(c_flags) -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && { \ sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp | \ while read line; do \ if ! grep -q "$${line%=*}=" $(obj)/config/auto.conf; then \ echo "$$line"; \ fi \ done > $@; \ rm $@.tmp; \ } || { \ rm $@.tmp; false; \ } $(obj)/autoconf.mk: FORCE $(call cmd,autoconf) include/autoconf.mk include/autoconf.mk.dep: include/config.h # include/config.h # Prior to Kconfig, it was generated by mkconfig. Now it is created here. define filechk_config_h (echo "/* Automatically generated - do not edit */"; \ for i in $$(echo $(CONFIG_SYS_EXTRA_OPTIONS) | sed 's/,/ /g'); do \ echo \#define CONFIG_$$i \ | sed '/=/ {s/=/ /;q; } ; { s/$$/ 1/; }'; \ done; \ echo \#define CONFIG_BOARDDIR board/$(if $(VENDOR),$(VENDOR)/)$(BOARD);\ echo \#include \; \ echo \#include \; \ echo \#include \; \ echo \#include \; \ echo \#include \; \ echo \#include \; ) endef include/config.h: scripts/Makefile.autoconf create_symlink FORCE $(call filechk,config_h) # symbolic links PHONY += create_symlink create_symlink: ifneq ($(KBUILD_SRC),) $(Q)mkdir -p include/asm endif $(Q)ln -fsn $(srctree)/arch/$(ARCH)/include/asm/arch-$(if $(SOC),$(SOC),$(CPU)) \ $(if $(KBUILD_SRC),,arch/$(ARCH)/)include/asm/arch PHONY += FORCE FORCE: .PHONY: $(PHONY)