]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
doc: move README.kconfig to HTML documentation
authorHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Mon, 11 Nov 2024 09:05:39 +0000 (10:05 +0100)
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Sat, 23 Nov 2024 22:15:39 +0000 (23:15 +0100)
* format according to Sphinx style
* add link to Linux Kconfig documentation
* sort table alphabetically in 'Conversion from boards.cfg to Kconfig'

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
doc/develop/index.rst
doc/develop/kconfig.rst [moved from doc/README.kconfig with 54% similarity]

index 30f7fdb8847f4fd0059bf9636b3e83e39df49388..d9f2a8382077f35dfc4b688a2678f9cc496a748e 100644 (file)
@@ -13,6 +13,7 @@ General
    codingstyle
    designprinciples
    docstyle
+   kconfig
    memory
    patman
    process
similarity index 54%
rename from doc/README.kconfig
rename to doc/develop/kconfig.rst
index 808cf56e59c41b28321326b41da84d147c114131..227074dc497300a40fd33345a385a7fd99116967 100644 (file)
@@ -1,3 +1,5 @@
+.. SPDX-License-Identifier: GPL-2.0-or-later
+
 Kconfig in U-Boot
 =================
 
@@ -5,22 +7,20 @@ This document describes the configuration infrastructure of U-Boot.
 
 The conventional configuration was replaced by Kconfig at v2014.10-rc1 release.
 
-
 Language Specification
 ----------------------
 
-Kconfig originates in Linux Kernel.
-See the file "Documentation/kbuild/kconfig*.txt" in your Linux Kernel
-source directory for a basic specification of Kconfig.
-
+The Kconfig configuration language originates in Linux kernel.
+See the Linux document
+`Kconfig Language <https://www.kernel.org/doc/html/latest/kbuild/kconfig-language.html>`_
+for a description of Kconfig.
 
 Difference from Linux's Kconfig
 -------------------------------
 
 Here are some worth-mentioning configuration targets.
 
