Skip to content

Commit

Permalink
docsrc: build Documentation/ sources
Browse files Browse the repository at this point in the history
Currently source files in the Documentation/ sub-dir can easily bit-rot
since they are not generally buildable, either because they are hidden in
text files or because there are no Makefile rules for them.  This needs to
be fixed so that the source files remain usable and good examples of code
instead of bad examples.

Add the ability to build source files that are in the Documentation/ dir.
Add to Kconfig as "BUILD_DOCSRC" config symbol.

Use "CONFIG_BUILD_DOCSRC=1 make ..." to build objects from the
Documentation/ sources.  Or enable BUILD_DOCSRC in the *config system.
However, this symbol depends on HEADERS_CHECK since the header files need
to be installed (for userspace builds).

Built (using cross-tools) for x86-64, i386, alpha, ia64, sparc32,
sparc64, powerpc, sh, m68k, & mips.

Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
rddunlap authored and torvalds committed Aug 12, 2008
1 parent bc2aa80 commit 3794f3e
Show file tree
Hide file tree
Showing 15 changed files with 118 additions and 1 deletion.
7 changes: 7 additions & 0 deletions Documentation/DocBook/Makefile
Expand Up @@ -102,6 +102,13 @@ C-procfs-example = procfs_example.xml
C-procfs-example2 = $(addprefix $(obj)/,$(C-procfs-example))
$(obj)/procfs-guide.xml: $(C-procfs-example2)

# List of programs to build
##oops, this is a kernel module::hostprogs-y := procfs_example
obj-m += procfs_example.o

# Tell kbuild to always build the programs
always := $(hostprogs-y)

notfoundtemplate = echo "*** You have to install docbook-utils or xmlto ***"; \
exit 1
db2xtemplate = db2TYPE -o $(dir $@) $<
Expand Down
3 changes: 3 additions & 0 deletions Documentation/Makefile
@@ -0,0 +1,3 @@
obj-m := DocBook/ accounting/ auxdisplay/ connector/ \
filesystems/configfs/ ia64/ networking/ \
pcmcia/ spi/ video4linux/ vm/ watchdog/src/
10 changes: 10 additions & 0 deletions Documentation/accounting/Makefile
@@ -0,0 +1,10 @@
# kbuild trick to avoid linker error. Can be omitted if a module is built.
obj- := dummy.o

# List of programs to build
hostprogs-y := getdelays

# Tell kbuild to always build the programs
always := $(hostprogs-y)

HOSTCFLAGS_getdelays.o += -I$(objtree)/usr/include
10 changes: 10 additions & 0 deletions Documentation/auxdisplay/Makefile
@@ -0,0 +1,10 @@
# kbuild trick to avoid linker error. Can be omitted if a module is built.
obj- := dummy.o

# List of programs to build
hostprogs-y := cfag12864b-example

# Tell kbuild to always build the programs
always := $(hostprogs-y)

HOSTCFLAGS_cfag12864b-example.o += -I$(objtree)/usr/include
11 changes: 11 additions & 0 deletions Documentation/connector/Makefile
@@ -0,0 +1,11 @@
ifneq ($(CONFIG_CONNECTOR),)
obj-m += cn_test.o
endif

# List of programs to build
hostprogs-y := ucon

# Tell kbuild to always build the programs
always := $(hostprogs-y)

HOSTCFLAGS_ucon.o += -I$(objtree)/usr/include
3 changes: 3 additions & 0 deletions Documentation/filesystems/configfs/Makefile
@@ -0,0 +1,3 @@
ifneq ($(CONFIG_CONFIGFS_FS),)
obj-m += configfs_example_explicit.o configfs_example_macros.o
endif
8 changes: 8 additions & 0 deletions Documentation/ia64/Makefile
@@ -0,0 +1,8 @@
# kbuild trick to avoid linker error. Can be omitted if a module is built.
obj- := dummy.o

# List of programs to build
hostprogs-y := aliasing-test

