aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/gen_build_files.sh100
1 files changed, 47 insertions, 53 deletions
diff --git a/scripts/gen_build_files.sh b/scripts/gen_build_files.sh
index 09a95b507..1c1edcc12 100755
--- a/scripts/gen_build_files.sh
+++ b/scripts/gen_build_files.sh
@@ -9,43 +9,54 @@ mkdir include 2>/dev/null
9 9
10srctree="$1" 10srctree="$1"
11 11
12status() { printf ' %-8s%s\n' "$1" "$2"; }
13gen() { status "GEN" "$@"; }
14chk() { status "CHK" "$@"; }
15
16generate()
17{
18 local src="$1" dst="$2" header="$3" insert="$4"
19 #chk "${dst}"
20 (
21 echo "${header}"
22 if grep -qs '^INSERT$' "${src}"; then
23 sed -n '1,/^INSERT$/p' "${src}"
24 echo "${insert}"
25 sed -n '/^INSERT$/,$p' "${src}"
26 else
27 if [ -n "${insert}" ]; then
28 echo "ERROR: INSERT line missing in: ${src}" 1>&2
29 fi
30 cat "${src}"
31 fi
32 ) | sed '/^INSERT$/d' > "${dst}.tmp"
33 if ! cmp -s "${dst}" "${dst}.tmp"; then
34 gen "${dst}"
35 mv "${dst}.tmp" "${dst}"
36 else
37 rm -f "${dst}.tmp"
38 fi
39}
40
12# (Re)generate include/applets.h 41# (Re)generate include/applets.h
13src="$srctree/include/applets.src.h"
14dst="include/applets.h"
15s=`sed -n 's@^//applet:@@p' -- "$srctree"/*/*.c "$srctree"/*/*/*.c` 42s=`sed -n 's@^//applet:@@p' -- "$srctree"/*/*.c "$srctree"/*/*/*.c`
16old=`cat "$dst" 2>/dev/null` 43generate \
17# Why "IFS='' read -r REPLY"?? 44 "$srctree/include/applets.src.h" \
18# This atrocity is needed to read lines without mangling. 45 "include/applets.h" \
19# IFS='' prevents whitespace trimming, 46 "/* DO NOT EDIT. This file is generated from applets.src.h */" \
20# -r suppresses backslash handling. 47 "${s}"
21new=`echo "/* DO NOT EDIT. This file is generated from applets.src.h */"
22while IFS='' read -r REPLY; do
23 test x"$REPLY" = x"INSERT" && REPLY="$s"
24 printf "%s\n" "$REPLY"
25done <"$src"`
26if test x"$new" != x"$old"; then
27 echo " GEN $dst"
28 printf "%s\n" "$new" >"$dst"
29fi
30 48
31# (Re)generate include/usage.h 49# (Re)generate include/usage.h
32src="$srctree/include/usage.src.h"
33dst="include/usage.h"
34# We add line continuation backslash after each line, 50# We add line continuation backslash after each line,
35# and insert empty line before each line which doesn't start 51# and insert empty line before each line which doesn't start
36# with space or tab 52# with space or tab
37# (note: we need to use \\\\ because of ``) 53# (note: we need to use \\\\ because of ``)
38s=`sed -n -e 's@^//usage:\([ \t].*\)$@\1 \\\\@p' -e 's@^//usage:\([^ \t].*\)$@\n\1 \\\\@p' -- "$srctree"/*/*.c "$srctree"/*/*/*.c` 54s=`sed -n -e 's@^//usage:\([ \t].*\)$@\1 \\\\@p' -e 's@^//usage:\([^ \t].*\)$@\n\1 \\\\@p' -- "$srctree"/*/*.c "$srctree"/*/*/*.c`
39old=`cat "$dst" 2>/dev/null` 55generate \
40new=`echo "/* DO NOT EDIT. This file is generated from usage.src.h */" 56 "$srctree/include/usage.src.h" \
41while IFS='' read -r REPLY; do 57 "include/usage.h" \
42 test x"$REPLY" = x"INSERT" && REPLY="$s" 58 "/* DO NOT EDIT. This file is generated from usage.src.h */" \
43 printf "%s\n" "$REPLY" 59 "${s}"
44done <"$src"`
45if test x"$new" != x"$old"; then
46 echo " GEN $dst"
47 printf "%s\n" "$new" >"$dst"
48fi
49 60
50# (Re)generate */Kbuild and */Config.in 61# (Re)generate */Kbuild and */Config.in
51{ cd -- "$srctree" && find . -type d; } | while read -r d; do 62{ cd -- "$srctree" && find . -type d; } | while read -r d; do
@@ -55,42 +66,25 @@ fi
55 dst="$d/Kbuild" 66 dst="$d/Kbuild"
56 if test -f "$src"; then 67 if test -f "$src"; then
57 mkdir -p -- "$d" 2>/dev/null 68 mkdir -p -- "$d" 2>/dev/null
58 #echo " CHK $dst"
59 69
60 s=`sed -n 's@^//kbuild:@@p' -- "$srctree/$d"/*.c` 70 s=`sed -n 's@^//kbuild:@@p' -- "$srctree/$d"/*.c`
61 71 generate \
62 old=`cat "$dst" 2>/dev/null` 72 "${src}" "${dst}" \
63 new=`echo "# DO NOT EDIT. This file is generated from Kbuild.src" 73 "# DO NOT EDIT. This file is generated from Kbuild.src" \
64 while IFS='' read -r REPLY; do 74 "${s}"
65 test x"$REPLY" = x"INSERT" && REPLY="$s"
66 printf "%s\n" "$REPLY"
67 done <"$src"`
68 if test x"$new" != x"$old"; then
69 echo " GEN $dst"
70 printf "%s\n" "$new" >"$dst"
71 fi
72 fi 75 fi
73 76
74 src="$srctree/$d/Config.src" 77 src="$srctree/$d/Config.src"
75 dst="$d/Config.in" 78 dst="$d/Config.in"
76 if test -f "$src"; then 79 if test -f "$src"; then
77 mkdir -p -- "$d" 2>/dev/null 80 mkdir -p -- "$d" 2>/dev/null
78 #echo " CHK $dst"
79 81
80 s=`sed -n 's@^//config:@@p' -- "$srctree/$d"/*.c` 82 s=`sed -n 's@^//config:@@p' -- "$srctree/$d"/*.c`
81 83 generate \
82 old=`cat "$dst" 2>/dev/null` 84 "${src}" "${dst}" \
83 new=`echo "# DO NOT EDIT. This file is generated from Config.src" 85 "# DO NOT EDIT. This file is generated from Config.src" \
84 while IFS='' read -r REPLY; do 86 "${s}"
85 test x"$REPLY" = x"INSERT" && REPLY="$s"
86 printf "%s\n" "$REPLY"
87 done <"$src"`
88 if test x"$new" != x"$old"; then
89 echo " GEN $dst"
90 printf "%s\n" "$new" >"$dst"
91 fi
92 fi 87 fi
93done 88done
94 89
95# Last read failed. This is normal. Don't exit with its error code:
96exit 0 90exit 0