Commit 4f827280 authored by Matt Mooney's avatar Matt Mooney Committed by Linus Torvalds

Documentation: update kbuild loadable modules goals & examples

Update section 3.3 Loadable module goals - obj-m, from $(<module_name>-objs)
to $(<module_name>-y) for easier addition of conditional objects to the
module. The examples are also updated to reflect the current state of
each Makefile used.
Signed-off-by: default avatarmatt mooney <mfm@muteddisk.com>
Reviewed-by: default avatarWANG Cong <xiyou.wangcong@gmail.com>
Signed-off-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent c7825cfa
...@@ -187,34 +187,35 @@ more details, with real examples. ...@@ -187,34 +187,35 @@ more details, with real examples.
Note: In this example $(CONFIG_ISDN_PPP_BSDCOMP) evaluates to 'm' Note: In this example $(CONFIG_ISDN_PPP_BSDCOMP) evaluates to 'm'
If a kernel module is built from several source files, you specify If a kernel module is built from several source files, you specify
that you want to build a module in the same way as above. that you want to build a module in the same way as above; however,
kbuild needs to know which object files you want to build your
Kbuild needs to know which the parts that you want to build your module from, so you have to tell it by setting a $(<module_name>-y)
module from, so you have to tell it by setting an variable.
$(<module_name>-objs) variable.
Example: Example:
#drivers/isdn/i4l/Makefile #drivers/isdn/i4l/Makefile
obj-$(CONFIG_ISDN) += isdn.o obj-$(CONFIG_ISDN_I4L) += isdn.o
isdn-objs := isdn_net_lib.o isdn_v110.o isdn_common.o isdn-y := isdn_net_lib.o isdn_v110.o isdn_common.o
In this example, the module name will be isdn.o. Kbuild will In this example, the module name will be isdn.o. Kbuild will
compile the objects listed in $(isdn-objs) and then run compile the objects listed in $(isdn-y) and then run
"$(LD) -r" on the list of these files to generate isdn.o. "$(LD) -r" on the list of these files to generate isdn.o.
Kbuild recognises objects used for composite objects by the suffix Due to kbuild recognizing $(<module_name>-y) for composite objects,
-objs, and the suffix -y. This allows the Makefiles to use you can use the value of a CONFIG_ symbol to optionally include an
the value of a CONFIG_ symbol to determine if an object is part object file as part of a composite object.
of a composite object.
Example: Example:
#fs/ext2/Makefile #fs/ext2/Makefile
obj-$(CONFIG_EXT2_FS) += ext2.o obj-$(CONFIG_EXT2_FS) += ext2.o
ext2-y := balloc.o bitmap.o ext2-y := balloc.o dir.o file.o ialloc.o inode.o ioctl.o \
ext2-$(CONFIG_EXT2_FS_XATTR) += xattr.o namei.o super.o symlink.o
ext2-$(CONFIG_EXT2_FS_XATTR) += xattr.o xattr_user.o \
In this example, xattr.o is only part of the composite object xattr_trusted.o
ext2.o if $(CONFIG_EXT2_FS_XATTR) evaluates to 'y'.
In this example, xattr.o, xattr_user.o and xattr_trusted.o are only
part of the composite object ext2.o if $(CONFIG_EXT2_FS_XATTR)
evaluates to 'y'.
Note: Of course, when you are building objects into the kernel, Note: Of course, when you are building objects into the kernel,
the syntax above will also work. So, if you have CONFIG_EXT2_FS=y, the syntax above will also work. So, if you have CONFIG_EXT2_FS=y,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment