diff --git a/docs/manual/adding-packages-kconfig.txt b/docs/manual/adding-packages-kconfig.txt index 8f40ea6099..a35681775f 100644 --- a/docs/manual/adding-packages-kconfig.txt +++ b/docs/manual/adding-packages-kconfig.txt @@ -91,3 +91,6 @@ be set to suit the needs of the package under consideration: * +FOO_KCONFIG_DEPENDENCIES+: the list of packages (most probably, host packages) that need to be built before this package's kconfig is interpreted. Seldom used. By default, empty. + +* +FOO_KCONFIG_SUPPORTS_DEFCONFIG+: whether the package's kconfig system + supports using defconfig files; few packages do not. By default, 'YES'. diff --git a/package/pkg-kconfig.mk b/package/pkg-kconfig.mk index 49074f9220..715c3e04ec 100644 --- a/package/pkg-kconfig.mk +++ b/package/pkg-kconfig.mk @@ -85,11 +85,35 @@ $(2)_KCONFIG_OPTS ?= $(2)_KCONFIG_FIXUP_CMDS ?= $(2)_KCONFIG_FRAGMENT_FILES ?= $(2)_KCONFIG_DOTCONFIG ?= .config +$(2)_KCONFIG_SUPPORTS_DEFCONFIG ?= YES # Register the kconfig dependencies as regular dependencies, so that # they are also accounted for in the generated graphs. $(2)_DEPENDENCIES += $$($(2)_KCONFIG_DEPENDENCIES) +# Generate the kconfig-related help: one entry for each editor. +# Additionally, if the package is *not* using an in-tree defconfig +# name, an entry for updating the package configuration file. +ifndef $(2)_HELP_CMDS +define $(2)_HELP_CMDS + $$(foreach editor, $$($(2)_KCONFIG_EDITORS), \ + @printf ' %-22s - Run %s %s\n' $(1)-$$(editor) $(1) $$(editor) + ) + $$(if $$($(2)_KCONFIG_DEFCONFIG),,\ + $$(if $$(filter YES,$$($(2)_KCONFIG_SUPPORTS_DEFCONFIG)),\ + @printf ' %-22s - Save the %s configuration as a defconfig file\n' \ + $(1)-update-defconfig $(1) + @printf ' %-22s to %s\n' '' $$($(2)_KCONFIG_FILE) + @printf ' %-22s (or override with %s_KCONFIG_FILE)\n' '' $(2) + ) + @printf ' %-22s - Save the %s configuration as a full .config file\n' \ + $(1)-update-config $(1) + @printf ' %-22s to %s\n' '' $$($(2)_KCONFIG_FILE) + @printf ' %-22s (or override with %s_KCONFIG_FILE)\n' '' $(2) + ) +endef +endif + # Call the generic package infrastructure to generate the necessary # make targets. # Note: this must be done _before_ attempting to use $$($(2)_DIR) in a