u-boot/scripts
Masahiro Yamada 04a5c40601 kbuild: add a makefile macro useful with per-image config options
Commit e02ee2548a ("kconfig: switch to single .config
configuration") made the configuration itself pretty simple,
instead, we lost the way to systematically enable/disable config
options for each image independently.

Our current strategy is, put entries into Makefile.spl for options
we need separate enabling, or once enable the options globally in
Kconfig and then undef them in Makefile.uncmd_spl if we do not want
to compile the features for SPL at all.  Things are getting really
messy.  Besides, "ifdef CONFIG_SPL_BUILD" are sprinkled everywhere
in makefiles.

This commit adds a variable to help describe makefile simpler.

$(SPL_) evaluates to "SPL_" during the SPL build, while to an empty
string during building U-boot proper.

So, you can write

  obj-$(CONFIG_$(SPL_)FOO) += foo.o

instead of

  ifdef CONFIG_SPL_BUILD
  obj-$(CONFIG_SPL_FOO) += foo.o
  else
  obj-$(CONFIG_FOO) += foo.o
  endif

If CONFIG_SPL_FOO does not exist in Kconfig, it is equivalent to

  ifndef CONFIG_SPL_BUILD
  obj-$(CONFIG_SPL_FOO) += foo.o
  endif

This is the pattern we often see in our current makefiles.

To take advantage of this macro, we should prefix SPL_ for the SPL
version of the option when we need independent control between
U-boot and SPL.  With this naming scheme, I hope our makefiles will
be much simplified.

It means we want to rename existing config options as follows
in the long run:

  CONFIG_SPL_SERIAL_SUPPORT     -> CONFIG_SPL_SERIAL
  CONFIG_SPL_I2C_SUPPORT        -> CONFIG_SPL_I2C
  CONFIG_SPL_GPIO_SUPPORT       -> CONFIG_SPL_GPIO
  CONFIG_SPL_SPI_SUPPORT        -> CONFIG_SPL_SPI
  CONFIG_SPL_DISABLE_OF_CONTROL -> CONFIG_SPL_OF_CONTROL
                                      (inverting the logic)

Then drivers/Makefile would be re-worked as follows:

  obj-$(CONFIG_$(SPL_)SERIAL)  += serial/
  obj-$(CONFIG_$(SPL_)I2C)     += i2c/
  obj-$(CONFIG_$(SPL_)GPIO)    += gpio/
  obj-$(CONFIG_$(SPL_)SPI)     += spi/
     ...

Eventually, SPL-specialized entries in Makefile.spl would go away.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2015-08-18 13:46:00 -04:00
..
basic kbuild: fixdep: optimize code slightly 2015-08-18 13:45:59 -04:00
kconfig kconfig: sync with Linux 4.1 2015-07-27 15:01:53 -04:00
.gitignore kernel-doc: move kernel-doc tools to scripts/ 2014-02-19 11:10:04 -05:00
binutils-version.sh scripts: fix binutils-version.sh for 'as' without a package. 2015-01-08 11:00:45 -05:00
checkpatch.pl checkpatch: remove unnecessary + after {8,8} 2014-09-25 09:31:24 -04:00
checkstack.pl scripts/checkstack.pl: update to get AArch64 port from Linux 2015-03-05 11:17:53 -05:00
cleanpatch Makefile: Move some scripts imported from Linux 2013-12-13 09:18:45 -05:00
docproc.c cosmetic: kbuild: clean-up coding style (sync with Linux 3.16-rc1) 2014-06-20 11:56:26 -04:00
dtc-version.sh kbuild: Make scripts executable 2014-11-12 13:25:42 -05:00
fill_scrapyard.py scripts: add a utility to fill blank fields of doc/README.scrapyard 2015-01-14 10:58:49 -05:00
gcc-stack-usage.sh kbuild: Make scripts executable 2014-11-12 13:25:42 -05:00
gcc-version.sh kbuild: Make scripts executable 2014-11-12 13:25:42 -05:00
get_maintainer.pl get_maintainer.pl: fix source tree detection 2014-12-08 09:35:41 -05:00
Kbuild.include kbuild: add a makefile macro useful with per-image config options 2015-08-18 13:46:00 -04:00
kernel-doc kbuild: sync misc scripts with Linux 3.18-rc1 2014-11-07 16:27:07 -05:00
ld-version.sh kbuild: sync with Linux Kernel v3.15-rc1 2014-04-18 11:43:36 -04:00
Lindent scripts/Lindent: import from Linux 3.16 2014-08-21 12:01:29 -04:00
mailmapper tools, scripts: refactor error-out statements of Python scripts 2014-08-21 12:01:11 -04:00
Makefile kconfig: switch to Kconfig 2014-07-30 08:48:03 -04:00
Makefile.autoconf kbuild: create symbolic link only for ARM, AVR32, SPARC, PowerPC, x86 2015-07-27 15:02:00 -04:00
Makefile.build kbuild: sync with Linux 4.1 2015-07-27 15:01:54 -04:00
Makefile.clean kbuild: sync with Linux 4.1 2015-07-27 15:01:54 -04:00
Makefile.extrawarn kbuild: do not hide clang warnings during build with W=1 2014-11-04 15:01:56 -05:00
Makefile.host kbuild: improve multi-objs dependency and cleanups 2014-11-07 16:27:06 -05:00
Makefile.lib Support removing default assembler flags 2015-08-05 08:42:39 -06:00
Makefile.spl Makefile: Add target for building bootable SPL image for SoCFPGA 2015-08-08 14:14:10 +02:00
Makefile.uncmd_spl Remove SPL undefine of CONFIG_OF_CONTROL 2015-06-10 19:26:55 -06:00
mkmakefile kbuild: Make scripts executable 2014-11-12 13:25:42 -05:00
objdiff scripts: objdiff: sync with Linux 3.16 2014-08-21 12:01:11 -04:00
setlocalversion scripts: refetch scripts/setlocalversion from Linux 3.16 2014-08-28 17:18:48 -04:00
show-gnu-make scripts: add scripts/show-gnu-make to get GNU Make command name 2014-07-29 11:48:36 -04:00