Skip to content

Commit c7bb349

Browse files
committed
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>
1 parent 4774bb1 commit c7bb349

File tree

2 files changed

+77
-8
lines changed

2 files changed

+77
-8
lines changed

Documentation/kbuild/makefiles.txt

Lines changed: 75 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,16 @@ This document describes the Linux kernel Makefiles.
4040
--- 6.7 Custom kbuild commands
4141
--- 6.8 Preprocessing linker scripts
4242

43-
=== 7 Kbuild Variables
44-
=== 8 Makefile language
45-
=== 9 Credits
46-
=== 10 TODO
43+
=== 7 Kbuild syntax for exported headers
44+
--- 7.1 header-y
45+
--- 7.2 objhdr-y
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
4753

4854
=== 1 Overview
4955

@@ -1143,8 +1149,69 @@ When kbuild executes, the following steps are followed (roughly):
11431149
The kbuild infrastructure for *lds file are used in several
11441150
architecture-specific files.
11451151

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+
11461213

1147-
=== 7 Kbuild Variables
1214+
=== 8 Kbuild Variables
11481215

11491216
The top Makefile exports the following variables:
11501217

@@ -1206,7 +1273,7 @@ The top Makefile exports the following variables:
12061273
INSTALL_MOD_STRIP will used as the option(s) to the strip command.
12071274

12081275

1209-
=== 8 Makefile language
1276+
=== 9 Makefile language
12101277

12111278
The kernel Makefiles are designed to be run with GNU Make. The Makefiles
12121279
use only the documented features of GNU Make, but they do use many
@@ -1225,14 +1292,14 @@ time the left-hand side is used.
12251292
There are some cases where "=" is appropriate. Usually, though, ":="
12261293
is the right choice.
12271294

1228-
=== 9 Credits
1295+
=== 10 Credits
12291296

12301297
Original version made by Michael Elizabeth Chastain, <mailto:mec@shout.net>
12311298
Updates by Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de>
12321299
Updates by Sam Ravnborg <sam@ravnborg.org>
12331300
Language QA by Jan Engelhardt <jengelh@gmx.de>
12341301

1235-
=== 10 TODO
1302+
=== 11 TODO
12361303

12371304
- Describe how kbuild supports shipped files with _shipped.
12381305
- Generating offset header files.

scripts/Makefile.headersinst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ _dst := $(if $(dst),$(dst),$(obj))
1414
kbuild-file := $(srctree)/$(obj)/Kbuild
1515
include $(kbuild-file)
1616

17+
_dst := $(if $(destination-y),$(destination-y),$(_dst))
18+
1719
include scripts/Kbuild.include
1820

1921
install := $(INSTALL_HDR_PATH)/$(_dst)

0 commit comments

Comments
 (0)