aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorGravatar Denys Vlasenko <vda.linux@googlemail.com>2010-05-09 04:22:48 +0200
committerGravatar Denys Vlasenko <vda.linux@googlemail.com>2010-05-09 04:22:48 +0200
commit7fb68f199f037cb69363c8df5c934a27adc699f7 (patch)
tree2eb01a3bc4b3caf6bd7dd4fed6984716fd7ca89a /scripts
parent6774386d95cec54258f23f69bc287c99e205ebdf (diff)
downloadbusybox-7fb68f199f037cb69363c8df5c934a27adc699f7.tar.gz
busybox-7fb68f199f037cb69363c8df5c934a27adc699f7.tar.bz2
make it possible to keep Config/Kbuild snippets in *.c files
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/gen_build_files.sh55
1 files changed, 55 insertions, 0 deletions
diff --git a/scripts/gen_build_files.sh b/scripts/gen_build_files.sh
new file mode 100644
index 000000000..300d90c2a
--- /dev/null
+++ b/scripts/gen_build_files.sh
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+test $# -ge 2 || exit 1
+
+# cd to objtree
+cd "$2" || exit 1
+
+srctree="$1"
+
+find -type d \
+| while read; do
+ d="$REPLY"
+
+ src="$srctree/$d/Kbuild.src"
+ dst="$d/Kbuild"
+ if test -f "$src"; then
+ echo " CHK $dst"
+
+ s=`grep -h '^//kbuild:' "$srctree/$d"/*.c | sed 's^//kbuild:^^'`
+ while read; do
+ test x"$REPLY" = x"INSERT" && REPLY="$s"
+ printf "%s\n" "$REPLY"
+ done <"$src" >"$dst.$$.tmp"
+
+ if test -f "$dst" && cmp -s "$dst.$$.tmp" "$dst"; then
+ rm "$dst.$$.tmp"
+ else
+ echo " GEN $dst"
+ mv "$dst.$$.tmp" "$dst"
+ fi
+ fi
+
+ src="$srctree/$d/Config.src"
+ dst="$d/Config.in"
+ if test -f "$src"; then
+ echo " CHK $dst"
+
+ s=`grep -h '^//config:' "$srctree/$d"/*.c | sed 's^//config:^^'`
+ while read; do
+ test x"$REPLY" = x"INSERT" && REPLY="$s"
+ printf "%s\n" "$REPLY"
+ done <"$src" >"$dst.$$.tmp"
+
+ if test -f "$dst" && cmp -s "$dst.$$.tmp" "$dst"; then
+ rm "$dst.$$.tmp"
+ else
+ echo " GEN $dst"
+ mv "$dst.$$.tmp" "$dst"
+ fi
+ fi
+
+done
+
+# Last read failed. This is normal. Don't exit with its error code:
+exit 0