-- silentoldconfig
-
+silentoldconfig
   This target updates .config, include/generated/autoconf.h and
   include/configs/* as in Linux.  In U-Boot, it also does the following
   for the compatibility with the old configuration system:
@@ -33,31 +33,26 @@ Here are some worth-mentioning configuration targets.
    * create tpl/include/autoconf.mk (TPL only)
 
    If we could completely switch to Kconfig in a long run
-   (i.e. remove all the include/configs/*.h), those additional processings
+   (i.e. remove all the include/configs/\*.h), those additional processings
    above would be removed.
 
-- defconfig
-
+defconfig
   In U-Boot, "make defconfig" is a shorthand of "make sandbox_defconfig"
 
-- <board>_defconfig
-
+<board>_defconfig
   Now it works as in Linux.
-  The prefixes such as "+S:" in *_defconfig are deprecated.
+  The prefixes such as "+S:" in \*_defconfig are deprecated.
   You can simply remove the prefixes.  Do not add them for new boards.
 
-- <board>_config
-
+<board>_config
   This does not exist in Linux's Kconfig.
   "make <board>_config" works the same as "make <board>_defconfig".
   Prior to Kconfig, in U-Boot, "make <board>_config" was used for the
   configuration.  It is still supported for backward compatibility, so
   we do not need to update the distro recipes.
 
-
 The other configuration targets work as in Linux Kernel.
 
-
 Migration steps to Kconfig
 --------------------------
 
@@ -84,68 +79,79 @@ Configuration file for use in makefiles
 When adding a new CONFIG macro, it is highly recommended to add it to Kconfig
 rather than to a header file.
 
-
 Conversion from boards.cfg to Kconfig
 -------------------------------------
 
 Prior to Kconfig, boards.cfg was a primary database that contained Arch, CPU,
-SoC, etc. of all the supported boards.  It was deleted when switching to
-Kconfig.  Each field of boards.cfg was converted as follows:
-
- Status      ->  "S:" entry of MAINTAINERS
- Arch        ->  CONFIG_SYS_ARCH defined by Kconfig
- CPU         ->  CONFIG_SYS_CPU defined by Kconfig
- SoC         ->  CONFIG_SYS_SOC defined by Kconfig
- Vendor      ->  CONFIG_SYS_VENDOR defined by Kconfig
- Board       ->  CONFIG_SYS_BOARD defined by Kconfig
- Target      ->  File name of defconfig (configs/<target>_defconfig)
- Maintainers ->  "M:" entry of MAINTAINERS
-
+SoC, etc. of all the supported boards. It was deleted when switching to
+Kconfig. Each field of boards.cfg was converted as follows:
+
+=========== ====================================================
+From        To
+=========== ====================================================
+Arch        CONFIG_SYS_ARCH defined by Kconfig
+Board       CONFIG_SYS_BOARD defined by Kconfig
+CPU         CONFIG_SYS_CPU defined by Kconfig
+Maintainers "M:" entry of MAINTAINERS
+SoC         CONFIG_SYS_SOC defined by Kconfig
+Status      "S:" entry of MAINTAINERS
+Target      File name of defconfig (configs/<target>\_defconfig)
+Vendor      CONFIG_SYS_VENDOR defined by Kconfig
+=========== ====================================================
 
 Tips to add/remove boards
 -------------------------
 
 When adding a new board, the following steps are generally needed:
 
- [1] Add a header file include/configs/<target>.h
- [2] Make sure to define necessary CONFIG_SYS_* in Kconfig:
-       Define CONFIG_SYS_CPU="cpu" to compile arch/<arch>/cpu/<cpu>
-       Define CONFIG_SYS_SOC="soc" to compile arch/<arch>/cpu/<cpu>/<soc>
-       Define CONFIG_SYS_VENDOR="vendor" to compile board/<vendor>/common/*
-         and board/<vendor>/<board>/*
-       Define CONFIG_SYS_BOARD="board" to compile board/<board>/*
-         (or board/<vendor>/<board>/* if CONFIG_SYS_VENDOR is defined)
-       Define CONFIG_SYS_CONFIG_NAME="target" to include
-         include/configs/<target>.h
- [3] Add a new entry to the board select menu in Kconfig.
-     The board select menu is located in arch/<arch>/Kconfig or
-     arch/<arch>/*/Kconfig.
- [4] Add a MAINTAINERS file
-     It is generally placed at board/<board>/MAINTAINERS or
-     board/<vendor>/<board>/MAINTAINERS
- [5] Add configs/<target>_defconfig
+1. Add a header file include/configs/<target>.h
+
+2. Make sure to define necessary CONFIG_SYS_* in Kconfig:
+
+   * Define CONFIG_SYS_CPU="cpu" to compile arch/<arch>/cpu/<cpu>
+   * Define CONFIG_SYS_SOC="soc" to compile arch/<arch>/cpu/<cpu>/<soc>
+   * Define CONFIG_SYS_VENDOR="vendor" to compile board/<vendor>/common/\*
+     and board/<vendor>/<board>/\*
+   * Define CONFIG_SYS_BOARD="board" to compile board/<board>/\*
+     (or board/<vendor>/<board>/* if CONFIG_SYS_VENDOR is defined)
+     Define CONFIG_SYS_CONFIG_NAME="target" to include
+     include/configs/<target>.h
+
+3. Add a new entry to the board select menu in Kconfig.
+   The board select menu is located in arch/<arch>/Kconfig or
+   arch/<arch>/\*/Kconfig.
+
+4. Add a MAINTAINERS file
+   It is generally placed at board/<board>/MAINTAINERS or
+   board/<vendor>/<board>/MAINTAINERS
+
+5. Add configs/<target>_defconfig
 
 When removing an obsolete board, the following steps are generally needed:
 
- [1] Remove configs/<target>_defconfig
- [2] Remove include/configs/<target>.h if it is not used by any other boards
- [3] Remove board/<vendor>/<board>/* or board/<board>/* if it is not used
-     by any other boards
- [4] Update MAINTAINERS if necessary
- [5] Remove the unused entry from the board select menu in Kconfig
- [6] Add an entry to doc/README.scrapyard
+1. Remove configs/<target>_defconfig
+
+2. Remove include/configs/<target>.h if it is not used by any other boards
+
+3. Remove board/<vendor>/<board>/\* or board/<board>/\* if it is not used
+   by any other boards
+
+4. Update MAINTAINERS if necessary
+
+5. Remove the unused entry from the board select menu in Kconfig
 
+6. Add an entry to doc/README.scrapyard
 
 TODO
 ----
 
-- In the pre-Kconfig, a single board had multiple entries in the boards.cfg
-  file with differences in the option fields.  The corresponding defconfig
-  files were auto-generated when switching to Kconfig.  Now we have too many
-  defconfig files compared with the number of the supported boards.  It is
+* In the pre-Kconfig, a single board had multiple entries in the boards.cfg
+  file with differences in the option fields. The corresponding defconfig
+  files were auto-generated when switching to Kconfig. Now we have too many
+  defconfig files compared with the number of the supported boards. It is
   recommended to have only one defconfig per board and allow users to select
   the config options.
 
-- Move the config macros in header files to Kconfig.  When we move at least
+* Move the config macros in header files to Kconfig. When we move at least
   macros used in makefiles, we can drop include/autoconfig.mk, which makes
   the build scripts much simpler.