@@ -1813,7 +1813,12 @@ ENV_FILE := $(if $(wildcard $(ENV_FILE_BOARD)),$(ENV_FILE_BOARD),$(ENV_FILE_COMM
quiet_cmd_gen_envp = ENVP $@
cmd_gen_envp = \
if [ -f "$(ENV_FILE)" ]; then \
- cat $(ENV_FILE) >$@; \
+ $(CPP) -P $(CFLAGS) -x assembler-with-cpp -D__ASSEMBLY__ \
+ -D__UBOOT_CONFIG__ \
+ -I . -I include \
+ -I $(srctree)/include -include include/config.h \
+ -I$(srctree)/arch/$(ARCH)/include \
+ $(ENV_FILE) -o $@; \
else \
echo -n >$@ ; \
fi
@@ -31,6 +31,14 @@ and has an equals sign immediately afterwards. Spaces before the = are not
permitted. It is a good idea to indent your scripts so that only the 'var='
appears at the start of a line.
+To add additional text to a variable you can use var+=value. This text is
+merged into the variable during the make process and made available as a
+single value to U-Boot.
+
+This file can include C-style comments. Blank lines and multi-line
+variables are supported, and you can use normal C preprocessor directives
+and CONFIG defines from your board config also.
+
For example, for snapper9260 you would create a text file called
`board/bluewater/env/snapper9260.env` containing the environment text.
@@ -29,6 +29,12 @@ NF {
}
var = arr[1]
env = arr[2]
+
+ # Deal with +=
+ if (match(var, "(.*)[+]$", var_arr)) {
+ var = var_arr[1]
+ env = vars[var] env
+ }
} else {
# Change newline to \n
env = env "\\n" $0;
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. Also support += to allow variables to be appended to. This is needed when using the preprocessor. Signed-off-by: Simon Glass <sjg@chromium.org> --- Changes in v4: - Add documentation in rST format instead of README Changes in v3: - Define __UBOOT_CONFIG__ when collecting environment files Changes in v2: - Add separate patch to enable C preprocessor for environment files - Enable var+=value form to simplify composing variables in multiple steps Makefile | 7 ++++++- doc/usage/environment.rst | 8 ++++++++ scripts/env2string.awk | 6 ++++++ 3 files changed, 20 insertions(+), 1 deletion(-)