aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/kbuild/makefiles.txt83
-rw-r--r--scripts/Makefile.headersinst2
2 files changed, 77 insertions, 8 deletions
diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt
index 51104f9194a5..d4b05672f9f7 100644
--- a/Documentation/kbuild/makefiles.txt
+++ b/Documentation/kbuild/makefiles.txt
@@ -40,10 +40,16 @@ This document describes the Linux kernel Makefiles.
40 --- 6.7 Custom kbuild commands 40 --- 6.7 Custom kbuild commands
41 --- 6.8 Preprocessing linker scripts 41 --- 6.8 Preprocessing linker scripts
42 42
43 === 7 Kbuild Variables 43 === 7 Kbuild syntax for exported headers
44 === 8 Makefile language 44 --- 7.1 header-y
45 === 9 Credits 45 --- 7.2 objhdr-y
46 === 10 TODO 46 --- 7.3 destination-y
47 --- 7.4 unifdef-y (deprecated)
48
49 === 8 Kbuild Variables
50 === 9 Makefile language
51 === 10 Credits
52 === 11 TODO
47 53
48=== 1 Overview 54=== 1 Overview
49 55
@@ -1143,8 +1149,69 @@ When kbuild executes, the following steps are followed (roughly):
1143 The kbuild infrastructure for *lds file are used in several 1149 The kbuild infrastructure for *lds file are used in several
1144 architecture-specific files. 1150 architecture-specific files.
1145 1151
1152=== 7 Kbuild syntax for exported headers
1153
1154The kernel include a set of headers that is exported to userspace.
1155Many headers can be exported as-is but other headers requires a
1156minimal pre-processing before they are ready for user-space.
1157The pre-processing does:
1158- drop kernel specific annotations
1159- drop include of compiler.h
1160- drop all sections that is kernel internat (guarded by ifdef __KERNEL__)
1161
1162Each relevant directory contain a file name "Kbuild" which specify the
1163headers to be exported.
1164See subsequent chapter for the syntax of the Kbuild file.
1165
1166 --- 7.1 header-y
1167
1168 header-y specify header files to be exported.
1169
1170 Example:
1171 #include/linux/Kbuild
1172 header-y += usb/
1173 header-y += aio_abi.h
1174
1175 The convention is to list one file per line and
1176 preferably in alphabetic order.
1177
1178 header-y also specify which subdirectories to visit.
1179 A subdirectory is identified by a trailing '/' which
1180 can be seen in the example above for the usb subdirectory.
1181
1182 Subdirectories are visited before their parent directories.
1183
1184 --- 7.2 objhdr-y
1185
1186 objhdr-y specifies generated files to be exported.
1187 Generated files are special as they need to be looked
1188 up in another directory when doing 'make O=...' builds.
1189
1190 Example:
1191 #include/linux/Kbuild
1192 objhdr-y += version.h
1193
1194 --- 7.3 destination-y
1195
1196 When an architecture have a set of exported headers that needs to be
1197 exported to a different directory destination-y is used.
1198 destination-y specify the destination directory for all exported
1199 headers in the file where it is present.
1200
1201 Example:
1202 #arch/xtensa/platforms/s6105/include/platform/Kbuild
1203 destination-y := include/linux
1204
1205 In the example above all exported headers in the Kbuild file
1206 will be located in the directory "include/linux" when exported.
1207
1208
1209 --- 7.4 unifdef-y (deprecated)
1210
1211 unifdef-y is deprecated. A direct replacement is header-y.
1212
1146 1213
1147=== 7 Kbuild Variables 1214=== 8 Kbuild Variables
1148 1215
1149The top Makefile exports the following variables: 1216The top Makefile exports the following variables:
1150 1217
@@ -1206,7 +1273,7 @@ The top Makefile exports the following variables:
1206 INSTALL_MOD_STRIP will used as the option(s) to the strip command. 1273 INSTALL_MOD_STRIP will used as the option(s) to the strip command.
1207 1274
1208 1275
1209=== 8 Makefile language 1276=== 9 Makefile language
1210 1277
1211The kernel Makefiles are designed to be run with GNU Make. The Makefiles 1278The kernel Makefiles are designed to be run with GNU Make. The Makefiles
1212use only the documented features of GNU Make, but they do use many 1279use only the documented features of GNU Make, but they do use many
@@ -1225,14 +1292,14 @@ time the left-hand side is used.
1225There are some cases where "=" is appropriate. Usually, though, ":=" 1292There are some cases where "=" is appropriate. Usually, though, ":="
1226is the right choice. 1293is the right choice.
1227 1294
1228=== 9 Credits 1295=== 10 Credits
1229 1296
1230Original version made by Michael Elizabeth Chastain, <mailto:mec@shout.net> 1297Original version made by Michael Elizabeth Chastain, <mailto:mec@shout.net>
1231Updates by Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de> 1298Updates by Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de>
1232Updates by Sam Ravnborg <sam@ravnborg.org> 1299Updates by Sam Ravnborg <sam@ravnborg.org>
1233Language QA by Jan Engelhardt <jengelh@gmx.de> 1300Language QA by Jan Engelhardt <jengelh@gmx.de>
1234 1301
1235=== 10 TODO 1302=== 11 TODO
1236 1303
1237- Describe how kbuild supports shipped files with _shipped. 1304- Describe how kbuild supports shipped files with _shipped.
1238- Generating offset header files. 1305- Generating offset header files.
diff --git a/scripts/Makefile.headersinst b/scripts/Makefile.headersinst
index 612dc13ddd85..095cfc8b9dbf 100644
--- a/scripts/Makefile.headersinst
+++ b/scripts/Makefile.headersinst
@@ -14,6 +14,8 @@ _dst := $(if $(dst),$(dst),$(obj))
14kbuild-file := $(srctree)/$(obj)/Kbuild 14kbuild-file := $(srctree)/$(obj)/Kbuild
15include $(kbuild-file) 15include $(kbuild-file)
16 16
17_dst := $(if $(destination-y),$(destination-y),$(_dst))
18
17include scripts/Kbuild.include 19include scripts/Kbuild.include
18 20
19install := $(INSTALL_HDR_PATH)/$(_dst) 21install := $(INSTALL_HDR_PATH)/$(_dst)