Commit:     9b3e4dad7e58405de398faa17cb4691ca85eb050
Parent:     312b1485fb509c9bc32eda28ad29537896658cb8
Author:     Sam Ravnborg <[EMAIL PROTECTED]>
AuthorDate: Mon Jan 28 21:49:46 2008 +0100
Committer:  Sam Ravnborg <[EMAIL PROTECTED]>
CommitDate: Mon Jan 28 23:21:19 2008 +0100

    kconfig: document use of HAVE_*
    It has been discussed on lkml several times but we need
    it documented as this is new stuff.
    Signed-off-by: Sam Ravnborg <[EMAIL PROTECTED]>
 Documentation/kbuild/kconfig-language.txt |   36 +++++++++++++++++++++++++++++
 1 files changed, 36 insertions(+), 0 deletions(-)

diff --git a/Documentation/kbuild/kconfig-language.txt 
index a43fcc6..649cb87 100644
--- a/Documentation/kbuild/kconfig-language.txt
+++ b/Documentation/kbuild/kconfig-language.txt
@@ -330,6 +330,42 @@ This is a collection of Kconfig tips, most of which aren't 
obvious at
 first glance and most of which have become idioms in several Kconfig
+Adding common features and make the usage configurable
+It is a common idiom to implement a feature/functionality that are
+relevant for some architectures but not all.
+The recommended way to do so is to use a config variable named HAVE_*
+that is defined in a common Kconfig file and selected by the relevant
+An example is the generic IOMAP functionality.
+We would in lib/Kconfig see:
+# Generic IOMAP is used to ...
+       depends on HAVE_GENERIC_IOMAP && FOO
+And in lib/Makefile we would see:
+obj-$(CONFIG_GENERIC_IOMAP) += iomap.o
+For each architecture using the generic IOMAP functionality we would see:
+config X86
+       select ...
+       select HAVE_GENERIC_IOMAP
+       select ...
+Note: we use the existing config option and avoid creating a new
+config variable to select HAVE_GENERIC_IOMAP.
+Note: the use of the internal config variable HAVE_GENERIC_IOMAP, it is
+introduced to overcome the limitation of select which will force a
+config option to 'y' no matter the dependencies.
+The dependencies are moved to the symbol GENERIC_IOMAP and we avoid the
+situation where select forces a symbol equals to 'y'.
 Build as module only
 To restrict a component build to module-only, qualify its config symbol
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to