• Rasmus Villemoes's avatar
    env: another attempt at fixing SPL build failures · c8221680
    Rasmus Villemoes authored
    I'm also seeing the build failure that commit
    
    7d477654 env: solve compilation error in SPL
    
    tried to fix, namely that the reference to env_flags_validate from
    env_htab cannot be satisfied when flags.o is not built in. However,
    that commit got reverted by
    
    d90fc9c3 Revert "env: solve compilation error in SPL"
    
    Necessary, but not sufficient conditions to see this are
    
    CONFIG_SPL=y (obviously)
    CONFIG_SPL_ENV_SUPPORT=n (so flags.o does not get compiled)
    CONFIG_SPL_LIBCOMMON_SUPPORT=y (so env/built-in.o is part of the SPL link)
    
    Now, these are satisfied for e.g. imx6q_logic_defconfig. But that
    builds just fine, and spl/u-boot-spl.map lists .data.env_htab among
    the discarded (garbage collected) sections. Yet, on our
    mpc8309-derived board, we do see the build failure, so perhaps the
    linker works a bit differently on ppc than on ARM, or there's yet some
    other configuration option needed to observe the break.
    
    This is another attempt at solving it, which also cleans up
    env/Makefile a bit: Introduce a def_bool y symbol CONFIG_ENV_SUPPORT
    which complements CONFIG_(SPL/TPL)_SUPPORT. Then use
    CONFIG_$(SPL_TPL_)ENV_SUPPORT to decide whether to include the five
    basic env/*.o files. For attr.o, flags.o and callback.o, this
    shouldn't change anything. Also, common.o and env.o still get
    unconditionally built for U-boot proper. But for TPL/SPL, those two
    are only included if CONFIG_(SPL/TPL)_SUPPORT is set.
    
    Having that symbol should also allow simplifying conditionals such as
    
    #if !defined(CONFIG_SPL_BUILD) || CONFIG_IS_ENABLED(ENV_SUPPORT)
    
    found in drivers/reset/reset-socfpga.c to just
    CONFIG_IS_ENABLED(ENV_SUPPORT).
    Signed-off-by: default avatarRasmus Villemoes <rasmus.villemoes@prevas.dk>
    c8221680
Name
Last commit
Last update
..
Kconfig Loading commit data...
Makefile Loading commit data...
attr.c Loading commit data...
callback.c Loading commit data...
common.c Loading commit data...
eeprom.c Loading commit data...
embedded.c Loading commit data...
env.c Loading commit data...
ext4.c Loading commit data...
fat.c Loading commit data...
flags.c Loading commit data...
flash.c Loading commit data...
mmc.c Loading commit data...
nand.c Loading commit data...
nowhere.c Loading commit data...
nvram.c Loading commit data...
onenand.c Loading commit data...
remote.c Loading commit data...
sata.c Loading commit data...
sf.c Loading commit data...
ubi.c Loading commit data...