Refer to Simon's question, too: http://lists.denx.de/pipermail/u-boot/2015-July/219598.html
Since U-boot introduced SPL (not since Kconfig), enabling features for U-boot and SPL independently is always a PITA. - decide if each feature should be supported for SPL or not - Add CONFIG_SPL_FRED_SUPPORT into Makefile.spl - Add #undef include/config_uncmd_spl.h to disable features we do not want to support on SPL - Add "ifdef CONFIG_SPL_BUILD ... endif" here and there to adjust things - Add "#ifdef CONFIG_SPL_BUILD ... #endif" here and there to fix things up Things are getting more and more crappy. When U-boot switched to Kconfig, first I introduced separate .config (.config, spl/.config, tpl/.config) to clean up them. But it turned out to be a pain. So, I believe the current single .config is much better. But I also admit we need something systematic to subdue our PITA. One possibility is to support "spl-y" in makefiles. (This idea is cribbed from barebox.) obj-$(CONFIG_FOO) += foo.o spl-$(CONFIG_SPL_FOO) += foo.o is cleaner than ifdef CONFIG_SPL_BUILD obj-$(CONFIG_SPL_FOO) += foo.o else obj-$(CONFIG_FOO) += foo.o endif It is a nice improvement in makefile side. But we still need to do something with C files. Another option is something like CONFIG_FOO=yyn (yes for U-boot, yes for SPL, no for TPL) To achieve this, I think a big operation is needed in Kconfig core. I cannot do that. (Of course, Patches are welcome if someone else can do that.) So, I was thinking of something different. My idea was inspired by IS_ENABLED() macro in include/linux/kconfig.h. Linux defines different macros for built-in and module, and it is possible to write #if IS_ENABLED(CONFIG_FOO) ... #endif instead of #if defined(CONFIG_FOO) || defined(CONFIG_FOO_MODULE) ... #endif So, I'd like to propose new macros to write code like #if CONFIG_IS_ENABLED(FOO) ... #endif instead of #if (!defined(CONFIG_SPL_BUILD) && defined(CONFIG_FOO)) || \ (defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_FOO)) ... #endif I hope this series will make our life easier. Masahiro Yamada (16): ARM: remove vpac270 board support kbuild: fixdep: optimize code slightly kbuild: add a makefile macro useful with per-image config options linux/kconfig.h: add CPP macros useful for per-image config options spl: move SPL driver entries to driver/Makefile dm: unify obj-$(CONFIG_DM) and obj-$(CONFIG_SPL_DM) entries clk: rename CONFIG_SPL_CLK_SUPPORT to CONFIG_SPL_CLK clk: unify obj-$(CONFIG_CLK) and obj-$(CONFIG_SPL_CLK) entries ram: rename CONFIG_SPL_RAM_SUPPORT to CONFIG_SPL_RAM ram: unify obj-$(CONFIG_RAM) and obj-$(CONFIG_SPL_RAM) entries led: rename CONFIG_SPL_LED_SUPPORT to CONFIG_SPL_LED led: unify obj-$(CONFIG_LED) and obj-$(CONFIG_SPL_LED) entries dm: drop CONFIG_DM_DEVICE_REMOVE from uncmd list fdtdec: fix OF_CONTROL switch of: flip CONFIG_SPL_DISABLE_OF_CONTROL into CONFIG_SPL_OF_CONTROL of: clean up OF_CONTROL ifdef conditionals arch/arm/Kconfig | 10 - arch/arm/cpu/armv7/am33xx/board.c | 2 +- arch/arm/cpu/armv7/exynos/Kconfig | 8 - arch/arm/cpu/armv7/exynos/pinmux.c | 2 +- arch/arm/cpu/armv7/s5pc1xx/Kconfig | 2 - arch/arm/include/asm/arch-exynos/dwmmc.h | 2 - arch/arm/include/asm/arch-exynos/mipi_dsim.h | 2 - arch/arm/include/asm/arch-exynos/mmc.h | 2 - arch/arm/mach-tegra/clock.c | 4 +- arch/arm/mach-tegra/tegra114/clock.c | 4 +- arch/arm/mach-tegra/tegra124/clock.c | 4 +- arch/arm/mach-tegra/tegra20/clock.c | 4 +- arch/arm/mach-tegra/tegra30/clock.c | 4 +- board/vpac270/Kconfig | 9 - board/vpac270/MAINTAINERS | 8 - board/vpac270/Makefile | 13 - board/vpac270/onenand.c | 46 --- board/vpac270/u-boot-spl.lds | 81 ----- board/vpac270/vpac270.c | 126 -------- .../xilinx/microblaze-generic/microblaze-generic.c | 2 +- board/xilinx/zynq/board.c | 2 +- common/cli.c | 4 +- common/spl/spl.c | 3 +- configs/am335x_boneblack_vboot_defconfig | 1 - configs/arches_defconfig | 1 - configs/canyonlands_defconfig | 1 - configs/galileo_defconfig | 1 - configs/microblaze-generic_defconfig | 1 - configs/odroid_defconfig | 1 - configs/origen_defconfig | 1 - configs/s5pc210_universal_defconfig | 1 - configs/socfpga_socrates_defconfig | 1 - configs/trats2_defconfig | 1 - configs/trats_defconfig | 1 - configs/vpac270_nor_128_defconfig | 5 - configs/vpac270_nor_256_defconfig | 5 - configs/vpac270_ond_256_defconfig | 7 - doc/README.scrapyard | 1 + drivers/Makefile | 41 ++- drivers/clk/Kconfig | 2 +- drivers/core/Makefile | 8 +- drivers/core/device.c | 10 +- drivers/core/lists.c | 2 +- drivers/core/root.c | 6 +- drivers/core/uclass.c | 4 +- drivers/gpio/mxc_gpio.c | 2 +- drivers/gpio/vybrid_gpio.c | 2 +- drivers/i2c/s3c24x0_i2c.c | 4 +- drivers/input/Makefile | 3 +- drivers/input/tegra-kbc.c | 2 +- drivers/led/Kconfig | 2 +- drivers/mmc/exynos_dw_mmc.c | 2 +- drivers/mmc/s5p_sdhci.c | 2 +- drivers/mmc/tegra_mmc.c | 2 +- drivers/mmc/zynq_sdhci.c | 2 +- drivers/mtd/spi/sf_probe.c | 6 +- drivers/net/xilinx_emaclite.c | 2 +- drivers/net/zynq_gem.c | 2 +- drivers/power/exynos-tmu.c | 2 +- drivers/power/pmic/pmic_max77686.c | 4 +- drivers/ram/Kconfig | 2 +- drivers/serial/ns16550.c | 2 +- drivers/serial/serial-uclass.c | 4 +- drivers/serial/serial_omap.c | 2 +- drivers/serial/serial_pl01x.c | 2 +- drivers/serial/serial_tegra.c | 4 +- drivers/serial/serial_uniphier.c | 2 +- drivers/serial/serial_zynq.c | 2 +- drivers/sound/max98095.c | 2 +- drivers/sound/wm8994.c | 2 +- drivers/tpm/tpm_tis_i2c.c | 2 +- drivers/video/exynos_dp.c | 4 +- drivers/video/exynos_dp_lowlevel.c | 2 +- drivers/video/exynos_fb.c | 8 +- drivers/video/exynos_fimd.c | 4 +- drivers/video/exynos_mipi_dsi.c | 4 +- drivers/video/tegra.c | 2 +- dts/Kconfig | 6 +- include/cli.h | 2 +- include/config_uncmd_spl.h | 4 - include/configs/microblaze-generic.h | 3 +- include/configs/socfpga_common.h | 2 +- include/configs/vpac270.h | 326 --------------------- include/dm/device-internal.h | 10 +- include/dm/device.h | 4 +- include/dm/uclass-internal.h | 4 +- include/fdtdec.h | 10 - include/linux/kconfig.h | 48 +++ lib/Makefile | 13 +- lib/fdtdec.c | 4 +- scripts/Kbuild.include | 6 + scripts/Makefile.spl | 30 +- scripts/Makefile.uncmd_spl | 5 - scripts/basic/fixdep.c | 33 ++- 94 files changed, 227 insertions(+), 818 deletions(-) delete mode 100644 board/vpac270/Kconfig delete mode 100644 board/vpac270/MAINTAINERS delete mode 100644 board/vpac270/Makefile delete mode 100644 board/vpac270/onenand.c delete mode 100644 board/vpac270/u-boot-spl.lds delete mode 100644 board/vpac270/vpac270.c delete mode 100644 configs/vpac270_nor_128_defconfig delete mode 100644 configs/vpac270_nor_256_defconfig delete mode 100644 configs/vpac270_ond_256_defconfig delete mode 100644 include/configs/vpac270.h -- 1.9.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot