Blame view

buildroot/buildroot-2016.08.1/docs/manual/customize-outside-br.txt 4.04 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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
  // -*- mode:doc -*- ;
  // vim: set syntax=asciidoc:
  
  [[outside-br-custom]]
  === Keeping customizations outside of Buildroot
  
  As already briefly mentioned in xref:customize-dir-structure[], you can
  place project-specific customizations in two locations:
  
   * directly within the Buildroot tree, typically maintaining them using
     branches in a version control system so that upgrading to a newer
     Buildroot release is easy.
  
   * outside of the Buildroot tree, using the +BR2_EXTERNAL+ mechanism.
     This mechanism allows to keep package recipes, board support and
     configuration files outside of the Buildroot tree, while still
     having them nicely integrated in the build logic. This section
     explains how to use +BR2_EXTERNAL+.
  
  +BR2_EXTERNAL+ is an environment variable that can be used to point to
  a directory that contains Buildroot customizations. It can be passed
  to any Buildroot +make+ invocation. It is automatically saved in the
  hidden +.br-external+ file in the output directory. Thanks to this,
  there is no need to pass +BR2_EXTERNAL+ at every +make+ invocation. It
  can however be changed at any time by passing a new value, and can be
  removed by passing an empty value.
  
  .Note
  The +BR2_EXTERNAL+ path can be either an absolute or a relative path,
  but if it's passed as a relative path, it is important to note that it
  is interpreted relative to the main Buildroot source directory, *not*
  to the Buildroot output directory.
  
  Some examples:
  
  -----
  buildroot/ $ make BR2_EXTERNAL=/path/to/foobar menuconfig
  -----
  
  From now on, external definitions from the +/path/to/foobar+
  directory will be used:
  
  -----
  buildroot/ $ make
  buildroot/ $ make legal-info
  -----
  
  We can switch to another external definitions directory at any time:
  
  -----
  buildroot/ $ make BR2_EXTERNAL=/where/we/have/barfoo xconfig
  -----
  
  Or disable the usage of external definitions:
  
  -----
  buildroot/ $ make BR2_EXTERNAL= xconfig
  -----
  
  +BR2_EXTERNAL+ allows three different things:
  
   * One can store all the board-specific configuration files there,
     such as the kernel configuration, the root filesystem overlay, or
     any other configuration file for which Buildroot allows to set its
     location. The +BR2_EXTERNAL+ value is available within the
     Buildroot configuration using +$(BR2_EXTERNAL)+. As an example, one
     could set the +BR2_ROOTFS_OVERLAY+ Buildroot option to
     +$(BR2_EXTERNAL)/board/<boardname>/overlay/+ (to specify a root
     filesystem overlay), or the +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE+
     Buildroot option to
     +$(BR2_EXTERNAL)/board/<boardname>/kernel.config+ (to specify the
     location of the kernel configuration file).
  
   * One can store package recipes (i.e. +Config.in+ and
     +<packagename>.mk+), or even custom configuration options and make
     logic. Buildroot automatically includes +$(BR2_EXTERNAL)/Config.in+ to
     make it appear in the top-level configuration menu, and includes
     +$(BR2_EXTERNAL)/external.mk+ with the rest of the makefile logic.
  +
  .Note
  Providing +Config.in+ and +external.mk+ is mandatory, but they can be
     empty.
  +
  The main usage of this is to store package recipes. The recommended
     way to do this is to write a +$(BR2_EXTERNAL)/Config.in+ file that
     looks like:
  +
  ------
  source "$BR2_EXTERNAL/package/package1/Config.in"
  source "$BR2_EXTERNAL/package/package2/Config.in"
  ------
  +
  Then, have a +$(BR2_EXTERNAL)/external.mk+ file that looks like:
  +
  ------
  include $(sort $(wildcard $(BR2_EXTERNAL)/package/*/*.mk))
  ------
  +
  And then in +$(BR2_EXTERNAL)/package/package1+ and
     +$(BR2_EXTERNAL)/package/package2+ create normal Buildroot
     package recipes, as explained in xref:adding-packages[].
     If you prefer, you can also group the packages in subdirectories
     called <boardname> and adapt the above paths accordingly.
  
   * One can store Buildroot defconfigs in the +configs+ subdirectory of
     +$(BR2_EXTERNAL)+. Buildroot will automatically show them in the
     output of +make list-defconfigs+ and allow them to be loaded with the
     normal +make <name>_defconfig+ command. They will be visible under the
     +User-provided configs+' label in the 'make list-defconfigs' output.