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