[PATCH 00/17] RFC: Split configs between U-Boot proper and SPL builds

Simon Glass sjg at chromium.org
Fri Sep 17 18:17:23 CEST 2021


At present a single .config file is used to configure the build for all
phases, with SPL phases having a SPL_ or TPL_ prefix on each CONFIG to
indicate which build it controls.

So, for example, we have CONFIG_MISC and CONFIG_SPL_MISC to control the
inclusion of MISC drivers in each phase.

>From this .config a few other files are generated (by the kconfig tool)
for use with make and from C code (auto.conf and autoconf.h).

This all  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.

In discussions with trini the idea came up of creating separate config
files for each type of build. So instead of using SPL_ or TPL_ prefixes,
each build includes its own files with the config it needs.

This series takes a pass at implementing this. It makes only minor changes
to the existing Kconfig files, to make things work, but updates the
kconfig tool to output seperate files for each phase. These changes may
need reworking to send upstream.

With this series, SPL_TPL_ resolves to an empty value, so it is possible
to drop this macro.

This cannot be applied as is. Any ad-hoc CONFIG options break the logic
in this series, since these are not processed by the kconfig tool. A
special xSPL_TPL_ macro is added to show this problem.

A run indicative of the current state (without the last patch, which
breaks everything) is here:

https://source.denx.de/u-boot/custodians/u-boot-dm/-/pipelines/9135

Once CONFIG migration is completed, something along these lines can be
applied.


Simon Glass (17):
  env: Avoid checking ENV_IS_IN when env disabled
  x86: Fix qemu condition for arch_cpu_init()
  acpi: Add a Kconfig for SPL
  cmd: Add an SPL Kconfig for CMDLINE and HUSH
  cros_ec: Add SPL Kconfigs for cros_ec features
  power: Add SPL Kconfig for sandbox pmc emulator
  test: Add SPL Kconfig for compression tests
  sandbox: Enable MISC support for the SPL build
  serial: Tidy up the Makefile condition for DM_SERIAL
  virtio: Add SPL Kconfig for virtio
  kconfig: Refactor code into separate writer functions
  kconfig: Support writing separate SPL files
  Makefile: Include the config for the phase being built
  Makefile: Use empty SPL_ and SPL_TPL_ vars
  Makefile: Support ad-hoc COMFIX_SPL_IMAGE_SIZE et al
  kconfig: Update CONFIG_IS_ENABLED() for split files
  kconfig: Add a new CONFIG() macro

 Makefile                         |  11 +-
 arch/x86/cpu/qemu/qemu.c         |   2 +-
 cmd/Kconfig                      |  10 ++
 cmd/nvedit.c                     |   2 +
 configs/sandbox_noinst_defconfig |   1 +
 configs/sandbox_spl_defconfig    |   1 +
 drivers/core/Kconfig             |   5 +
 drivers/i2c/Kconfig              |  10 ++
 drivers/power/acpi_pmc/Kconfig   |   5 +
 drivers/serial/Makefile          |   2 +-
 drivers/virtio/Kconfig           |   6 +
 include/linux/kconfig.h          |  91 +++-------
 scripts/Kbuild.include           |  17 +-
 scripts/Makefile.build           |  10 +-
 scripts/Makefile.spl             |  33 +++-
 scripts/kconfig/conf.c           |   4 +
 scripts/kconfig/confdata.c       | 286 ++++++++++++++++++++++++++++---
 scripts/kconfig/expr.h           |   9 +
 scripts/kconfig/lkc.h            |   9 +
 test/Kconfig                     |   5 +
 20 files changed, 408 insertions(+), 111 deletions(-)

-- 
2.33.0.309.g3052b89438-goog



More information about the U-Boot mailing list