public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Scott Wood <scottwood@freescale.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v3 5/7] kconfig: switch to single .config configuration
Date: Mon, 23 Feb 2015 19:22:51 -0600	[thread overview]
Message-ID: <1424740971.4698.24.camel@freescale.com> (raw)
In-Reply-To: <1424409901-22755-6-git-send-email-yamada.m@jp.panasonic.com>

On Fri, 2015-02-20 at 14:24 +0900, Masahiro Yamada wrote:
> When Kconfig for U-boot was examined, one of the biggest issues was
> how to support multiple images (Normal, SPL, TPL).  There were
> actually two options, "single .config" and "multiple .config".
> After some discussions and thought experiments, I chose the latter,
> i.e. to create ".config", "spl/.config", "tpl/.config" for Normal,
> SPL, TPL, respectively.
> 
> It is true that the "multiple .config" strategy provided us the
> maximum flexibility and helped to avoid duplicating CONFIGs among
> Normal, SPL, TPL, but I have noticed some fatal problems:
> 
> [1] It is impossible to share CONFIG options across the images.
>   If you change the configuration of Main image, you often have to
>   adjust some SPL configurations correspondingly.  Currently, we
>   cannot handle the dependencies between them.  It means one of the
>   biggest advantages of Kconfig is lost.

Sharing can happen in the defconfig with "+S:"...

What sort of dependencies are people wanting?  Would it be possible to
modify kconfig to import SPL .config into the main config (or vice
versa?) with a name prefix so that dependencies could happen, without
sacrificing the ability to set symbols independently?

Or as Ian suggested, have only the main config be user-editable, but
still let select/depends turn certain things on/off for the
auto-generated SPL config.

> [2] It is too painful to change both ".config" and "spl/.config".
>   Sunxi guys started to work around this problem by creating a new
>   configuration target.  Commit cbdd9a9737cc (sunxi: kconfig: Add
>   %_felconfig rule to enable FEL build of sunxi platforms.) added
>   "make *_felconfig" to enable CONFIG_SPL_FEL on both images.
>   Changing the configuration of multiple images in one command is a
>   generic demand.  The current implementation cannot propose any
>   good solution about this.

How about defconfig fragments?  Instead of having script infrastructure
specifically for CONFIG_SPL_FEL, merge a fragment containing
"+S:CONFIG_SPL_FEL".

> [3] Kconfig files are getting ugly and difficult to understand.
>   Commit b724bd7d6349 (dm: Kconfig: Move CONFIG_SYS_MALLOC_F_LEN to
>   Kconfig) has sprinkled "if !SPL_BUILD" over the Kconfig files.

It seems like the root cause of this sprinkling is wanting to use
default y to avoid touching a bunch of defconfig files, but not wanting
to do the default y at the toplevel Kconfig.  Maybe better tooling for
bulk defconfig updates would help.  In any case, couldn't you do
CONFIG_SPL_DM currently, by making DM depend on "!SPL_BUILD || SPL_DM",
without fundamentally changing the SPL kconfig infrastructure?

Why do symbols like LOCALVERSION and CC_OPTIMIZE_FOR_SIZE depend on !
SPL_BUILD?

> [4] The build system got more complicated than it should be.
>   To adjust Linux-originated Kconfig to U-Boot, the helper script
>   "scripts/multiconfig.sh" was introduced.  Writing a complicated
>   text processor is a shell script sometimes caused problems.
> 
> Now I believe the "single .config" will serve us better.  With it,
> all the problems above would go away.  Instead, we will have to add
> some CONFIG_SPL_* (and CONFIG_TPL_*) options such as CONFIG_SPL_DM,
> but we will not have much.  Anyway, this is what we do now in
> scripts/Makefile.spl.

I had been hoping that the split configs would let us get rid of many of
the CONFIG_SPL_* options that we already have.

How will TPL be handled?  Are you going to duplicate all the SPL
symbols?  Or just avoid ever kconfigizing them?

>  - Add some entries to include/config_uncmd_spl.h and the new file
>    scripts/Makefile.uncmd_spl.  Some CONFIG options that are not
>    supported on SPL must be disabled because one .config is shared
>    between SPL and U-Boot proper going forward.  I know this is not
>    a beautiful solution and I think we can do better, but let's see
>    how much we will have to describe them.

How is uncmd_spl better than "!SPL_BUILD"?

-Scott

  parent reply	other threads:[~2015-02-24  1:22 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-20  5:24 [U-Boot] [PATCH v3 0/7] kconfig: turnaround into single .config Masahiro Yamada
2015-02-20  5:24 ` [U-Boot] [PATCH v3 1/7] ARM: UniPhier: set CONFIG_SYS_MALLOC_F to the global default value Masahiro Yamada
2015-02-20  5:24 ` [U-Boot] [PATCH v3 2/7] malloc_f: fix broken .config caused by CONFIG_SYS_MALLOC_F Masahiro Yamada
2015-02-20 17:11   ` Simon Glass
2015-02-20  5:24 ` [U-Boot] [PATCH v3 3/7] kconfig: Adjust ordering so that defaults work as expected Masahiro Yamada
2015-02-20  5:24 ` [U-Boot] [PATCH v3 4/7] malloc_f: add ARCH_MALLOC_F_LEN to specify SoC-default malloc_f_len Masahiro Yamada
2015-02-20 17:11   ` Simon Glass
2015-02-20 17:11   ` Masahiro YAMADA
2015-02-20  5:24 ` [U-Boot] [PATCH v3 5/7] kconfig: switch to single .config configuration Masahiro Yamada
2015-02-20 16:59   ` Simon Glass
2015-02-24  1:22   ` Scott Wood [this message]
2015-02-24  7:20     ` Masahiro Yamada
2015-02-25  0:17       ` Scott Wood
2015-02-25  6:14         ` Masahiro Yamada
2015-02-25 13:40           ` Simon Glass
2015-02-25 23:29           ` Scott Wood
2015-02-24 16:42     ` Simon Glass
2015-02-20  5:25 ` [U-Boot] [PATCH v3 6/7] kconfig: remove unneeded dependency on !SPL_BUILD Masahiro Yamada
2015-02-20 17:06   ` Simon Glass
2015-02-20 17:54     ` Stephen Warren
2015-02-20 18:39       ` Simon Glass
2015-02-21  0:54         ` Masahiro YAMADA
2015-02-21  2:28           ` Simon Glass
2015-02-21  2:37             ` Masahiro YAMADA
2015-02-23 14:02               ` Simon Glass
2015-02-23 17:33                 ` Stephen Warren
2015-02-23 17:44                   ` Simon Glass
2015-02-24  5:05                     ` Masahiro Yamada
2015-02-24 16:45                       ` Stephen Warren
2015-02-24 13:36                 ` Masahiro Yamada
2015-02-20  5:25 ` [U-Boot] [PATCH v3 7/7] malloc_f: enable SYS_MALLOC_F by default if DM is on Masahiro Yamada
2015-02-20 17:08   ` Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1424740971.4698.24.camel@freescale.com \
    --to=scottwood@freescale.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox