dt-bindings: display/msm: add missing device nodes to mdss-* schemas
[linux-2.6-microblaze.git] / Documentation / kbuild / kbuild.rst
1 ======
2 Kbuild
3 ======
4
5
6 Output files
7 ============
8
9 modules.order
10 -------------
11 This file records the order in which modules appear in Makefiles. This
12 is used by modprobe to deterministically resolve aliases that match
13 multiple modules.
14
15 modules.builtin
16 ---------------
17 This file lists all modules that are built into the kernel. This is used
18 by modprobe to not fail when trying to load something builtin.
19
20 modules.builtin.modinfo
21 -----------------------
22 This file contains modinfo from all modules that are built into the kernel.
23 Unlike modinfo of a separate module, all fields are prefixed with module name.
24
25
26 Environment variables
27 =====================
28
29 KCPPFLAGS
30 ---------
31 Additional options to pass when preprocessing. The preprocessing options
32 will be used in all cases where kbuild does preprocessing including
33 building C files and assembler files.
34
35 KAFLAGS
36 -------
37 Additional options to the assembler (for built-in and modules).
38
39 AFLAGS_MODULE
40 -------------
41 Additional assembler options for modules.
42
43 AFLAGS_KERNEL
44 -------------
45 Additional assembler options for built-in.
46
47 KCFLAGS
48 -------
49 Additional options to the C compiler (for built-in and modules).
50
51 KRUSTFLAGS
52 ----------
53 Additional options to the Rust compiler (for built-in and modules).
54
55 CFLAGS_KERNEL
56 -------------
57 Additional options for $(CC) when used to compile
58 code that is compiled as built-in.
59
60 CFLAGS_MODULE
61 -------------
62 Additional module specific options to use for $(CC).
63
64 RUSTFLAGS_KERNEL
65 ----------------
66 Additional options for $(RUSTC) when used to compile
67 code that is compiled as built-in.
68
69 RUSTFLAGS_MODULE
70 ----------------
71 Additional module specific options to use for $(RUSTC).
72
73 LDFLAGS_MODULE
74 --------------
75 Additional options used for $(LD) when linking modules.
76
77 HOSTCFLAGS
78 ----------
79 Additional flags to be passed to $(HOSTCC) when building host programs.
80
81 HOSTCXXFLAGS
82 ------------
83 Additional flags to be passed to $(HOSTCXX) when building host programs.
84
85 HOSTRUSTFLAGS
86 -------------
87 Additional flags to be passed to $(HOSTRUSTC) when building host programs.
88
89 HOSTLDFLAGS
90 -----------
91 Additional flags to be passed when linking host programs.
92
93 HOSTLDLIBS
94 ----------
95 Additional libraries to link against when building host programs.
96
97 .. _userkbuildflags:
98
99 USERCFLAGS
100 ----------
101 Additional options used for $(CC) when compiling userprogs.
102
103 USERLDFLAGS
104 -----------
105 Additional options used for $(LD) when linking userprogs. userprogs are linked
106 with CC, so $(USERLDFLAGS) should include "-Wl," prefix as applicable.
107
108 KBUILD_KCONFIG
109 --------------
110 Set the top-level Kconfig file to the value of this environment
111 variable.  The default name is "Kconfig".
112
113 KBUILD_VERBOSE
114 --------------
115 Set the kbuild verbosity. Can be assigned same values as "V=...".
116
117 See make help for the full list.
118
119 Setting "V=..." takes precedence over KBUILD_VERBOSE.
120
121 KBUILD_EXTMOD
122 -------------
123 Set the directory to look for the kernel source when building external
124 modules.
125
126 Setting "M=..." takes precedence over KBUILD_EXTMOD.
127
128 KBUILD_OUTPUT
129 -------------
130 Specify the output directory when building the kernel.
131
132 The output directory can also be specified using "O=...".
133
134 Setting "O=..." takes precedence over KBUILD_OUTPUT.
135
136 KBUILD_EXTRA_WARN
137 -----------------
138 Specify the extra build checks. The same value can be assigned by passing
139 W=... from the command line.
140
141 See `make help` for the list of the supported values.
142
143 Setting "W=..." takes precedence over KBUILD_EXTRA_WARN.
144
145 KBUILD_DEBARCH
146 --------------
147 For the deb-pkg target, allows overriding the normal heuristics deployed by
148 deb-pkg. Normally deb-pkg attempts to guess the right architecture based on
149 the UTS_MACHINE variable, and on some architectures also the kernel config.
150 The value of KBUILD_DEBARCH is assumed (not checked) to be a valid Debian
151 architecture.
152
153 ARCH
154 ----
155 Set ARCH to the architecture to be built.
156
157 In most cases the name of the architecture is the same as the
158 directory name found in the arch/ directory.
159
160 But some architectures such as x86 and sparc have aliases.
161
162 - x86: i386 for 32 bit, x86_64 for 64 bit
163 - sh: sh for 32 bit, sh64 for 64 bit
164 - sparc: sparc32 for 32 bit, sparc64 for 64 bit
165
166 CROSS_COMPILE
167 -------------
168 Specify an optional fixed part of the binutils filename.
169 CROSS_COMPILE can be a part of the filename or the full path.
170
171 CROSS_COMPILE is also used for ccache in some setups.
172
173 CF
174 --
175 Additional options for sparse.
176
177 CF is often used on the command-line like this::
178
179     make CF=-Wbitwise C=2
180
181 INSTALL_PATH
182 ------------
183 INSTALL_PATH specifies where to place the updated kernel and system map
184 images. Default is /boot, but you can set it to other values.
185
186 INSTALLKERNEL
187 -------------
188 Install script called when using "make install".
189 The default name is "installkernel".
190
191 The script will be called with the following arguments:
192
193    - $1 - kernel version
194    - $2 - kernel image file
195    - $3 - kernel map file
196    - $4 - default install path (use root directory if blank)
197
198 The implementation of "make install" is architecture specific
199 and it may differ from the above.
200
201 INSTALLKERNEL is provided to enable the possibility to
202 specify a custom installer when cross compiling a kernel.
203
204 MODLIB
205 ------
206 Specify where to install modules.
207 The default value is::
208
209      $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
210
211 The value can be overridden in which case the default value is ignored.
212
213 INSTALL_MOD_PATH
214 ----------------
215 INSTALL_MOD_PATH specifies a prefix to MODLIB for module directory
216 relocations required by build roots.  This is not defined in the
217 makefile but the argument can be passed to make if needed.
218
219 INSTALL_MOD_STRIP
220 -----------------
221 INSTALL_MOD_STRIP, if defined, will cause modules to be
222 stripped after they are installed.  If INSTALL_MOD_STRIP is '1', then
223 the default option --strip-debug will be used.  Otherwise,
224 INSTALL_MOD_STRIP value will be used as the options to the strip command.
225
226 INSTALL_HDR_PATH
227 ----------------
228 INSTALL_HDR_PATH specifies where to install user space headers when
229 executing "make headers_*".
230
231 The default value is::
232
233     $(objtree)/usr
234
235 $(objtree) is the directory where output files are saved.
236 The output directory is often set using "O=..." on the commandline.
237
238 The value can be overridden in which case the default value is ignored.
239
240 KBUILD_ABS_SRCTREE
241 --------------------------------------------------
242 Kbuild uses a relative path to point to the tree when possible. For instance,
243 when building in the source tree, the source tree path is '.'
244
245 Setting this flag requests Kbuild to use absolute path to the source tree.
246 There are some useful cases to do so, like when generating tag files with
247 absolute path entries etc.
248
249 KBUILD_SIGN_PIN
250 ---------------
251 This variable allows a passphrase or PIN to be passed to the sign-file
252 utility when signing kernel modules, if the private key requires such.
253
254 KBUILD_MODPOST_WARN
255 -------------------
256 KBUILD_MODPOST_WARN can be set to avoid errors in case of undefined
257 symbols in the final module linking stage. It changes such errors
258 into warnings.
259
260 KBUILD_MODPOST_NOFINAL
261 ----------------------
262 KBUILD_MODPOST_NOFINAL can be set to skip the final link of modules.
263 This is solely useful to speed up test compiles.
264
265 KBUILD_EXTRA_SYMBOLS
266 --------------------
267 For modules that use symbols from other modules.
268 See more details in modules.rst.
269
270 ALLSOURCE_ARCHS
271 ---------------
272 For tags/TAGS/cscope targets, you can specify more than one arch
273 to be included in the databases, separated by blank space. E.g.::
274
275     $ make ALLSOURCE_ARCHS="x86 mips arm" tags
276
277 To get all available archs you can also specify all. E.g.::
278
279     $ make ALLSOURCE_ARCHS=all tags
280
281 KBUILD_BUILD_TIMESTAMP
282 ----------------------
283 Setting this to a date string overrides the timestamp used in the
284 UTS_VERSION definition (uname -v in the running kernel). The value has to
285 be a string that can be passed to date -d. The default value
286 is the output of the date command at one point during build.
287
288 KBUILD_BUILD_USER, KBUILD_BUILD_HOST
289 ------------------------------------
290 These two variables allow to override the user@host string displayed during
291 boot and in /proc/version. The default value is the output of the commands
292 whoami and host, respectively.
293
294 LLVM
295 ----
296 If this variable is set to 1, Kbuild will use Clang and LLVM utilities instead
297 of GCC and GNU binutils to build the kernel.