# Tell kbuild to always build the programs
always := $(hostprogs-y)
8 changes: 8 additions & 0 deletions Documentation/networking/Makefile
@@ -0,0 +1,8 @@
# kbuild trick to avoid linker error. Can be omitted if a module is built.
obj- := dummy.o

# List of programs to build
hostprogs-y := ifenslave

# Tell kbuild to always build the programs
always := $(hostprogs-y)
10 changes: 10 additions & 0 deletions Documentation/pcmcia/Makefile
@@ -0,0 +1,10 @@
# kbuild trick to avoid linker error. Can be omitted if a module is built.
obj- := dummy.o

# List of programs to build
hostprogs-y := crc32hash

# Tell kbuild to always build the programs
always := $(hostprogs-y)

HOSTCFLAGS_crc32hash.o += -I$(objtree)/usr/include
11 changes: 11 additions & 0 deletions Documentation/spi/Makefile
@@ -0,0 +1,11 @@
# kbuild trick to avoid linker error. Can be omitted if a module is built.
obj- := dummy.o

# List of programs to build
hostprogs-y := spidev_test spidev_fdx

# Tell kbuild to always build the programs
always := $(hostprogs-y)

HOSTCFLAGS_spidev_test.o += -I$(objtree)/usr/include
HOSTCFLAGS_spidev_fdx.o += -I$(objtree)/usr/include
8 changes: 8 additions & 0 deletions Documentation/video4linux/Makefile
@@ -0,0 +1,8 @@
# kbuild trick to avoid linker error. Can be omitted if a module is built.
obj- := dummy.o

# List of programs to build
hostprogs-y := v4lgrab

# Tell kbuild to always build the programs
always := $(hostprogs-y)
8 changes: 8 additions & 0 deletions Documentation/vm/Makefile
@@ -0,0 +1,8 @@
# kbuild trick to avoid linker error. Can be omitted if a module is built.
obj- := dummy.o

# List of programs to build
hostprogs-y := slabinfo

# Tell kbuild to always build the programs
always := $(hostprogs-y)
8 changes: 8 additions & 0 deletions Documentation/watchdog/src/Makefile
@@ -0,0 +1,8 @@
# kbuild trick to avoid linker error. Can be omitted if a module is built.
obj- := dummy.o

# List of programs to build
hostprogs-y := watchdog-simple watchdog-test

# Tell kbuild to always build the programs
always := $(hostprogs-y)
5 changes: 4 additions & 1 deletion Makefile
Expand Up @@ -821,6 +821,9 @@ ifdef CONFIG_HEADERS_CHECK
endif
ifdef CONFIG_SAMPLES
$(Q)$(MAKE) $(build)=samples
endif
ifdef CONFIG_BUILD_DOCSRC
$(Q)$(MAKE) $(build)=Documentation
endif
$(call vmlinux-modpost)
$(call if_changed_rule,vmlinux__)
Expand Down Expand Up @@ -1166,7 +1169,7 @@ MRPROPER_FILES += .config .config.old include/asm .version .old_version \
#
clean: rm-dirs := $(CLEAN_DIRS)
clean: rm-files := $(CLEAN_FILES)
clean-dirs := $(addprefix _clean_,$(srctree) $(vmlinux-alldirs))
clean-dirs := $(addprefix _clean_,$(srctree) $(vmlinux-alldirs) Documentation)

PHONY += $(clean-dirs) clean archclean
$(clean-dirs):
Expand Down
9 changes: 9 additions & 0 deletions lib/Kconfig.debug
Expand Up @@ -735,6 +735,15 @@ config FIREWIRE_OHCI_REMOTE_DMA

If unsure, say N.

menuconfig BUILD_DOCSRC
bool "Build targets in Documentation/ tree"
depends on HEADERS_CHECK
help
This option attempts to build objects from the source files in the
kernel Documentation/ tree.

Say N if you are unsure.

source "samples/Kconfig"

source "lib/Kconfig.kgdb"

0 comments on commit 3794f3e

Please sign in to comment.