Blame view

buildroot/buildroot-2016.08.1/docs/manual/adding-packages-kconfig.txt 3.27 KB
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
  // -*- mode:doc; -*-
  // vim: set syntax=asciidoc:
  
  === Infrastructure for packages using kconfig for configuration files
  
  A popular way for a software package to handle user-specified
  configuration is +kconfig+. Among others, it is used by the Linux
  kernel, Busybox, and Buildroot itself. The presence of a .config file
  and a +menuconfig+ target are two well-known symptoms of kconfig being
  used.
  
  Buildroot features an infrastructure for packages that use kconfig for
  their configuration. This infrastructure provides the necessary logic to
  expose the package's +menuconfig+ target as +foo-menuconfig+ in
  Buildroot, and to handle the copying back and forth of the configuration
  file in a correct way.
  
  The +kconfig-package+ infrastructure is based on the +generic-package+
  infrastructure. All variables supported by +generic-package+ are
  available in +kconfig-package+ as well. See
  xref:generic-package-reference[] for more details.
  
  In order to use the +kconfig-package+ infrastructure for a Buildroot
  package, the minimally required lines in the +.mk+ file, in addition to
  the variables required by the +generic-package+ infrastructure, are:
  
  ------------------------------
  FOO_KCONFIG_FILE = reference-to-source-configuration-file
  
  $(eval $(kconfig-package))
  ------------------------------
  
  This snippet creates the following make targets:
  
  * +foo-menuconfig+, which calls the package's +menuconfig+ target
  
  * +foo-update-config+, which copies the configuration back to the
    source configuration file. It is not possible to use this target
    when fragment files are set.
  
  * +foo-update-defconfig+, which copies the configuration back to the
    source configuration file. The configuration file will only list the
    options that differ from the default values. It is not possible to
    use this target when fragment files are set.
  
  and ensures that the source configuration file is copied to the build
  directory at the right moment.
  
  There are two options to specify a configuration file to use, either
  +FOO_KCONFIG_FILE+ (as in the example, above) or +FOO_KCONFIG_DEFCONFIG+.
  It is mandatory to provide either, but not both:
  
  * +FOO_KCONFIG_FILE+ specifies the path to a defconfig or full-config file
    to be used to configure the package.
  
  * +FOO_KCONFIG_DEFCONFIG+ specifies the defconfig 'make' rule to call to
    configure the package.
  
  In addition to these minimally required lines, several optional variables can
  be set to suit the needs of the package under consideration:
  
  * +FOO_KCONFIG_EDITORS+: a space-separated list of kconfig editors to
    support, for example 'menuconfig xconfig'. By default, 'menuconfig'.
  
  * +FOO_KCONFIG_FRAGMENT_FILES+: a space-separated list of configuration
    fragment files that are merged to the main configuration file.
    Fragment files are typically used when there is a desire to stay in sync
    with an upstream (def)config file, with some minor modifications.
  
  * +FOO_KCONFIG_OPTS+: extra options to pass when calling the kconfig
    editors. This may need to include '$(FOO_MAKE_OPTS)', for example. By
    default, empty.
  
  * +FOO_KCONFIG_FIXUP_CMDS+: a list of shell commands needed to fixup the
    configuration file after copying it or running a kconfig editor. Such
    commands may be needed to ensure a configuration consistent with other
    configuration of Buildroot, for example. By default, empty.