diff options
Diffstat (limited to 'scripts/gen_build_files.sh')
-rwxr-xr-x | scripts/gen_build_files.sh | 103 |
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 | ||
10 | srctree="$1" | 10 | srctree="$1" |
11 | 11 | ||
12 | status() { printf ' %-8s%s\n' "$1" "$2"; } | ||
13 | gen() { status "GEN" "$@"; } | ||
14 | chk() { status "CHK" "$@"; } | ||
15 | |||
16 | generate() | ||
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 |
13 | src="$srctree/include/applets.src.h" | ||
14 | dst="include/applets.h" | ||
15 | s=`sed -n 's@^//applet:@@p' -- "$srctree"/*/*.c "$srctree"/*/*/*.c` | 46 | s=`sed -n 's@^//applet:@@p' -- "$srctree"/*/*.c "$srctree"/*/*/*.c` |
16 | old=`cat "$dst" 2>/dev/null` | 47 | generate \ |
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}" |
21 | new=`echo "/* DO NOT EDIT. This file is generated from applets.src.h */" | ||
22 | while IFS='' read -r REPLY; do | ||
23 | test x"$REPLY" = x"INSERT" && REPLY="$s" | ||
24 | printf "%s\n" "$REPLY" | ||
25 | done <"$src"` | ||
26 | if test x"$new" != x"$old"; then | ||
27 | echo " GEN $dst" | ||
28 | printf "%s\n" "$new" >"$dst" | ||
29 | fi | ||
30 | 52 | ||
31 | # (Re)generate include/usage.h | 53 | # (Re)generate include/usage.h |
32 | src="$srctree/include/usage.src.h" | ||
33 | dst="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 ``) |
38 | s=`sed -n -e 's@^//usage:\([ \t].*\)$@\1 \\\\@p' -e 's@^//usage:\([^ \t].*\)$@\n\1 \\\\@p' -- "$srctree"/*/*.c "$srctree"/*/*/*.c` | 58 | s=`sed -n -e 's@^//usage:\([ \t].*\)$@\1 \\\\@p' -e 's@^//usage:\([^ \t].*\)$@\n\1 \\\\@p' -- "$srctree"/*/*.c "$srctree"/*/*/*.c` |
39 | old=`cat "$dst" 2>/dev/null` | 59 | generate \ |
40 | new=`echo "/* DO NOT EDIT. This file is generated from usage.src.h */" | 60 | "$srctree/include/usage.src.h" \ |
41 | while 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}" |
44 | done <"$src"` | ||
45 | if test x"$new" != x"$old"; then | ||
46 | echo " GEN $dst" | ||
47 | printf "%s\n" "$new" >"$dst" | ||
48 | fi | ||
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 |
93 | done | 92 | done |
94 | 93 | ||