mirror of
https://github.com/u-boot/u-boot.git
synced 2024-11-24 12:44:23 +08:00
86b9c3e4e4
At present U-Boot environment variables, and thus scripts, are defined by CONFIG_EXTRA_ENV_SETTINGS. It is painful to add large amounts of text to this file and dealing with quoting and newlines is harder than it should be. It would be better if we could just type the script into a text file and have it included by U-Boot. Add a feature that brings in a .env file associated with the board config, if present. To use it, create a file in a board/<vendor> directory, typically called <board>.env and controlled by the CONFIG_ENV_SOURCE_FILE option. The environment variables should be of the form "var=value". Values can extend to multiple lines. See the README under 'Environment Variables:' for more information and an example. In many cases environment variables need access to the U-Boot CONFIG variables to select different options. Enable this so that the environment scripts can be as useful as the ones currently in the board config files. This uses the C preprocessor, means that comments can be included in the environment using /* ... */ Also support += to allow variables to be appended to. This is needed when using the preprocessor. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Marek Behún <marek.behun@nic.cz> Tested-by: Marek Behún <marek.behun@nic.cz>
81 lines
2.1 KiB
Makefile
81 lines
2.1 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0+
|
|
#
|
|
# (C) Copyright 2000-2013
|
|
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
|
#########################################################################
|
|
|
|
# This file is included from ./Makefile and spl/Makefile.
|
|
# Clean the state to avoid the same flags added twice.
|
|
#
|
|
# (Tegra needs different flags for SPL.
|
|
# That's the reason why this file must be included from spl/Makefile too.
|
|
# If we did not have Tegra SoCs, build system would be much simpler...)
|
|
PLATFORM_RELFLAGS :=
|
|
PLATFORM_CPPFLAGS :=
|
|
KBUILD_LDFLAGS :=
|
|
LDFLAGS_FINAL :=
|
|
LDFLAGS_STANDALONE :=
|
|
OBJCOPYFLAGS :=
|
|
# clear VENDOR for tcsh
|
|
VENDOR :=
|
|
#########################################################################
|
|
|
|
ARCH := $(CONFIG_SYS_ARCH:"%"=%)
|
|
CPU := $(CONFIG_SYS_CPU:"%"=%)
|
|
ifdef CONFIG_SPL_BUILD
|
|
ifdef CONFIG_ARCH_TEGRA
|
|
CPU := arm720t
|
|
endif
|
|
endif
|
|
BOARD := $(CONFIG_SYS_BOARD:"%"=%)
|
|
ifneq ($(CONFIG_SYS_VENDOR),)
|
|
VENDOR := $(CONFIG_SYS_VENDOR:"%"=%)
|
|
endif
|
|
ifneq ($(CONFIG_SYS_SOC),)
|
|
SOC := $(CONFIG_SYS_SOC:"%"=%)
|
|
endif
|
|
|
|
# Some architecture config.mk files need to know what CPUDIR is set to,
|
|
# so calculate CPUDIR before including ARCH/SOC/CPU config.mk files.
|
|
# Check if arch/$ARCH/cpu/$CPU exists, otherwise assume arch/$ARCH/cpu contains
|
|
# CPU-specific code.
|
|
CPUDIR=arch/$(ARCH)/cpu$(if $(CPU),/$(CPU),)
|
|
|
|
sinclude $(srctree)/arch/$(ARCH)/config.mk # include architecture dependend rules
|
|
sinclude $(srctree)/$(CPUDIR)/config.mk # include CPU specific rules
|
|
|
|
ifdef SOC
|
|
sinclude $(srctree)/$(CPUDIR)/$(SOC)/config.mk # include SoC specific rules
|
|
endif
|
|
ifneq ($(BOARD),)
|
|
ifdef VENDOR
|
|
BOARDDIR = $(VENDOR)/$(BOARD)
|
|
ENVDIR=${vendor}/env
|
|
else
|
|
BOARDDIR = $(BOARD)
|
|
ENVDIR=${board}/env
|
|
endif
|
|
endif
|
|
ifdef BOARD
|
|
sinclude $(srctree)/board/$(BOARDDIR)/config.mk # include board specific rules
|
|
endif
|
|
|
|
ifdef FTRACE
|
|
PLATFORM_CPPFLAGS += -finstrument-functions -DFTRACE
|
|
endif
|
|
|
|
#########################################################################
|
|
|
|
RELFLAGS := $(PLATFORM_RELFLAGS)
|
|
|
|
PLATFORM_CPPFLAGS += $(RELFLAGS)
|
|
PLATFORM_CPPFLAGS += -pipe
|
|
|
|
LDFLAGS_FINAL += -Bstatic
|
|
|
|
export PLATFORM_CPPFLAGS
|
|
export RELFLAGS
|
|
export LDFLAGS_FINAL
|
|
export LDFLAGS_STANDALONE
|
|
export CONFIG_STANDALONE_LOAD_ADDR
|