# Create a  Makefile in the subordinate directory ${SIZE}
# XXX? , which is included by the main
# Makefile.  This is needed because each chapter depends
# on the previous chapter (due to the possibility of changed
# page numbers), so we need to build a chain of dependencies.
#
# Usage:
#   $0 Preface Chapters
#
# $Id: makebookmakefile,v 2.1 1997/12/07 08:34:53 grog Exp grog $
set -v

SOURCES=$1
PSDOCS=$2
parms=$1		# save the original parameters
set $parms
headerstyle=2		# footer on first page, header on following
roffopts="-rex=\${EXAMPLE-SIZE} -rfirstpage=1 -r\$\$\$\$ -rL\${HEIGHT} -rW\${WIDTH} -rPS=\${TEXTSIZE} -rLS=\${LINESPACING} -rN\$headerstyle"
stripcond=../tools/stripcond

echo "# Makefile generated automatically by $0 on `date`"
echo '# Do not edit this file'
echo

# Build the rules for each chapter and appendix.  Each depends on the
# previous one, since the page numbers could have changed.

# previous=
# while [ "$1" != "" ]; do
#   base=`basename $1 .ps`
#   realtarget=Chapter/${SIZE}/$base.ps
#   if [ "$previous" != "" ]; then
#     startpage=${SIZE}/Toc/`basename $previous .ps`.firstafter	# file with start page number
#   fi
#   echo $1 Chapter/${SIZE}/$1:  Chapter/${SIZE}/$previous $base.mm global.mm ${SIZE}/Xref ${SIZE}/chapternumbers \${MACROFILE}
# # echo '	@echo' TARGET: \$@
#   echo '	' @title=$base\; \\
#   if [ "$previous" = "" ]; then
#     echo '	 ' page=1\; \\
#   else
#     echo '	 ' read \< $startpage page\; \\
#   fi
#   echo '	 ' echo -n \"+++ Chapter $base starts on page \$\$page \"\; \\
#   echo '	' \(echo \".pn \$\$page\"\; \${SOELIM} global.mm ${SIZE}/Xref ${SIZE}/chapternumbers $base.mm\) \| \\
#   echo '	' ${stripcond} ${SIZE} \| \\
#   echo '	  ' \${PIC} \| \${TBL} \| \\
#   echo '	  ' groff $roffopts -mpic \${MACROFILE} -  \\
#   echo '	  ' \>$realtarget.tmp 2\>${SIZE}/Toc/$base\; \\
#   echo '	' exitcode=\$\$?\; \\
#   echo '	' mv $realtarget.tmp $realtarget\; \\
#   echo '	' chapter=\`awk \< ${SIZE}/Toc/$base \'/Chapter/ {chapter = \$\$2}\; END {print chapter}\'\`\; \\
#   echo '	' chapter=\`basename \$\$chapter ,\`\; \\
#   echo '	' startpage=\$\$page\; \\
#   echo '	' page=\`awk \< $realtarget \'/%%Page:/ {page=\$\$2 }\; END {print page}\'\`\; \\
#   echo '	' if [ \$\$chapter -lt 10 ]\; then \\
#   echo '	  ' filename=Chapter/${SIZE}/0\$\$chapter-$base.ps\; \\
#   echo '	' else \\
#   echo '	  ' filename=Chapter/${SIZE}/\$\$chapter-$base.ps\; \\
#   echo '	' fi\; \\
#   echo '	' echo -n \"and ends on page \$\$page \"\; \\
#   echo '	' page=\`expr \$\$page + 1\`\; \\
#   echo '	' echo  \\\(\`expr \$\$page - \$\$startpage\` pages\\\): \$\$filename\; \\
#   echo '	' if [ \`expr \$\$page % 2 \` -eq 0 ]\; then \\
#   echo '	  ' echo \"    \(Last page is blank\)\"\; \\
#   echo '	  ' page=\`expr \$\$page + 1\`\; \\
#   echo '	' fi\; \\
#   echo '	' echo \$\$page \> ${SIZE}/Toc/$base.firstafter\; \\
#   echo '	' egrep -v ^\'Chapter\|File\|\>\<\'  ${SIZE}/Toc/$base\; \\
#   echo '	' rm -f \$\$filename\; \\
#   echo '	' ln $realtarget \$\$filename\; \\
#   echo '	' if [ \$\$exitcode -ne 0 ]\; then \\
#   echo '	  ' echo \"*** Exit code \$\$exitcode - format aborted\"\; \\
#   echo '	' fi
#   echo
#   if [ "$2" = "" ]; then
#     echo all: '	' Chapter/${SIZE} ${SIZE}/Toc Chapter/${SIZE}/$base.ps
#   fi
#   previous=$1
#   shift
# done

