Add target to generate initial environment
authorStefano Babic <sbabic@denx.de>
Wed, 13 Mar 2019 08:46:45 +0000 (09:46 +0100)
committerTom Rini <trini@konsulko.com>
Mon, 22 Apr 2019 22:13:23 +0000 (18:13 -0400)
The initial environment is linked to the u-boot binary. Modifying the
environment from User Space with the env tools requires that the tools
are always built together with the bootloader to be sure that they
contain the initial environment in case no environment is stored into
persistent storage or when a board boots with just the default
environment. This makes difficult for distros to provide a general
package to access the environment. A simpler way is if the tools are
generic for all boards and a configuration file is given to provide the
initial environment.

The patch just generates the initial environment by extracting it from
the compiled object. This file can then be used for tools in user space
to initialize the environment.

Signed-off-by: Stefano Babic <sbabic@denx.de>
Makefile

index 66a09ac900c37511054b9fb30693b2daf0aeac15..f2c7bb6041a25d0d3bc0795d1e44c7ec3a4cb763 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1977,6 +1977,13 @@ endif
        $(build)=$(build-dir) $(@:.ko=.o)
        $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
 
        $(build)=$(build-dir) $(@:.ko=.o)
        $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
 
+quiet_cmd_genenv = GENENV $@
+cmd_genenv = $(OBJCOPY) --dump-section .rodata.default_environment=$@ env/common.o; \
+       sed --in-place -e 's/\x00/\x0A/g' $@
+
+u-boot-initial-env: u-boot.bin
+       $(call if_changed,genenv)
+
 # Consistency checks
 # ---------------------------------------------------------------------------
 
 # Consistency checks
 # ---------------------------------------------------------------------------