source: MondoRescue/branches/3.3/mindi-busybox/scripts/gen_build_files.sh@ 3865

Last change on this file since 3865 was 3621, checked in by Bruno Cornec, 10 years ago

New 3?3 banch for incorporation of latest busybox 1.25. Changing minor version to handle potential incompatibilities.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 2.6 KB
Line 
1#!/bin/sh
2
3# Note: was using sed OPTS CMD -- FILES
4# but users complain that many sed implementations
5# are misinterpreting --.
6
7test $# -ge 2 || { echo "Syntax: $0 SRCTREE OBJTREE"; exit 1; }
8
9# cd to objtree
10cd -- "$2" || { echo "Syntax: $0 SRCTREE OBJTREE"; exit 1; }
11# In separate objtree build, include/ might not exist yet
12mkdir include 2>/dev/null
13
14srctree="$1"
15
16status() { printf ' %-8s%s\n' "$1" "$2"; }
17gen() { status "GEN" "$@"; }
18chk() { status "CHK" "$@"; }
19
20generate()
21{
22 # NB: data to be inserted at INSERT line is coming on stdin
23 local src="$1" dst="$2" header="$3"
24 #chk "${dst}"
25 {
26 # Need to use printf: different shells have inconsistent
27 # rules re handling of "\n" in echo params.
28 printf "%s\n" "${header}"
29 # print everything up to INSERT line
30 sed -n '/^INSERT$/ q; p' "${src}"
31 # copy stdin to stdout
32 cat
33 # print everything after INSERT line
34 sed -n '/^INSERT$/ {
35 :l
36 n
37 p
38 bl
39 }' "${src}"
40 } >"${dst}.tmp"
41 if ! cmp -s "${dst}" "${dst}.tmp"; then
42 gen "${dst}"
43 mv "${dst}.tmp" "${dst}"
44 else
45 rm -f "${dst}.tmp"
46 fi
47}
48
49# (Re)generate include/applets.h
50sed -n 's@^//applet:@@p' "$srctree"/*/*.c "$srctree"/*/*/*.c \
51| generate \
52 "$srctree/include/applets.src.h" \
53 "include/applets.h" \
54 "/* DO NOT EDIT. This file is generated from applets.src.h */"
55
56# (Re)generate include/usage.h
57# We add line continuation backslash after each line,
58# and insert empty line before each line which doesn't start
59# with space or tab
60TAB="$(printf '\tX')"
61TAB="${TAB%X}"
62LF="$(printf '\nX')"
63LF="${LF%X}"
64sed -n -e 's@^//usage:\([ '"$TAB"'].*\)$@\1 \\@p' \
65 -e 's@^//usage:\([^ '"$TAB"'].*\)$@\'"$LF"'\1 \\@p' \
66 "$srctree"/*/*.c "$srctree"/*/*/*.c \
67| generate \
68 "$srctree/include/usage.src.h" \
69 "include/usage.h" \
70 "/* DO NOT EDIT. This file is generated from usage.src.h */"
71
72# (Re)generate */Kbuild and */Config.in
73# We skip .dotdirs - makes git/svn/etc users happier
74{ cd -- "$srctree" && find . -type d ! '(' -name '.?*' -prune ')'; } \
75| while read -r d; do
76 d="${d#./}"
77
78 src="$srctree/$d/Kbuild.src"
79 dst="$d/Kbuild"
80 if test -f "$src"; then
81 mkdir -p -- "$d" 2>/dev/null
82
83 sed -n 's@^//kbuild:@@p' "$srctree/$d"/*.c \
84 | generate \
85 "${src}" "${dst}" \
86 "# DO NOT EDIT. This file is generated from Kbuild.src"
87 fi
88
89 src="$srctree/$d/Config.src"
90 dst="$d/Config.in"
91 if test -f "$src"; then
92 mkdir -p -- "$d" 2>/dev/null
93
94 sed -n 's@^//config:@@p' "$srctree/$d"/*.c \
95 | generate \
96 "${src}" "${dst}" \
97 "# DO NOT EDIT. This file is generated from Config.src"
98 fi
99done
100
101# Last read failed. This is normal. Don't exit with its error code:
102exit 0
Note: See TracBrowser for help on using the repository browser.