#!/bin/bash
# bashism:
# "read -r" without variable name reads line into $REPLY
# without stripping whitespace.

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
	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"
		while read -r; 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 read -r; 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
