blob: 44e8c1744d84a79544075773800a9213a4e5be04 [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 Vlasenko6c5bf0d2010-06-06 00:53:45 +020010# (Re)generate include/applets.h
11src="$srctree/include/applets.src.h"
12dst="include/applets.h"
13s=`sed -n 's@^//applet:@@p' -- */*.c */*/*.c`
14echo "/* DO NOT EDIT. This file is generated from applets.src.h */" >"$dst.$$.tmp"
15# Why "IFS='' read -r REPLY"??
16# This atrocity is needed to read lines without mangling.
17# IFS='' prevents whitespace trimming,
18# -r suppresses backslash handling.
19while IFS='' read -r REPLY; do
20 test x"$REPLY" = x"INSERT" && REPLY="$s"
21 printf "%s\n" "$REPLY"
22done <"$src" >>"$dst.$$.tmp"
23if test -f "$dst" && cmp -s "$dst.$$.tmp" "$dst"; then
24 rm -- "$dst.$$.tmp"
25else
26 echo " GEN $dst"
27 mv -- "$dst.$$.tmp" "$dst"
28fi
29
30# (Re)generate */Kbuild and */Config.in
Denys Vlasenko084e2282010-05-15 21:08:51 +020031find -type d | while read -r d; do
Denys Vlasenko76c936f2010-05-27 02:33:31 +020032 d="${d#./}"
Denys Vlasenko8e3aff02010-05-10 11:00:11 +020033 src="$srctree/$d/Kbuild.src"
34 dst="$d/Kbuild"
35 if test -f "$src"; then
Denys Vlasenko76c936f2010-05-27 02:33:31 +020036 #echo " CHK $dst"
Denys Vlasenko7fb68f12010-05-09 04:22:48 +020037
Denys Vlasenko8e3aff02010-05-10 11:00:11 +020038 s=`sed -n 's@^//kbuild:@@p' -- "$srctree/$d"/*.c`
Denys Vlasenkoa1db8b82010-05-18 00:24:17 +020039
Denys Vlasenko6c5bf0d2010-06-06 00:53:45 +020040 echo "# DO NOT EDIT. This file is generated from Kbuild.src" >"$dst.$$.tmp"
Denys Vlasenkoa1db8b82010-05-18 00:24:17 +020041 while IFS='' read -r REPLY; do
Denys Vlasenko8e3aff02010-05-10 11:00:11 +020042 test x"$REPLY" = x"INSERT" && REPLY="$s"
43 printf "%s\n" "$REPLY"
44 done <"$src" >>"$dst.$$.tmp"
Denys Vlasenko8e3aff02010-05-10 11:00:11 +020045 if test -f "$dst" && cmp -s "$dst.$$.tmp" "$dst"; then
46 rm -- "$dst.$$.tmp"
47 else
48 echo " GEN $dst"
49 mv -- "$dst.$$.tmp" "$dst"
50 fi
Denys Vlasenko7fb68f12010-05-09 04:22:48 +020051 fi
Denys Vlasenko7fb68f12010-05-09 04:22:48 +020052
Denys Vlasenko8e3aff02010-05-10 11:00:11 +020053 src="$srctree/$d/Config.src"
54 dst="$d/Config.in"
55 if test -f "$src"; then
Denys Vlasenko76c936f2010-05-27 02:33:31 +020056 #echo " CHK $dst"
Denys Vlasenko7fb68f12010-05-09 04:22:48 +020057
Denys Vlasenko8e3aff02010-05-10 11:00:11 +020058 s=`sed -n 's@^//config:@@p' -- "$srctree/$d"/*.c`
Denys Vlasenkoa1db8b82010-05-18 00:24:17 +020059
Denys Vlasenko6c5bf0d2010-06-06 00:53:45 +020060 echo "# DO NOT EDIT. This file is generated from Config.src" >"$dst.$$.tmp"
Denys Vlasenkoa1db8b82010-05-18 00:24:17 +020061 while IFS='' read -r REPLY; do
Denys Vlasenko8e3aff02010-05-10 11:00:11 +020062 test x"$REPLY" = x"INSERT" && REPLY="$s"
63 printf "%s\n" "$REPLY"
64 done <"$src" >>"$dst.$$.tmp"
Denys Vlasenko8e3aff02010-05-10 11:00:11 +020065 if test -f "$dst" && cmp -s "$dst.$$.tmp" "$dst"; then
66 rm -- "$dst.$$.tmp"
67 else
68 echo " GEN $dst"
69 mv -- "$dst.$$.tmp" "$dst"
70 fi
Denys Vlasenko7fb68f12010-05-09 04:22:48 +020071 fi
Denys Vlasenko7fb68f12010-05-09 04:22:48 +020072done
73
74# Last read failed. This is normal. Don't exit with its error code:
75exit 0