[U-Boot] RFQ: Makefile cleanup
Graeme Russ
graeme.russ at gmail.com
Wed Oct 6 23:21:28 CEST 2010
On Thu, Oct 7, 2010 at 7:16 AM, Albert ARIBAUD <albert.aribaud at free.fr> wrote:
> Le 06/10/2010 21:54, Wolfgang Denk a écrit :
>> Hi,
>>
>> I'm working on a few patches to get rid of the remaining scripting
>> in the Makefile, i. e. to move the remaining board descriptions into
>> board.cfg; this work makes use of Marek Vasut's patch to extend the
>> mkconfig script so it can process an additional "options" field.
>>
>>
>> With this I can convert a large number of boards from the Makefile to
>> boards.cfg - but I still have a problem with those that not only add
>> settings to include/config.h, but that also add custom settings to
>> some config.mk file, typically to adjust the TEXT_BASE setting, for
>> example like this:
>>
>> Makefile:
>>
>> ...
>> @echo "TEXT_BASE = 0x01000000"> $(obj)board/amcc/acadia/config.tmp
>> @echo "CONFIG_NAND_U_BOOT = y">> $(obj)include/config.mk
>> ...
>>
>> board/amcc/acadia/config.mk:
>>
>> ...
>> sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
>> ...
>> ifndef TEXT_BASE
>> TEXT_BASE = 0xFFF80000
>> endif
>> ...
>> ifdef CONFIG_NAND_U_BOOT
>> ...
>>
>> The settings in include/config.h are visible in the Makefiles through
>> the automatically generated include/autoconf.mk; however, with the
>> mechanism above I cannot generate a "TEXT_BASE" setting as currently
>> all options automatically get prefixed with "CONFIG_".
>>
>
> Humble proposal: admit an options field of the form
>
> boardname[:[cfgopt1[,cfgopt2...]][:<opt1>[,<opt2>]]
>
> I.e., have two sets of definitions, cfgopts and opts, separated by
> colons; each cfgopt or opt is of the form SYM or SYM=VAL. The cfgopt set
> gets the CONFIG_ prefix, the opt set does not.
>
> Example:
>
> TQM8260:MPC8260,200MHz,L2_CACHE,BUSMODE_60x:TEXT_BASE=0xFF000000
>
> Will generate
>
> #define CONFIG_MPC8260 1
> #define CONFIG_200MHz
> #define CONFIG_L2_CACHE 1
> #define CONFIG_BUSMODE_60x 1
> #define TEXT_BASE 0xFF000000
>
> Pros: you keep fine control on what's generated; you keep not-too-long
> lines in boards.cfg; you don't need to touch anything in the current code.
>
> Cons: complexified the parsing of the boards.cfg options field.
>
> Note that in my proposal I suggest that an options field can still only
> contain cfgopts, so that existing lines in boards.cfg will keep their
> current semantics.
>
I feel that boards.cfg defines configurations, and therfore each
additional field is, by definition, a configuration option and should be
prefixed with CONFIG_
I actually got really confused with TEXT_BASE and thought it was some kind
of standard environment variable that ld magically used - it wasn't until
I spent a day trolling through the makfile et al that I finally figurfed
out that the linker script was 'made' and TEXT_BASE was just another
define and I could add more to the parsing of the ld script. Having it as
CONFIG_TEXT_BASE or CONFIG_SYS_TEXT_BASE would have alerted me straight up
So I vote for #2
A couple of other questions:
- How do you un-define a CONFIG option via boards.cfg?
- What happens when you try to re-define an option already in the board
configuration file?
P.S. Here's a thought I ended up discarding:
Each board could have a main config with all the common configuration
values and a number of secondary includes (which include the primary) for
each specific configuration. The entry in boards.cfg would select a
specific config_xxx.h file
eg
boards.cfg:
TQM8260 powerpc mpc8260 tqm8260 tqc -
TQM8260_AB powerpc mpc8260 tqm8260 tqc -
/include/configs/TQM8260_AB.h:
#include "configs/TQM8260.h"
#define MPC8260
#define 200MHz
#define L2_CACHE
#define BUSMODE_60x
More information about the U-Boot
mailing list