diff options
| author | Sam Ravnborg <sam@ravnborg.org> | 2009-04-10 02:52:43 -0400 |
|---|---|---|
| committer | Sam Ravnborg <sam@ravnborg.org> | 2009-04-11 02:18:08 -0400 |
| commit | c7bb349e7c25df1ae1bbb72675b9bb02e1d9c464 (patch) | |
| tree | a406b9af934e7541a9c000a74419e1ba09664c7e | |
| parent | 4774bb1ced60a94d83b28e5a42d4cf01b83d9b60 (diff) | |
kbuild: introduce destination-y for exported headers
xtensa and arm have asked for a possibility to export headers
and locate them in a specific directory when exported.
Introduce destiantion-y to support this.
This patch in additiona adds some limited
documentation for the variables used for exported headers.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Oskar Schirmer <os@emlix.com>
Cc: Mikael Starvik <mikael.starvik@axis.com>
| -rw-r--r-- | Documentation/kbuild/makefiles.txt | 83 | ||||
| -rw-r--r-- | scripts/Makefile.headersinst | 2 |
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 | |||
| 1154 | The kernel include a set of headers that is exported to userspace. | ||
| 1155 | Many headers can be exported as-is but other headers requires a | ||
| 1156 | minimal pre-processing before they are ready for user-space. | ||
| 1157 | The 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 | |||
| 1162 | Each relevant directory contain a file name "Kbuild" which specify the | ||
| 1163 | headers to be exported. | ||
| 1164 | See 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 | ||
| 1149 | The top Makefile exports the following variables: | 1216 | The 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 | ||
| 1211 | The kernel Makefiles are designed to be run with GNU Make. The Makefiles | 1278 | The kernel Makefiles are designed to be run with GNU Make. The Makefiles |
| 1212 | use only the documented features of GNU Make, but they do use many | 1279 | use only the documented features of GNU Make, but they do use many |
| @@ -1225,14 +1292,14 @@ time the left-hand side is used. | |||
| 1225 | There are some cases where "=" is appropriate. Usually, though, ":=" | 1292 | There are some cases where "=" is appropriate. Usually, though, ":=" |
| 1226 | is the right choice. | 1293 | is the right choice. |
| 1227 | 1294 | ||
| 1228 | === 9 Credits | 1295 | === 10 Credits |
| 1229 | 1296 | ||
| 1230 | Original version made by Michael Elizabeth Chastain, <mailto:mec@shout.net> | 1297 | Original version made by Michael Elizabeth Chastain, <mailto:mec@shout.net> |
| 1231 | Updates by Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de> | 1298 | Updates by Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de> |
| 1232 | Updates by Sam Ravnborg <sam@ravnborg.org> | 1299 | Updates by Sam Ravnborg <sam@ravnborg.org> |
| 1233 | Language QA by Jan Engelhardt <jengelh@gmx.de> | 1300 | Language 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)) | |||
| 14 | kbuild-file := $(srctree)/$(obj)/Kbuild | 14 | kbuild-file := $(srctree)/$(obj)/Kbuild |
| 15 | include $(kbuild-file) | 15 | include $(kbuild-file) |
| 16 | 16 | ||
| 17 | _dst := $(if $(destination-y),$(destination-y),$(_dst)) | ||
| 18 | |||
| 17 | include scripts/Kbuild.include | 19 | include scripts/Kbuild.include |
| 18 | 20 | ||
| 19 | install := $(INSTALL_HDR_PATH)/$(_dst) | 21 | install := $(INSTALL_HDR_PATH)/$(_dst) |
