CFIVE = ../c5
TREE = ../tree
HSIX = IODevice.m IOUtil.m IOSecure.m
HLI = SMCL.m SURH.m VMMG.m SPAD.m PSMG.m SIRH.m SWE.m STMG.m SMPC.m SMEA.m dev.m gat.m inv.m map.m mem.m mes.m nuc.m psd.m pse.m que.m sch.m sig.m str.m swp.m PUAL.m OSAL.m SMX.m KCDP.m

all: fixme spectree

spectree: specnames $(TREE)/Tree spectree.el
	emacs -batch specnames $(TREE)/Tree -l ../check/spectree -f spectree -f basic-save-buffer -kill

specnames: names
	sed -n < names "/^\*/s/.*	//p" | sed "s/ .*//" > $@

fixme: names
	grep "^	[A-Z]" names > $@

names: names.code names.spec
	sort -f +1 "-t	" names.code names.spec | uniq > $@
	emacs -batch $@ -l doit -f doit-3 -f basic-save-buffer -kill

names.spec: names.s2
	grep -v MESfree names.s2 | grep -v QUEhead | grep -v QUEtail | grep -v QUEmodReady > $@

names.s2: names.s1
	grep -v "\".* .*\"" names.s1 | grep -v "\"[A-Z][A-Z]*\"" | sed "s/\"//g" | sed "/)\$$/!s/\$$/ ()/" > $@
	emacs -batch $@ -l doit -f doit-2 -f basic-save-buffer -kill

names.s1: h6 h7 hli
	cat h6 h7 hli | grep -v ":\"\$$" | grep -v " Table\"\$$" | sed "s/ -.*/\"/" > $@
	emacs -batch $@ -l doit -f doit-1 -f basic-save-buffer -kill

h6:
	(cd $(CFIVE) ; grep "^\.H 6" $(HSIX)) | grep -v "\"Definitions\"" | grep -v "\"Introduction\"" | sed "s/[a-z]*\.m:\..* \"/	\"/" > $@

h7: $(CFIVE)/IOFile.m
	(cd $(CFIVE) ; grep "^\.H 7" IOFile.m /dev/null) | grep "(pT" | sed -n "1,4p" | sed "s/[a-z]*\.m:\..* \"/	\"/" > $@

hli:
	(cd $(CFIVE) ; grep "^\.LI \"" $(HLI)) | sed "s/\.m:\..* \"/	\"/" > $@
	emacs -batch $@ -l doit -f upcase-cp-names -f basic-save-buffer -kill

names.code: $(TREE)/Tree.index
	sed < $(TREE)/Tree.index "s/ *\..*//" | sed "/)\$$/!s/\$$/ (procedure)/" | sed "s/ initialization//" | sed "s/^/	/" > $@
