#!/bin/sh test $# -ge 2 || { echo "Syntax: $0 SRCTREE OBJTREE"; exit 1; } # cd to objtree cd -- "$2" || { echo "Syntax: $0 SRCTREE OBJTREE"; exit 1; } srctree="$1" find -type d | while read -r d; do d="${d#./}" src="$srctree/$d/Kbuild.src" dst="$d/Kbuild" if test -f "$src"; then #echo " CHK $dst" s=`sed -n 's@^//kbuild:@@p' -- "$srctree/$d"/*.c` echo "# DO NOT EDIT. This file is generated from Kbuild.src" >"$dst.$$.tmp" # Why "IFS='' read -r REPLY"?? # This atrocity is needed to read lines without mangling. # IFS='' prevents whitespace trimming, # -r suppresses backslash handling. while IFS='' read -r REPLY; do test x"$REPLY" = x"INSERT" && REPLY="$s" printf "%s\n" "$REPLY" done <"$src" >>"$dst.$$.tmp" if test -f "$dst" && cmp -s "$dst.$$.tmp" "$dst"; then rm -- "$dst.$$.tmp" else echo " GEN $dst" mv -- "$dst.$$.tmp" "$dst" fi fi src="$srctree/$d/Config.src" dst="$d/Config.in" if test -f "$src"; then #echo " CHK $dst" s=`sed -n 's@^//config:@@p' -- "$srctree/$d"/*.c` echo "# DO NOT EDIT. This file is generated from Config.src" >"$dst.$$.tmp" while IFS='' read -r REPLY; do test x"$REPLY" = x"INSERT" && REPLY="$s" printf "%s\n" "$REPLY" done <"$src" >>"$dst.$$.tmp" if test -f "$dst" && cmp -s "$dst.$$.tmp" "$dst"; then rm -- "$dst.$$.tmp" else echo " GEN $dst" mv -- "$dst.$$.tmp" "$dst" fi fi done # Last read failed. This is normal. Don't exit with its error code: exit 0