[PATCH v3 61/95] kconfig: Support writing separate SPL files
Tom Rini
trini at konsulko.com
Tue Feb 14 17:31:43 CET 2023
On Sun, Feb 12, 2023 at 04:16:04PM -0700, Simon Glass wrote:
> At present kconfig writes out several files, including:
>
> auto.conf - CONFIG settings used by make
> autoconf.h - header file used by C code
>
> This works well but is a bit ugly in places, for example requiring the use
> of a SPL_TPL_ macro in Makefiles to distinguish between options intended
> for SPL and U-Boot proper.
>
> Update the kconfig tool to also output separate files for each phase: e.g.
> auto_spl.conf and autoconf_spl.h
>
> These are similar to the existing files, but drop the SPL_ prefix so that
> SPL_TPL_ is not needed. It also allows the CONFIG_IS_ENABLED() macro to be
> simplified, in a later patch, eventually replacing it with IS_ENABLED().
>
> When CONFIG_FOO is used within SPL, it means that FOO is enabled in that
> SPL phase. For example if CONFIG_SPL_FOO is enabled in the Kconfig, that
> means that CONFIG_FOO will be enabled in the SPL phase. So the SPL builds
> can just use CONFIG_FOO to check it. There is no need to use
> CONFIG_SPL_FOO or CONFIG_IS_ENABLED() anymore.
>
> This of course means that if there is a need to access a PPL symbol from
> an SPL build, there is no way to do it. To copy with that, we need a
> CONFIG_PPL_FOO to be visibilty to all SPL builds.
>
> So this change also adds new PPL_ output for U-Boot proper (Primary
> Program Loader). So every CONFIG_FOO that is enabled in PPL also has a
> CONFIG_PPL_FOO
>
> This allows SPL to access the TEXT_BASE for U-Boot proper, for example, so
> it knows where to load it. There are about 30 places where this is needed,
> in addition to TEXT_BASE. The environment has the same problem, adding
> another dozen or so caes in include/config_distro_bootcmd.h but it has
> been decided to ignore that for now.
>
> The feature is controlled by an environment variable, since it seems to be
> bad form to add flags to the conf tool.
>
> Rebuild the autoconf files if the split config is not present. This allows
> building this commit as part of a chain, without generating build errors.
>
> These changes may benefit from some reworking to send upstream, e.g. to
> use a struct for the 'arg' parameter.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
This patch, I think, is where my largest problem is. We go from being
able to say "if CONFIG_SPL_FOO is undefined, it is false" to "we must
define CONFIG_SPL_FOO to false". There's around 150 cases of this, with
the series. Why can we not extend the PPL logic (which I'm not super
happy with, but, I understand and I think an audit of everything
not-TEXT_BASE should be fairly straight forward), to say that if
CONFIG_FOO exists and CONFIG_SPL_FOO does not exist, say CONFIG_SPL_FOO
is now false.
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20230214/b9e0a1a2/attachment.sig>
More information about the U-Boot
mailing list