From bfdfaeae500a3b194b73b01e92a8034791a58b7f Mon Sep 17 00:00:00 2001 From: Masahiro Yamada Date: Mon, 20 Jan 2014 14:08:08 +0900 Subject: kbuild: specify build_docproc as a phony target PHONY target is more suitable for "build_docproc" target. Because PHONY targets are always executed, they do not have to take FORCE as a prerequisite. Signed-off-by: Masahiro Yamada Signed-off-by: Michal Marek diff --git a/scripts/Makefile b/scripts/Makefile index 01e7adb..1d07860 100644 --- a/scripts/Makefile +++ b/scripts/Makefile @@ -27,10 +27,10 @@ always := $(hostprogs-y) $(hostprogs-m) hostprogs-y += unifdef docproc # These targets are used internally to avoid "is up to date" messages -PHONY += build_unifdef -build_unifdef: scripts/unifdef FORCE +PHONY += build_unifdef build_docproc +build_unifdef: $(obj)/unifdef @: -build_docproc: scripts/docproc FORCE +build_docproc: $(obj)/docproc @: subdir-$(CONFIG_MODVERSIONS) += genksyms -- cgit v0.10.2 From 6f89b9c1d6b29eaa600ac4a8ac1314b0d06f15e3 Mon Sep 17 00:00:00 2001 From: Masahiro Yamada Date: Mon, 20 Jan 2014 14:10:10 +0900 Subject: kbuild: docbook: include cmd files more simply Signed-off-by: Masahiro Yamada Signed-off-by: Michal Marek diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile index 0f9c6ff..105ba8e 100644 --- a/Documentation/DocBook/Makefile +++ b/Documentation/DocBook/Makefile @@ -36,6 +36,7 @@ PS_METHOD = $(prefer-db2x) # The targets that may be used. PHONY += xmldocs sgmldocs psdocs pdfdocs htmldocs mandocs installmandocs cleandocs +targets += $(DOCBOOKS) BOOKS := $(addprefix $(obj)/,$(DOCBOOKS)) xmldocs: $(BOOKS) sgmldocs: xmldocs @@ -91,14 +92,6 @@ endef $(call if_changed_rule,docproc) ### -#Read in all saved dependency files -cmd_files := $(wildcard $(foreach f,$(BOOKS),$(dir $(f)).$(notdir $(f)).cmd)) - -ifneq ($(cmd_files),) - include $(cmd_files) -endif - -### # Changes in kernel-doc force a rebuild of all documentation $(BOOKS): $(KERNELDOC) -- cgit v0.10.2 From 100da4c0150c97ce34d4d3b38bf2f5449b05ae4f Mon Sep 17 00:00:00 2001 From: Masahiro Yamada Date: Mon, 20 Jan 2014 14:10:11 +0900 Subject: kbuild: docbook: specify KERNELDOC dependency correctly It is not a good idea to describe %.xml: %.tmpl FORCE ... and $(BOOKS): $(KERNELDOC) separately. This cannot detect missing template files. For example, add something to DOCBOOKS variable: DOCBOOKS += foobar.xml and run make xmldocs It will succeed even if Documention/DocBook/foobar.tmpl does not exist. Signed-off-by: Masahiro Yamada Signed-off-by: Michal Marek diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile index 105ba8e..89d9982 100644 --- a/Documentation/DocBook/Makefile +++ b/Documentation/DocBook/Makefile @@ -88,13 +88,9 @@ define rule_docproc ) > $(dir $@).$(notdir $@).cmd endef -%.xml: %.tmpl FORCE +%.xml: %.tmpl $(KERNELDOC) $(DOCPROC) FORCE $(call if_changed_rule,docproc) -### -# Changes in kernel-doc force a rebuild of all documentation -$(BOOKS): $(KERNELDOC) - # Tell kbuild to always build the programs always := $(hostprogs-y) -- cgit v0.10.2 From 9c8cdb71644a22c2ffa0a7daa1b54cb6ed718c47 Mon Sep 17 00:00:00 2001 From: Paul Gortmaker Date: Thu, 13 Feb 2014 16:28:58 -0500 Subject: kbuild: unconditionally clobber include/linux/version.h on distclean As of v3.7, the UAPI changes relocated headers around such that the kernel version header lived in a new place. If a person is bisecting and if you go back to pre-UAPI days, you will create an include/linux/version.h -- then if you checkout a post-UAPI kernel, and even run "make distclean" it still won't delete that old version file. So you get a situation like this: $ grep -R LINUX_VERSION_CODE include/ include/generated/uapi/linux/version.h:#define LINUX_VERSION_CODE 200192 include/linux/version.h:#define LINUX_VERSION_CODE 132646 The value in that second line is representative of a v2.6.38 version. And it will be sourced/used, hence leading to strange behaviours, such as drivers/staging content (which typically hasn't been purged of version ifdefs) failing to build. Since it is a subtle mode of failure, lets always clobber the old file when doing a distclean. Signed-off-by: Paul Gortmaker Acked-by: David Howells Signed-off-by: Michal Marek diff --git a/Makefile b/Makefile index 606ef7c..aae58aa 100644 --- a/Makefile +++ b/Makefile @@ -1070,7 +1070,7 @@ MRPROPER_FILES += .config .config.old .version .old_version $(version_h) \ Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \ signing_key.priv signing_key.x509 x509.genkey \ extra_certificates signing_key.x509.keyid \ - signing_key.x509.signer + signing_key.x509.signer include/linux/version.h # clean - Delete most, but leave enough to build external modules # -- cgit v0.10.2 From ec3fadd64b9940baa2a369bf978e8561837db3f5 Mon Sep 17 00:00:00 2001 From: Masahiro Yamada Date: Tue, 18 Mar 2014 15:47:13 +0900 Subject: kbuild: docbook: use $(obj) and $(src) rather than specific path Signed-off-by: Masahiro Yamada Signed-off-by: Michal Marek diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile index 89d9982..c19ebea 100644 --- a/Documentation/DocBook/Makefile +++ b/Documentation/DocBook/Makefile @@ -16,7 +16,7 @@ DOCBOOKS := z8530book.xml device-drivers.xml \ alsa-driver-api.xml writing-an-alsa-driver.xml \ tracepoint.xml drm.xml media_api.xml -include $(srctree)/Documentation/DocBook/media/Makefile +include $(src)/media/Makefile ### # The build process is as follows (targets): @@ -59,14 +59,14 @@ mandocs: $(MAN) installmandocs: mandocs mkdir -p /usr/local/man/man9/ - install Documentation/DocBook/man/*.9.gz /usr/local/man/man9/ + install $(obj)/man/*.9.gz /usr/local/man/man9/ ### #External programs used KERNELDOC = $(srctree)/scripts/kernel-doc DOCPROC = $(objtree)/scripts/docproc -XMLTOFLAGS = -m $(srctree)/Documentation/DocBook/stylesheet.xsl +XMLTOFLAGS = -m $(srctree)/$(src)/stylesheet.xsl XMLTOFLAGS += --skip-validation ### @@ -128,7 +128,7 @@ quiet_cmd_db2pdf = PDF $@ index = index.html -main_idx = Documentation/DocBook/$(index) +main_idx = $(obj)/$(index) build_main_index = rm -rf $(main_idx); \ echo '

