mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-01-15 21:51:57 +01:00
Our last sync with the kernel was 5.1. We are so out of sync now, that tracking the patches and backporting them one by one makes little sense and it's going to take ages. This is an attempt to sync up Makefiles to 6.1. Unfortunately due to sheer amount of patches this is not easy to review, but that's what we decided during a community call for the bump to 5.1, so we are following the same guidelines here. Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org> Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>a #rebased on -next
156 lines
4.8 KiB
Makefile
156 lines
4.8 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
# 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.
|
|
|
|
__all: include/autoconf.mk include/autoconf.mk.dep
|
|
|
|
ifeq ($(shell grep -q '^CONFIG_SPL=y' include/config/auto.conf 2>/dev/null && echo y),y)
|
|
__all: spl/include/autoconf.mk
|
|
endif
|
|
|
|
ifeq ($(shell grep -q '^CONFIG_TPL=y' include/config/auto.conf 2>/dev/null && echo y),y)
|
|
__all: tpl/include/autoconf.mk
|
|
endif
|
|
|
|
ifeq ($(shell grep -q '^CONFIG_VPL=y' include/config/auto.conf 2>/dev/null && echo y),y)
|
|
__all: vpl/include/autoconf.mk
|
|
endif
|
|
|
|
include include/config/auto.conf
|
|
|
|
# include scripts/Kbuild.include
|
|
include scripts/Kbuild.uboot
|
|
include scripts/Makefile.compiler
|
|
|
|
# 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 := \
|
|
-Iinclude \
|
|
$(if $(building_out_of_srctree), -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 include/config.h > $@ || { \
|
|
rm $@; false; \
|
|
}
|
|
include/autoconf.mk.dep: include/config.h 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 = \
|
|
sed -n -f $(srctree)/tools/scripts/define2mk.sed $< | \
|
|
while read line; do \
|
|
if [ -n "${KCONFIG_IGNORE_DUPLICATES}" ] || \
|
|
! grep -q "$${line%=*}=" include/config/auto.conf; then \
|
|
echo "$$line"; \
|
|
fi; \
|
|
done > $@
|
|
|
|
quiet_cmd_u_boot_cfg = CFG $@
|
|
cmd_u_boot_cfg = \
|
|
$(CPP) $(c_flags) $2 -DDO_DEPS_ONLY -dM include/config.h > $@.tmp && { \
|
|
grep 'define CONFIG_' $@.tmp | \
|
|
sed '/define CONFIG_IS_ENABLED(/d;/define CONFIG_IF_ENABLED_INT(/d;/define CONFIG_VAL(/d;' > $@; \
|
|
rm $@.tmp; \
|
|
} || { \
|
|
rm $@.tmp; false; \
|
|
}
|
|
|
|
u-boot.cfg: include/config.h FORCE
|
|
$(call cmd,u_boot_cfg)
|
|
|
|
spl/u-boot.cfg: include/config.h FORCE
|
|
$(Q)mkdir -p $(dir $@)
|
|
$(call cmd,u_boot_cfg,-DCONFIG_XPL_BUILD -DCONFIG_SPL_BUILD)
|
|
|
|
tpl/u-boot.cfg: include/config.h FORCE
|
|
$(Q)mkdir -p $(dir $@)
|
|
$(call cmd,u_boot_cfg,-DCONFIG_XPL_BUILD -DCONFIG_TPL_BUILD)
|
|
|
|
vpl/u-boot.cfg: include/config.h FORCE
|
|
$(Q)mkdir -p $(dir $@)
|
|
$(call cmd,u_boot_cfg,-DCONFIG_XPL_BUILD -DCONFIG_VPL_BUILD)
|
|
|
|
include/autoconf.mk: u-boot.cfg
|
|
$(call cmd,autoconf)
|
|
|
|
spl/include/autoconf.mk: spl/u-boot.cfg
|
|
$(Q)mkdir -p $(dir $@)
|
|
$(call cmd,autoconf)
|
|
|
|
tpl/include/autoconf.mk: tpl/u-boot.cfg
|
|
$(Q)mkdir -p $(dir $@)
|
|
$(call cmd,autoconf)
|
|
|
|
vpl/include/autoconf.mk: vpl/u-boot.cfg
|
|
$(Q)mkdir -p $(dir $@)
|
|
$(call cmd,autoconf)
|
|
|
|
# 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 */"; \
|
|
echo \#define CFG_BOARDDIR board/$(if $(VENDOR),$(VENDOR)/)$(BOARD);\
|
|
$(if $(CONFIG_SYS_CONFIG_NAME),echo \#include \<configs/$(CONFIG_SYS_CONFIG_NAME).h\> ;) \
|
|
echo \#include \<asm/config.h\>; \
|
|
echo \#include \<linux/kconfig.h\>; \
|
|
echo \#include \<config_fallbacks.h\>;)
|
|
endef
|
|
|
|
include/config.h: scripts/Makefile.autoconf create_symlink FORCE
|
|
$(call filechk,config_h)
|
|
|
|
# symbolic links
|
|
# If arch/$(ARCH)/mach-$(SOC)/include/mach exists,
|
|
# make a symbolic link to that directory.
|
|
# Otherwise, create a symbolic link to arch/$(ARCH)/include/asm/arch-$(SOC).
|
|
PHONY += create_symlink
|
|
create_symlink:
|
|
ifdef CONFIG_CREATE_ARCH_SYMLINK
|
|
ifdef building_out_of_srctree
|
|
$(Q)mkdir -p include/asm
|
|
$(Q)if [ -d $(srctree)/arch/$(ARCH)/mach-$(SOC)/include/mach ]; then \
|
|
dest=arch/$(ARCH)/mach-$(SOC)/include/mach; \
|
|
else \
|
|
dest=arch/$(ARCH)/include/asm/arch-$(if $(SOC),$(SOC),$(CPU)); \
|
|
fi; \
|
|
ln -fsn $(srctree)/$$dest include/asm/arch
|
|
else
|
|
$(Q)if [ -d arch/$(ARCH)/mach-$(SOC)/include/mach ]; then \
|
|
dest=../../mach-$(SOC)/include/mach; \
|
|
else \
|
|
dest=arch-$(if $(SOC),$(SOC),$(CPU)); \
|
|
fi; \
|
|
ln -fsn $$dest arch/$(ARCH)/include/asm/arch
|
|
endif
|
|
endif
|
|
|
|
PHONY += FORCE
|
|
FORCE:
|
|
|
|
.PHONY: $(PHONY)
|