# Last edited on 2002-01-18 14:52:34 by stolfi
# Makefile for tabulating frequencies of stroke pairs 
# across word blanks (rightmost stroke of one glyph
# against leftmost stroke of next glyph).

all:
	for tw in t w; do \
	  ${MAKE} TW=$$tw -f stroke-pair-freqs.make single; \
	done

# Use precomputed word frequency table for the entire VMS.
LANG := voyn
BUK := maj

SUBDIR := ${LANG}/${BUK}/tot.1
SOURCE_WFR := ${SUBDIR}/gud.wfr
ROW_STROKES := _,Q,E,I,D,Y,G,R,N,M,P,J
COL_STROKES := _,Q,E,I,K,T

OUT_PRF := ${SUBDIR}/stroke-pair

######################################################################
# Recursive make for tokens or words
# Caller must define ${TW} = "t" or "w"
#
TW := TW.IS.UNDEFINED
ifneq "${TW}" "TW.IS.UNDEFINED"

OUT_PRF_TW := ${OUT_PRF}-${TW}

SPF_TW := ${OUT_PRF_TW}.spf
TEX_CTS_TW := ${OUT_PRF_TW}-counts.tex

single: single-counttbl single-freqtbls

single-counttbl: dat/${SPF_TW} dat/${TEX_CTS_TW}

single-freqtbls:
	${MAKE} TW=${TW} PN=next -f stroke-pair-freqs.make  freqtbl
	${MAKE} TW=${TW} PN=prev -f stroke-pair-freqs.make  freqtbl

dat/${SPF_TW}: dat/${SOURCE_WFR} \
            capitalize-ligatures \
            factor-field-general factor-text-eva-to-basic.gawk \
            count-elem-pairs parse-elem-list.gawk \
            compute-row-col-freqs
	@echo "dat/${SOURCE_WFR} -> dat/${SPF_TW}"
	cat dat/${SOURCE_WFR} \
	  | capitalize-ligatures -v field=3 \
	  | factor-field-general \
              -f factor-text-eva-to-basic.gawk \
              -v inField=3 -v outField=4 \
	  | elem-to-stroke-pair -v inField=4 -v outField=5 \
          | gawk -v tw="${TW}" '/./{ print (tw == "t" ? $$1 : 1), $$5; }'  \
	  | count-elem-pairs -f parse-elem-list.gawk \
	      -v endMarker='_' -v showBadWords=0 \
	      -v rowList="${ROW_STROKES}" -v colList="${COL_STROKES}" \
	  | compute-row-col-freqs -v outputTotals=1 \
	  > dat/${SPF_TW}

dat/${TEX_CTS_TW}: dat/${SPF_TW} \
            tex-format-elem-pair-freqs parse-elem-list.gawk
	@echo "dat/${SPF_TW} -> dat/${TEX_CTS_TW}"
	cat dat/${SPF_TW} \
	  | tex-format-elem-pair-freqs -f parse-elem-list.gawk \
	      -v rowList="${ROW_STROKES}" \
              -v colList="${COL_STROKES},-,+" \
	      -v endMarker='_' -v minFreq=0.015 \
	      -v showCounts=1 \
	      -v showColFreqs=0 -v showRowFreqs=0 \
              -v elemPrefix='\\sk' \
	  > dat/${TEX_CTS_TW}
	update-paper-include dat/${TEX_CTS_TW} exp/${TEX_CTS_TW} 

######################################################################
# Recursive make for prev/next frequency tables.
# Caller must define ${TW} = "t" or "w"
# and ${PN} = "prev" or "next"
#
PN := PN.IS.UNDEFINED
ifneq "${PN}" "PN.IS.UNDEFINED"

OUT_PRF_TW_PN := ${OUT_PRF_TW}-${PN}
TEX_FRQ_TW_PN := ${OUT_PRF_TW_PN}-freqs.tex

freqtbl: dat/${TEX_FRQ_TW_PN}

dat/${TEX_FRQ_TW_PN}: dat/${SPF_TW} \
            tex-format-elem-pair-freqs parse-elem-list.gawk
	@echo "dat/${SPF_TW} -> dat/${TEX_FRQ_TW_PN}"
ifeq "${PN}" "next"
	cat dat/${SPF_TW} \
	  | tex-format-elem-pair-freqs -f parse-elem-list.gawk \
	      -v rowList="${ROW_STROKES}" \
	      -v colList="`echo ${COL_STROKES} | sed -e 's/[,][-]//g'`" \
	      -v endMarker='_' -v minFreq=0.015 \
	      -v showCounts=0 \
	      -v showRowFreqs=1 -v showColFreqs=0 \
              -v elemPrefix='\\sk' \
	  > dat/${TEX_FRQ_TW_PN}
endif
ifeq "${PN}" "prev"
	cat dat/${SPF_TW} \
	  | tex-format-elem-pair-freqs -f parse-elem-list.gawk \
	      -v rowList="`echo ${ROW_STROKES} | sed -e 's/[,][-]//g'`" \
              -v colList="${COL_STROKES}" \
	      -v endMarker='_' -v minFreq=0.015 \
	      -v showCounts=0 \
	      -v showRowFreqs=0 -v showColFreqs=1 \
              -v elemPrefix='\\sk' \
	  > dat/${TEX_FRQ_TW_PN}
endif
	update-paper-include dat/${TEX_FRQ_TW_PN} exp/${TEX_FRQ_TW_PN} 

endif
# End of ${PN} recursion
######################################################################

endif
# End of ${TW} recursion
######################################################################