Linux Kernel HTML Documentation

' >> $(main_idx) && \ echo '

Kernel Version: $(KERNELVERSION)

' >> $(main_idx) && \ @@ -137,7 +137,7 @@ build_main_index = rm -rf $(main_idx); \ quiet_cmd_db2html = HTML $@ cmd_db2html = xmlto html $(XMLTOFLAGS) -o $(patsubst %.html,%,$@) $< && \ echo ' \ - $(patsubst %.html,%,$(notdir $@))

' > $@ + $(patsubst %.html,%,$(notdir $@))

' > $@ %.html: %.xml @(which xmlto > /dev/null 2>&1) || \ -- cgit v0.10.2 From 13338935f1574a2dcd1c891461b0dcc42f8cff42 Mon Sep 17 00:00:00 2001 From: Masahiro Yamada Date: Thu, 20 Mar 2014 11:08:20 +0900 Subject: kbuild: move "quote" to Kbuild.include to be consistent Signed-off-by: Masahiro Yamada Signed-off-by: Michal Marek diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include index 547e15d..2ec6829 100644 --- a/scripts/Kbuild.include +++ b/scripts/Kbuild.include @@ -3,6 +3,7 @@ # Convenient variables comma := , +quote := " squote := ' empty := space := $(empty) $(empty) diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 49392ec..e664436 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -367,7 +367,3 @@ quiet_cmd_xzmisc = XZMISC $@ cmd_xzmisc = (cat $(filter-out FORCE,$^) | \ xz --check=crc32 --lzma2=dict=1MiB) > $@ || \ (rm -f $@ ; false) - -# misc stuff -# --------------------------------------------------------------------------- -quote:=" -- cgit v0.10.2 From a03fcb50e816a69acffb13b5e56db75063aeba8a Mon Sep 17 00:00:00 2001 From: Masahiro Yamada Date: Fri, 28 Mar 2014 16:36:12 +0900 Subject: kbuild: remove redundant '.*.cmd' pattern from make distclean '.*.cmd' files are cleaned-up by "make clean". The same pattern in "make distclean" is unnecessary. Signed-off-by: Masahiro Yamada Signed-off-by: Michal Marek diff --git a/Makefile b/Makefile index aae58aa..cea64d2 100644 --- a/Makefile +++ b/Makefile @@ -1109,8 +1109,7 @@ distclean: mrproper @find $(srctree) $(RCS_FIND_IGNORE) \ \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ - -o -name '.*.rej' \ - -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \ + -o -name '.*.rej' -o -name '*%' -o -name 'core' \) \ -type f -print | xargs rm -f -- cgit v0.10.2 From 1c9e70a55b088d97a59241744fe459409d0c3582 Mon Sep 17 00:00:00 2001 From: Masahiro Yamada Date: Mon, 31 Mar 2014 16:41:36 +0900 Subject: kbuild: create a build directory automatically for out-of-tree build Kbuild supports saving output files in a separate directory. But the build directory must be created beforehand. For example, $ mkdir -p dir/to/store/output/files $ make O=dir/to/store/output/files defconfig Creating a build directory automatically would be useful. Signed-off-by: Masahiro Yamada Acked-by: Sam Ravnborg Signed-off-by: Michal Marek diff --git a/Makefile b/Makefile index cea64d2..faf55c9 100644 --- a/Makefile +++ b/Makefile @@ -120,9 +120,10 @@ ifneq ($(KBUILD_OUTPUT),) # Invoke a second make in the output directory, passing relevant variables # check that the output directory actually exists saved-output := $(KBUILD_OUTPUT) -KBUILD_OUTPUT := $(shell cd $(KBUILD_OUTPUT) && /bin/pwd) +KBUILD_OUTPUT := $(shell mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) \ + && /bin/pwd) $(if $(KBUILD_OUTPUT),, \ - $(error output directory "$(saved-output)" does not exist)) + $(error failed to create output directory "$(saved-output)")) PHONY += $(MAKECMDGOALS) sub-make -- cgit v0.10.2 From b12f73740b8764952a112a677991300545e98c06 Mon Sep 17 00:00:00 2001 From: Kevin Hao Date: Tue, 1 Apr 2014 14:36:10 +0800 Subject: kbuild: docbook: fix the include error when executing "make help" The commit ec3fadd64b99 (kbuild: docbook: use $(obj) and $(src) rather than specific path) replaces the specific path with $(src). But when executing "make help", the $(src) is null and then causes an include error. Fix it by restoring the specific path. Signed-off-by: Kevin Hao Signed-off-by: Michal Marek diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile index c19ebea..ca8fd26 100644 --- a/Documentation/DocBook/Makefile +++ b/Documentation/DocBook/Makefile @@ -16,7 +16,7 @@ DOCBOOKS := z8530book.xml device-drivers.xml \ alsa-driver-api.xml writing-an-alsa-driver.xml \ tracepoint.xml drm.xml media_api.xml -include $(src)/media/Makefile +include Documentation/DocBook/media/Makefile ### # The build process is as follows (targets): -- cgit v0.10.2