blob: b3aa132a3602fd982676d928777cca96b6c82fd5 [file] [log] [blame]
Denys Vlasenko3015a132010-05-17 01:59:16 +02001#!/bin/sh
Denys Vlasenko7fb68f12010-05-09 04:22:48 +02002
Denys Vlasenko572b9a32010-05-09 16:20:52 +02003test $# -ge 2 || { echo "Syntax: $0 SRCTREE OBJTREE"; exit 1; }
Denys Vlasenko7fb68f12010-05-09 04:22:48 +02004
5# cd to objtree
Denys Vlasenko8e3aff02010-05-10 11:00:11 +02006cd -- "$2" || { echo "Syntax: $0 SRCTREE OBJTREE"; exit 1; }
Denys Vlasenko7fb68f12010-05-09 04:22:48 +02007
8srctree="$1"
9
Denys Vlasenko084e2282010-05-15 21:08:51 +020010find -type d | while read -r d; do
Denys Vlasenko76c936f2010-05-27 02:33:31 +020011 d="${d#./}"
Denys Vlasenko8e3aff02010-05-10 11:00:11 +020012 src="$srctree/$d/Kbuild.src"
13 dst="$d/Kbuild"
14 if test -f "$src"; then
Denys Vlasenko76c936f2010-05-27 02:33:31 +020015 #echo " CHK $dst"
Denys Vlasenko7fb68f12010-05-09 04:22:48 +020016
Denys Vlasenko8e3aff02010-05-10 11:00:11 +020017 s=`sed -n 's@^//kbuild:@@p' -- "$srctree/$d"/*.c`
18 echo "# DO NOT EDIT. This file is generated from Kbuild.src" >"$dst.$$.tmp"
Denys Vlasenkoa1db8b82010-05-18 00:24:17 +020019
20 # Why "IFS='' read -r REPLY"??
21 # This atrocity is needed to read lines without mangling.
22 # IFS='' prevents whitespace trimming,
23 # -r suppresses backslash handling.
24 while IFS='' read -r REPLY; do
Denys Vlasenko8e3aff02010-05-10 11:00:11 +020025 test x"$REPLY" = x"INSERT" && REPLY="$s"
26 printf "%s\n" "$REPLY"
27 done <"$src" >>"$dst.$$.tmp"
Denys Vlasenko7fb68f12010-05-09 04:22:48 +020028
Denys Vlasenko8e3aff02010-05-10 11:00:11 +020029 if test -f "$dst" && cmp -s "$dst.$$.tmp" "$dst"; then
30 rm -- "$dst.$$.tmp"
31 else
32 echo " GEN $dst"
33 mv -- "$dst.$$.tmp" "$dst"
34 fi
Denys Vlasenko7fb68f12010-05-09 04:22:48 +020035 fi
Denys Vlasenko7fb68f12010-05-09 04:22:48 +020036
Denys Vlasenko8e3aff02010-05-10 11:00:11 +020037 src="$srctree/$d/Config.src"
38 dst="$d/Config.in"
39 if test -f "$src"; then
Denys Vlasenko76c936f2010-05-27 02:33:31 +020040 #echo " CHK $dst"
Denys Vlasenko7fb68f12010-05-09 04:22:48 +020041
Denys Vlasenko8e3aff02010-05-10 11:00:11 +020042 s=`sed -n 's@^//config:@@p' -- "$srctree/$d"/*.c`
43 echo "# DO NOT EDIT. This file is generated from Config.src" >"$dst.$$.tmp"
Denys Vlasenkoa1db8b82010-05-18 00:24:17 +020044
45 while IFS='' read -r REPLY; do
Denys Vlasenko8e3aff02010-05-10 11:00:11 +020046 test x"$REPLY" = x"INSERT" && REPLY="$s"
47 printf "%s\n" "$REPLY"
48 done <"$src" >>"$dst.$$.tmp"
Denys Vlasenko7fb68f12010-05-09 04:22:48 +020049
Denys Vlasenko8e3aff02010-05-10 11:00:11 +020050 if test -f "$dst" && cmp -s "$dst.$$.tmp" "$dst"; then
51 rm -- "$dst.$$.tmp"
52 else
53 echo " GEN $dst"
54 mv -- "$dst.$$.tmp" "$dst"
55 fi
Denys Vlasenko7fb68f12010-05-09 04:22:48 +020056 fi
Denys Vlasenko7fb68f12010-05-09 04:22:48 +020057done
58
59# Last read failed. This is normal. Don't exit with its error code:
60exit 0