From: Frank Rowand <frowand.list@gmail.com>
To: frowand.list@gmail.com, Rob Herring <robh+dt@kernel.org>,
Grant Likely <grant.likely@linaro.org>,
Russell King <linux@arm.linux.org.uk>,
Michal Marek <mmarek@suse.cz>
Cc: Ian Campbell <ijc+devicetree@hellion.org.uk>,
Kumar Gala <galak@codeaurora.org>,
Leif Lindholm <leif.lindholm@linaro.org>,
Mark Rutland <mark.rutland@arm.com>,
Pawel Moll <pawel.moll@arm.com>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
linux-kbuild@vger.kernel.org,
Linux Kernel list <linux-kernel@vger.kernel.org>
Subject: [patch 5/7] dt: dtb version: kbuild scripts
Date: Wed, 18 Mar 2015 20:38:16 -0700 [thread overview]
Message-ID: <550A44A8.9090302@gmail.com> (raw)
In-Reply-To: <550A42AC.8060104@gmail.com>
From: Frank Rowand <frank.rowand@sonymobile.com>
After applying this patch, need to add execute permission to the new file
scripts/version_dtb_increment_once
Modify the dtb compile rules to generate dtb version header files.
Create script to increment .version_dtb just once per make of one of more
dtbs, and to generate the dtb version header files.
Signed-off-by: Frank Rowand <frank.rowand@sonymobile.com>
---
scripts/Makefile.lib | 20 ++++--
scripts/version_dtb_increment_once | 90 +++++++++++++++++++++++++++
Index: b/scripts/Makefile.lib
===================================================================
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -159,11 +159,19 @@ cpp_flags = -Wp,-MD,$(depfile) $(NO
ld_flags = $(LDFLAGS) $(ldflags-y)
+# Do not want to pull kernel header files into .dtb, so minimize the risk of
+# that by adding include/generated/ to include path instead of include/
+# Headers in include/generated/ are used by include/dt-bindings/version.dtsi
dtc_cpp_flags = -Wp,-MD,$(depfile).pre.tmp -nostdinc \
-I$(srctree)/arch/$(SRCARCH)/boot/dts \
-I$(srctree)/arch/$(SRCARCH)/boot/dts/include \
-I$(srctree)/drivers/of/testcase-data \
- -undef -D__DTS__
+ -Iinclude/generated \
+ -undef -D__DTS__ \
+ -D___DTB_DTB_PATH="\"$@\"" \
+ -D___DTB_DTS_PATH="\"$<\"" \
+ -D"___DTB_DTC_VERSION=\"$(shell scripts/dtc/dtc -v | cut -d" " -f2-)\""
+
# Finds the multi-part object the current object will be linked into
modname-multi = $(sort $(foreach m,$(multi-used),\
@@ -282,10 +290,12 @@ $(obj)/%.dtb.S: $(obj)/%.dtb
$(call cmd,dt_S_dtb)
quiet_cmd_dtc = DTC $@
-cmd_dtc = $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
- $(objtree)/scripts/dtc/dtc -O dtb -o $@ -b 0 \
- -i $(dir $<) $(DTC_FLAGS) \
- -d $(depfile).dtc.tmp $(dtc-tmp) ; \
+cmd_dtc = \
+ $(srctree)/scripts/version_dtb_increment_once ; \
+ $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
+ $(objtree)/scripts/dtc/dtc -O dtb -o $@ -b 0 \
+ -i $(dir $<) $(DTC_FLAGS) \
+ -d $(depfile).dtc.tmp $(dtc-tmp) ; \
cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile)
$(obj)/%.dtb: $(src)/%.dts FORCE
Index: b/scripts/version_dtb_increment_once
===================================================================
--- /dev/null
+++ b/scripts/version_dtb_increment_once
@@ -0,0 +1,90 @@
+#!/bin/sh
+
+# increment .version_dtb at most once per build
+
+# VERSION_DTB_BASE is exported instead of passed to this script as an arg.
+#
+# If the value is passed as an arg then the make dependency triggers on
+# every build of a .dtb because if_changed_dep detects that cmd_dtc has
+# changed since the previous build (see scripts/Makefile.lib).
+
+# Nice output in kbuild format
+# Will be supressed by "make -s"
+info()
+{
+ if [ "${quiet}" != "silent_" ]; then
+ printf " %-7s %s\n" ${1} ${2}
+ fi
+}
+
+
+# flock(1) to avoid race in parallel build
+(flock 9
+
+ if [ ! -r .version_dtb -o ! -s .version_dtb ] ; then
+ rm -f .version_dtb
+ touch .version_dtb
+ fi
+
+ VERSION_DTB=`cat .version_dtb`
+ if [ "${VERSION_DTB}" != "${VERSION_DTB_BASE}" ] ; then
+ exit
+ fi
+
+ info GEN .version_dtb
+
+ VERSION_DTB=`expr 0${VERSION_DTB} + 1`
+ echo ${VERSION_DTB} > .version_dtb
+
+ # Do not expand names
+ set -f
+
+ # Fix the language to get consistent output
+ LC_ALL=C
+ export LC_ALL
+
+ if [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then
+ TIMESTAMP=`date`
+ else
+ TIMESTAMP=$KBUILD_BUILD_TIMESTAMP
+ fi
+ if test -z "$KBUILD_BUILD_USER"; then
+ COMPILE_BY=$(whoami | sed 's/\\/\\\\/')
+ else
+ COMPILE_BY=$KBUILD_BUILD_USER
+ fi
+ if test -z "$KBUILD_BUILD_HOST"; then
+ COMPILE_HOST=`hostname`
+ else
+ COMPILE_HOST=$KBUILD_BUILD_HOST
+ fi
+
+ DTB_COMPILER=`scripts/dtc/dtc -v | cut -d" " -f2-`
+
+ VERSION="UTS_RELEASE (${COMPILE_BY}@${COMPILE_HOST}) (${DTB_COMPILER}) #${VERSION_DTB} ${TIMESTAMP}"
+
+ # truncate to get same result as scripts/mkcompile_h
+ UTS_LEN=64
+ TRUNCATE="cut -b -$UTS_LEN"
+
+
+ # Generate compile_dtb.h
+ TARGET=include/generated/compile_dtb.h
+ info UPD $TARGET
+
+ ( echo /\* This file is auto generated, version ${VERSION_DTB} \*/
+
+ echo -n \#define DTB_VERSION \"\(
+ echo -n `echo ${COMPILE_BY} | $TRUNCATE`
+ echo -n @
+ echo -n `echo ${COMPILE_HOST} | $TRUNCATE`
+ echo -n \) \(${DTB_COMPILER}\) \#${VERSION_DTB} ${TIMESTAMP}
+ echo \"
+
+ ) > $TARGET
+
+
+) 9> .version_dtb_flock
+
+# Do not place anything here. Exit from inside flock(1) will come here
+# instead of exiting script.
WARNING: multiple messages have this Message-ID (diff)
From: frowand.list@gmail.com (Frank Rowand)
To: linux-arm-kernel@lists.infradead.org
Subject: [patch 5/7] dt: dtb version: kbuild scripts
Date: Wed, 18 Mar 2015 20:38:16 -0700 [thread overview]
Message-ID: <550A44A8.9090302@gmail.com> (raw)
In-Reply-To: <550A42AC.8060104@gmail.com>
From: Frank Rowand <frank.rowand@sonymobile.com>
After applying this patch, need to add execute permission to the new file
scripts/version_dtb_increment_once
Modify the dtb compile rules to generate dtb version header files.
Create script to increment .version_dtb just once per make of one of more
dtbs, and to generate the dtb version header files.
Signed-off-by: Frank Rowand <frank.rowand@sonymobile.com>
---
scripts/Makefile.lib | 20 ++++--
scripts/version_dtb_increment_once | 90 +++++++++++++++++++++++++++
Index: b/scripts/Makefile.lib
===================================================================
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -159,11 +159,19 @@ cpp_flags = -Wp,-MD,$(depfile) $(NO
ld_flags = $(LDFLAGS) $(ldflags-y)
+# Do not want to pull kernel header files into .dtb, so minimize the risk of
+# that by adding include/generated/ to include path instead of include/
+# Headers in include/generated/ are used by include/dt-bindings/version.dtsi
dtc_cpp_flags = -Wp,-MD,$(depfile).pre.tmp -nostdinc \
-I$(srctree)/arch/$(SRCARCH)/boot/dts \
-I$(srctree)/arch/$(SRCARCH)/boot/dts/include \
-I$(srctree)/drivers/of/testcase-data \
- -undef -D__DTS__
+ -Iinclude/generated \
+ -undef -D__DTS__ \
+ -D___DTB_DTB_PATH="\"$@\"" \
+ -D___DTB_DTS_PATH="\"$<\"" \
+ -D"___DTB_DTC_VERSION=\"$(shell scripts/dtc/dtc -v | cut -d" " -f2-)\""
+
# Finds the multi-part object the current object will be linked into
modname-multi = $(sort $(foreach m,$(multi-used),\
@@ -282,10 +290,12 @@ $(obj)/%.dtb.S: $(obj)/%.dtb
$(call cmd,dt_S_dtb)
quiet_cmd_dtc = DTC $@
-cmd_dtc = $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
- $(objtree)/scripts/dtc/dtc -O dtb -o $@ -b 0 \
- -i $(dir $<) $(DTC_FLAGS) \
- -d $(depfile).dtc.tmp $(dtc-tmp) ; \
+cmd_dtc = \
+ $(srctree)/scripts/version_dtb_increment_once ; \
+ $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
+ $(objtree)/scripts/dtc/dtc -O dtb -o $@ -b 0 \
+ -i $(dir $<) $(DTC_FLAGS) \
+ -d $(depfile).dtc.tmp $(dtc-tmp) ; \
cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile)
$(obj)/%.dtb: $(src)/%.dts FORCE
Index: b/scripts/version_dtb_increment_once
===================================================================
--- /dev/null
+++ b/scripts/version_dtb_increment_once
@@ -0,0 +1,90 @@
+#!/bin/sh
+
+# increment .version_dtb at most once per build
+
+# VERSION_DTB_BASE is exported instead of passed to this script as an arg.
+#
+# If the value is passed as an arg then the make dependency triggers on
+# every build of a .dtb because if_changed_dep detects that cmd_dtc has
+# changed since the previous build (see scripts/Makefile.lib).
+
+# Nice output in kbuild format
+# Will be supressed by "make -s"
+info()
+{
+ if [ "${quiet}" != "silent_" ]; then
+ printf " %-7s %s\n" ${1} ${2}
+ fi
+}
+
+
+# flock(1) to avoid race in parallel build
+(flock 9
+
+ if [ ! -r .version_dtb -o ! -s .version_dtb ] ; then
+ rm -f .version_dtb
+ touch .version_dtb
+ fi
+
+ VERSION_DTB=`cat .version_dtb`
+ if [ "${VERSION_DTB}" != "${VERSION_DTB_BASE}" ] ; then
+ exit
+ fi
+
+ info GEN .version_dtb
+
+ VERSION_DTB=`expr 0${VERSION_DTB} + 1`
+ echo ${VERSION_DTB} > .version_dtb
+
+ # Do not expand names
+ set -f
+
+ # Fix the language to get consistent output
+ LC_ALL=C
+ export LC_ALL
+
+ if [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then
+ TIMESTAMP=`date`
+ else
+ TIMESTAMP=$KBUILD_BUILD_TIMESTAMP
+ fi
+ if test -z "$KBUILD_BUILD_USER"; then
+ COMPILE_BY=$(whoami | sed 's/\\/\\\\/')
+ else
+ COMPILE_BY=$KBUILD_BUILD_USER
+ fi
+ if test -z "$KBUILD_BUILD_HOST"; then
+ COMPILE_HOST=`hostname`
+ else
+ COMPILE_HOST=$KBUILD_BUILD_HOST
+ fi
+
+ DTB_COMPILER=`scripts/dtc/dtc -v | cut -d" " -f2-`
+
+ VERSION="UTS_RELEASE (${COMPILE_BY}@${COMPILE_HOST}) (${DTB_COMPILER}) #${VERSION_DTB} ${TIMESTAMP}"
+
+ # truncate to get same result as scripts/mkcompile_h
+ UTS_LEN=64
+ TRUNCATE="cut -b -$UTS_LEN"
+
+
+ # Generate compile_dtb.h
+ TARGET=include/generated/compile_dtb.h
+ info UPD $TARGET
+
+ ( echo /\* This file is auto generated, version ${VERSION_DTB} \*/
+
+ echo -n \#define DTB_VERSION \"\(
+ echo -n `echo ${COMPILE_BY} | $TRUNCATE`
+ echo -n @
+ echo -n `echo ${COMPILE_HOST} | $TRUNCATE`
+ echo -n \) \(${DTB_COMPILER}\) \#${VERSION_DTB} ${TIMESTAMP}
+ echo \"
+
+ ) > $TARGET
+
+
+) 9> .version_dtb_flock
+
+# Do not place anything here. Exit from inside flock(1) will come here
+# instead of exiting script.
next prev parent reply other threads:[~2015-03-19 3:38 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-19 3:29 [patch 0/7] dt: dtb version: add version info to dtb Frank Rowand
2015-03-19 3:29 ` Frank Rowand
2015-03-19 3:31 ` [patch 1/7] dt: dtb version: consolidate documentation of chosen node bindings Frank Rowand
2015-03-19 3:31 ` Frank Rowand
2015-03-19 13:40 ` Mark Rutland
2015-03-19 13:40 ` Mark Rutland
2015-03-19 3:33 ` [patch 2/7] dt: dtb version: document chosen/dtb-info node binding Frank Rowand
2015-03-19 3:33 ` Frank Rowand
2015-03-19 13:23 ` Rob Herring
2015-03-19 13:23 ` Rob Herring
2015-03-19 16:42 ` Frank Rowand
2015-03-19 16:42 ` Frank Rowand
2015-03-19 18:41 ` Russell King - ARM Linux
2015-03-19 18:41 ` Russell King - ARM Linux
2015-03-19 18:53 ` Mark Rutland
2015-03-19 18:53 ` Mark Rutland
2015-03-19 18:53 ` Mark Rutland
2015-03-19 19:01 ` Frank Rowand
2015-03-19 19:01 ` Frank Rowand
2015-03-19 19:32 ` Russell King - ARM Linux
2015-03-19 19:32 ` Russell King - ARM Linux
2015-03-19 19:32 ` Russell King - ARM Linux
2015-03-19 20:44 ` Frank Rowand
2015-03-19 20:44 ` Frank Rowand
2015-03-20 14:42 ` Mark Rutland
2015-03-20 14:42 ` Mark Rutland
2015-03-20 14:42 ` Mark Rutland
2015-03-19 13:49 ` Mark Rutland
2015-03-19 13:49 ` Mark Rutland
2015-03-19 17:02 ` Frank Rowand
2015-03-19 17:02 ` Frank Rowand
2015-03-19 17:23 ` Geert Uytterhoeven
2015-03-19 17:23 ` Geert Uytterhoeven
2015-03-19 19:12 ` Mark Rutland
2015-03-19 19:12 ` Mark Rutland
2015-03-19 21:27 ` Frank Rowand
2015-03-19 21:27 ` Frank Rowand
2015-03-20 15:25 ` Mark Rutland
2015-03-20 15:25 ` Mark Rutland
2015-03-19 17:37 ` Frank Rowand
2015-03-19 17:37 ` Frank Rowand
2015-03-19 17:37 ` Frank Rowand
2015-03-19 17:37 ` Frank Rowand
2015-03-19 3:34 ` [patch 3/7] dt: dtb version: arm dts Makefile Frank Rowand
2015-03-19 3:34 ` Frank Rowand
2015-03-19 3:34 ` Frank Rowand
2015-03-19 3:36 ` [patch 4/7] dt: dtb version: kernel Makefile Frank Rowand
2015-03-19 3:36 ` Frank Rowand
2015-03-19 3:38 ` Frank Rowand [this message]
2015-03-19 3:38 ` [patch 5/7] dt: dtb version: kbuild scripts Frank Rowand
2015-03-19 3:39 ` [patch 6/7] dt: dtb version: dtsi files Frank Rowand
2015-03-19 3:39 ` Frank Rowand
2015-03-19 18:46 ` Sascha Hauer
2015-03-19 18:46 ` Sascha Hauer
2015-03-19 3:41 ` [patch 7/7] dt: dtb version: report dtb info Frank Rowand
2015-03-19 3:41 ` Frank Rowand
2015-03-19 8:12 ` [patch 0/7] dt: dtb version: add version info to dtb Gregory CLEMENT
2015-03-19 8:12 ` Gregory CLEMENT
2015-03-19 17:05 ` Frank Rowand
2015-03-19 17:05 ` Frank Rowand
2015-03-20 13:46 ` Rob Herring
2015-03-20 13:46 ` Rob Herring
2015-03-20 19:14 ` Uwe Kleine-König
2015-03-20 19:14 ` Uwe Kleine-König
2015-03-20 19:14 ` Uwe Kleine-König
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=550A44A8.9090302@gmail.com \
--to=frowand.list@gmail.com \
--cc=devicetree@vger.kernel.org \
--cc=galak@codeaurora.org \
--cc=grant.likely@linaro.org \
--cc=ijc+devicetree@hellion.org.uk \
--cc=leif.lindholm@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=mark.rutland@arm.com \
--cc=mmarek@suse.cz \
--cc=pawel.moll@arm.com \
--cc=robh+dt@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.