previous=
while [ "$1" != "" ]; do
  base=`basename $1 .ps`
  realtarget=Chapter/${SIZE}/$base.ps
  if [ "$previous" != "" ]; then
    startpage=${SIZE}/Toc/`basename $previous .ps`.firstafter	# file with start page number
  fi
  echo "	"  # Remake individual chapters
  echo "	"  foreword.ps preface.ps \${POSTSCRIPT}:  \${SIZE}/Toc/book Chapter/\${SIZE}/ps \\
  echo "	"  	   Chapter/\${SIZE}/nps \${SIZE}/chapternumbers ids.mm 
  echo "	"  	make ctoc/\`basename \${@:.ps=.mm}\`
  echo "	"  	-@base=\${@:.ps=}\; \\
  echo "	"  	if \[ \"$previous\" = \"\" ]; then \\
  echo "	"  	  page=1\; \\
  echo "	"  	else
  echo "	"  	  read \< $startpage page\; \\
  echo "	"  	fi\; \\
  echo "	"  	RCSID=\`grep \\\\\$\$\${RCSIDSTRING}: \$\$base.mm \| awk '{print  \$\$3 \" v\" \$\$4 \" (\" \$\$5 \" \" \$\$6 \") \" }'\`\; \\
  echo "	"  	timestamp=\`echo \$\$RCSID \| sed 's:.*(::\; s/:\[0-9]\[0-9]).*\$\$//\; s#\[:/ ]##g'\`\; \\
  echo "	"  	rcsdiff \$\$base.mm \>/dev/null\; \\
  echo "	"  	if \[ \$\$? != 0 ]\; then \\
  echo "	"  	  RCSID=\"\$\$RCSID (modified \`TZ=Etc/UTC ls -lT \$\$base.mm \|  \\
  echo "	"  		awk '{print \$\$7 \\\" \\\" \$\$6 \\\" \\\" \$\$9 \\\", \\\" \$\$8}'\` UTC)\"\; \\
  echo "	"  	fi\; \\
  echo "	"  	echo \"^Chapter.*\\\\\<\$\$base.mm\"\; \\
  echo "	"  	chapter=\`egrep \"^Chapter.*\\\\\<\$\$base.mm\" \${SIZE}/Toc/book \| sed 's:,::g' \| awk '{print \$\$2}'\`\; \\
  echo "	"  	if \[ \"\$\$chapter\" = \"\" ]\; then \\
  echo "	"  	  setit=\`egrep \"^Appendix.*\\\\\<\$\$base.mm\" \${SIZE}/Toc/appendix\`\; \\
  echo "	"  	  if \[ \"\$\$setit\" != \"\" ]\; then \\
  echo "	"  	    set \$\$setit\; \\
  echo "	"  	    prefix=\`\${XCHAR} \$\$2\`\; \\
  echo "	"  	    page=\`echo \$\$4 \| sed 's:,::'\`\; chapter=\$\$6\; \\
  echo "	"  	  else \\
  echo "	"  	    page=1\; \\
  echo "	"  	    prefix=00\; \\
  echo "	"  	  fi\; \\
  echo "	"  	fi\; \\
  echo "	"  	echo base \$\$base\; \\
  echo "	"  	echo -n \"+++ Chapter \$\$chapter (\$@) starts on page \$\$page \"\; \\
  echo "	"  	(echo \".pn \$\$page\"\;  echo \".ds RCS-ID \$\$RCSID\"\; \\
  echo "	"  	   (\${SOELIM} ids.mm \${MACROFILE} \; echo \".ds RCS-ID \$\$RCSID\"\; \\
  echo "	"  	   \${SOELIM} \${SIZE}/Xref \${SIZE}/chapternumbers global.mm \$\$base.mm \| \\
  echo "	"  	\${TOOLS}/stripcond \${TAGS.\${SIZE}} \| \\
  echo "	"  	 \${PIC} 2\>/dev/tty \| \${TBL})) \| \\
  echo "	"  	 groff \${ROFFDEBUG} -U -rex=\${EXAMPLE-SIZE} -rfirstpage=1 -r\$\$\$\$ -rL\${XHEIGHT.\${SIZE}} \\
  echo "	"  	    -rW\${WIDTH.\${SIZE}} -rPS=\${TEXTSIZE} -rLS=\${LINESPACING} - \\
  echo "	"  	 \>Chapter/\${SIZE}/ps/\$@.tmp 2\>\${SIZE}/Toc/\$\$base\; \\
  echo "	"  	exitcode=\$\$?\; \\
  echo "	"  	mv Chapter/\${SIZE}/ps/\$@.tmp Chapter/\${SIZE}/ps/\$@\; \\
  echo "	"  	startpage=\$\$page\; \\
  echo "	"  	page=\`awk \< Chapter/\${SIZE}/ps/\$@ '/%%Page:/ {page=\$\$2 }\; END {print page}'\`\; \\
  echo "	"  	if \[ \"\$\$prefix\" != \"\" ]\; then \\
  echo "	"  	  filename=Chapter/\${SIZE}/nps/\$\$prefix-\$@\; \\
  echo "	"  	elif \[ \$\$chapter -lt 10 ]\; then \\
  echo "	"  	  filename=Chapter/\${SIZE}/nps/0\$\$chapter-\$@\; \\
  echo "	"  	else \\
  echo "	"  	  filename=Chapter/\${SIZE}/nps/\$\$chapter-\$@\; \\
  echo "	"  	fi\; \\
  echo "	"  	echo -n \"and ends on page \$\$page \"\; \\
  echo "	"  	page=\`expr \$\$page + 1\`\; \\
  echo "	"  	echo \\(\`expr \$\$page - \$\$startpage\` pages\\): \$\$filename\; \\
  echo "	"  	if \[ \`expr \$\$page % 2 \` -eq 0 ]\; then \\
  echo "	"  	  echo \" (Last page is blank)\"\; \\
  echo "	"  	  page=\`expr \$\$page + 1\`\; \\
  echo "	"  	fi\; \\
  echo "	"  	egrep -v ^'Chapter\|File\|PSPIC\|\>\<' \${SIZE}/Toc/\$\$base\; \\
  echo "	"  	rm -f \$\$filename\; \\
  echo "	"  	ln Chapter/\${SIZE}/ps/\$@ \$\$filename\; \\
  echo "	"  	if \[ \$\$exitcode -ne 0 ]\; then \\
  echo "	"  	  echo \"*** Exit code \$\$exitcode - format aborted\"\; \\
  echo "	"  	fi\;
  echo "	"  # Set the destination timestamp to the RCS date.
  echo "	"  # Why would I want to do that?
  echo "	"  #	TZ=Etc/GMT touch -t \$\$timestamp Chapter/\${SIZE}/ps/\`basename \$@\`\;


lastchapter=$base		# for index
startpage=${SIZE}/Toc/`basename $previous .ps`.firstafter	# file with start page number of index
# Table of contents, preface and index
echo
for base in index; do
   realtarget=Chapter/${SIZE}/$base.ps
   echo $base.ps Chapter/${SIZE}/$base.ps: ${SIZE}/Xref $base.mm global.mm ${SIZE}/Xref ${SIZE}/chapternumbers \${MACROFILE}
   # echo '	@echo' TARGET: \$@
   echo '	' @echo +++ Formatting $base to Chapter/${SIZE}/$base.ps
   if [ "$base" = "index" ]; then		     # arabic page numbers
     echo '	 ' @read \< $startpage page\; \\
     echo '	' \(echo \".pn \$\$page\"\; \${SOELIM} global.mm ${SIZE}/Xref ${SIZE}/chapternumbers $base.mm\) \| ${stripcond} ${SIZE} \| \\
   else if [ "$base" = "toc" ]; then
     echo '	' @\(\${SOELIM} global.mm ${SIZE}/Xref ${SIZE}/chapternumbers $base.mm\) \| \\
   else				# preface
# We have a problem with the preface.  Its page number depends on the size of 
# the table of contents, which depends on the rest of the book down to the
# preface: a perfect circular dependency.  Bet that it won't change too much,
# and ignore the dependency.
     echo '	 ' @read \< ${SIZE}/Toc/toc.firstafter page\; \\
     echo '	' \(echo \".pn \$\$page\"\; \${SOELIM} global.mm ${SIZE}/Xref ${SIZE}/chapternumbers $base.mm\) \| ${stripcond} ${SIZE} \| \\
   fi; fi
   echo '	'  \${PIC} \| \${TBL} \| \\
   echo '	' groff $roffopts -mpic \${MACROFILE} -  \\
   echo '	' \>Chapter/${SIZE}/$base.ps 2\>${SIZE}/Toc/$base
   echo '	'@-egrep -v ^\'Chapter\|File\|\>\<\'  ${SIZE}/Toc/$base
   if [ "$base" = "toc" ]; then
     echo '	' page=\`awk \< $realtarget \'/%%Page:/ {page=\$\$2 }\; END {print page}\'\`\; \\
     echo '	' page=\`expr \$\$page + 1\`\; \\
     echo '	' if [ \`expr \$\$page % 2 \` -eq 0 ]\; then \\
     echo '	  ' page=\`expr \$\$page + 1\`\; \\
     echo '	' fi\; \\
     echo '	' echo \$\$page \> ${SIZE}/Toc/$base.firstafter\; \\
   else if [ "$base" = "preface" ]; then
     echo '	'@echo 1 '>' ${SIZE}/Toc/$base.firstafter
   fi; fi
   echo
done

echo
set ${PSDOCS}
while [ "$2" != "" ]; do
  echo $2: $1
  shift
done