Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • early-display
  • variant-emmc-nvme-boot
  • 2023-01-25
  • v3
  • variant-emmc-nvme-boot
  • 2020-06-01
7 results

Kbuild.include

Blame
  • Forked from Reform / reform-boundary-uboot
    Source project has a limited visibility.
    • Masahiro Yamada's avatar
      04a5c406
      kbuild: add a makefile macro useful with per-image config options · 04a5c406
      Masahiro Yamada authored
      
      Commit e02ee254 ("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: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: default avatarTom Rini <trini@konsulko.com>
      Reviewed-by: default avatarSimon Glass <sjg@chromium.org>
      04a5c406
      History
      kbuild: add a makefile macro useful with per-image config options
      Masahiro Yamada authored
      
      Commit e02ee254 ("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: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: default avatarTom Rini <trini@konsulko.com>
      Reviewed-by: default avatarSimon Glass <sjg@chromium.org>