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