M2M2 = /u/ksos/ksos32/tools/m2m2
KERM1 = /u/ksos/ksos11/kernel/work/KER.m1

FILES = K32conf.def K32except.def K32baseTypes.def K32calls.def\
K32types.def Kmisc.def K32callp.def KERpcs.def KIO.def IOform.def\
IOUtil.mod IOSecure.mod IOD.def IODtrap.mod IODnew.mod IODint.mod\
IODtimer.mod IODbus.mod IODqueue.mod IOTqueue.mod IODdevs.mod\
IODRK05.mod IODRWP.mod IODRWS04.mod IODTWE16.mod IODPR11.mod\
IODPC11.mod IODLP11.mod IODDL11.mod IODDH11.mod IODLHDH.mod IOTsys.mod\
IODsys.mod IOE.mod IOEform.def IOF.def IOFform.def IOFcacher.mod\
IOFindex.mod IOFspace.mod IOFsys.mod IOCommon.mod kernel_macros.h\
KPRa.mod clock.mod KPRb.mod KPRc.mod KPRd.mod psd.mod KPRdcl.def\
KSM.mod KSMa.mod KSMb.mod KSMc.mod KSMd.mod KSMnad.def KSPa.mod\
KSParith.mod BUILD.mod KSPb.mod kcdp.mod TIIacc.mod memPar.mod\
KSPnad.def Kernel.mod Nucleus.mod

BYHAND = K32baseTypes.def KPRdcl.def IOUtil.mod IOSecure.mod IODnew.mod\
IODtimer.mod IODqueue.mod IOTqueue.mod IODdevs.mod IOTsys.mod\
IODsys.mod IOEform.def IOE.mod IOFform.def IOFcacher.mod IOFindex.mod\
IOFspace.mod IOFsys.mod IOCommon.mod KPRa.mod clock.mod KPRb.mod\
KPRc.mod KPRd.mod psd.mod KSM.mod KSMa.mod KSMb.mod KSMc.mod KSMd.mod\
KSPa.mod KSParith.mod BUILD.mod KSPb.mod TIIacc.mod memPar.mod\
Kmisc.def kcdp.mod

all: $(FILES)

K32conf.def: K32conf.head
K32except.def: K32except.head
K32baseTypes.def: K32baseTypes.head
K32calls.def: K32calls.head
K32types.def: K32types.head
Kmisc.def: Kmisc.head
K32callp.def: K32callp.head
KERpcs.def: KERpcs.head
KPRdcl.def: KPRdcl.head
KSMnad.def: KSMnad.head
KSPnad.def: KSPnad.head
IOform.def: IOform.head
KIO.def: KIO.head
IOUtil.mod: IOUtil.head
IOSecure.mod: IOSecure.head
IOD.def: IOD.head
IODtrap.mod: IODtrap.head
IODnew.mod: IODnew.head
IODint.mod: IODint.head
IODtimer.mod: IODtimer.head
IODbus.mod: IODbus.head
IODqueue.mod: IODqueue.head
IOTqueue.mod: IOTqueue.head
IODdevs.mod: IODdevs.head
IOTsys.mod: IOTsys.head
IODsys.mod: IODsys.head
IOEform.def: IOEform.head
IOE.mod: IOE.head
IOFform.def: IOFform.head
IOF.def: IOF.head
IOFcacher.mod: IOFcacher.head
IOFindex.mod: IOFindex.head
IOFspace.mod: IOFspace.head
IOFsys.mod: IOFsys.head
IOCommon.mod: IOCommon.head
KPRa.mod: KPRa.head
clock.mod: clock.head
KPRb.mod: KPRb.head
KPRc.mod: KPRc.head
KPRd.mod: KPRd.head
psd.mod: psd.head
KSM.mod: KSM.head
KSMa.mod: KSMa.head
KSMb.mod: KSMb.head
KSMc.mod: KSMc.head
KSMd.mod: KSMd.head
KSPa.mod: KSPa.head
KSParith.mod: KSParith.head
BUILD.mod: BUILD.def
KSPb.mod: KSPb.head
kcdp.mod: kcdp.head
TIIacc.mod: TIIacc.head
memPar.mod: memPar.head
Kernel.mod: Kernel.head
Nucleus.mod: Nucleus.head
$(FILES): KER.m2 split-kernel.el
	OLDVERSIONS $(BYHAND)
	emacs -batch KER.m2 -l split-kernel -f split-kernel -kill
	UPDATE $(BYHAND)
	CHANGES

KER.m2: KER.out fix-kernel.el
	-mv KER.out~ KER.out~~
	emacs -batch KER.out -l fix-kernel -f fix-kernel -f basic-save-buffer -kill
	-mv $@ $@~
	mv KER.out $@
	mv KER.out~ KER.out
	-mv KER.out~~ KER.out~

KER.out: $(M2M2) $(KERM1) ksos_idents ksos_builtins
	-mv $@ $@~
	$(M2M2) -p -t -i ksos_idents -b ksos_builtins $(KERM1) > $@

m2:
	NEWVERSIONS $(BYHAND)
	-rm -f .key/* .lnk/* .ref/* .sym/* *.i *.errors
	make -k -f m2makefile

errlst:
	cat *.errors | sed "s/.*:  //" | sort | uniq -c | sort -r > $@

CHART: $(FILES)
	NEWVERSIONS $(BYHAND)
	wc -lc kernel_macros.h IODconf.h K32baseTypes.def\
K32baseTypes.mod K32conf.def K32conf.mod K32except.def K32except.mod\
K32calls.def K32calls.mod K32types.def K32types.mod K32callp.def\
K32callp.mod IOform.def IOform.mod IOEform.def IOEform.mod IOFform.def\
IOFform.mod KSPnad.def KSPnad.mod KSMnad.def KSMnad.mod KERpcs.def\
KERpcs.mod KPRdcl.def KPRdcl.mod Nucleus.def KIO.def KIO.mod\
IOUtil.def IOSecure.def IOD.def IOD.mod IODtrap.def IODnew.def\
IODint.def IODtimer.def IODbus.def IODqueue.def IOTqueue.def\
IODdevs.def IOTsys.def IODsys.def IOE.def IOF.def IOF.mod\
IOFcacher.def IOFindex.def IOFspace.def IOFsys.def IOCommon.def\
KPRa.def clock.def KPRb.def KPRc.def KPRd.def psd.def KSM.def KSMa.def\
KSMb.def KSMc.def KSMd.def KSPa.def KSParith.def BUILD.def KSPb.def\
kcdp.def TIIacc.def memPar.def Kmisc.def IOUtil.mod IOSecure.mod\
IODnew.mod IODint.mod IODtimer.mod IODqueue.mod IOTqueue.mod\
IODdevs.mod IOTsys.mod IODsys.mod IOCommon.mod IOE.mod IOFcacher.mod\
IOFindex.mod IOFspace.mod IOFsys.mod KPRa.mod clock.mod KPRb.mod\
KPRc.mod KPRd.mod psd.mod KSM.mod KSMa.mod KSMb.mod KSMc.mod KSMd.mod\
KSPa.mod KSParith.mod BUILD.mod KSPb.mod TIIacc.mod memPar.mod\
Kmisc.mod Kernel.mod > $@
	echo "" >> $@
	wc -lc kcdp.mod >> $@
	echo "" >> $@
	wc -lc IODtrap.mod IODbus.mod Nucleus.mod IODRK05.mod\
IODRWP.mod IODRWS04.mod IODTWE16.mod IODPR11.mod IODPC11.mod\
IODLP11.mod IODDL11.mod IODDH11.mod IODLHDH.mod >> $@
	echo "" >> $@
	wc -lc kcdp.mod >> $@
	grep total $@ >> $@
	echo "" >> $@
	date >> $@

symbol-index: make-symbol-list.el IOCommon.def IOD.def IODtrap.def\
IODnew.def IODint.def IODtimer.def IODbus.def IODqueue.def\
IOTqueue.def IODdevs.def IOTsys.def IODsys.def IOEform.def IOE.def\
IOFform.def IOF.def IOFcacher.def IOFindex.def IOFspace.def IOFsys.def\
IOSecure.def IOUtil.def K32conf.def K32except.def K32baseTypes.def\
K32calls.def K32types.def K32callp.def KERpcs.def IOform.def KIO.def\
KPRa.def clock.def KPRb.def KPRc.def KPRd.def psd.def KPRdcl.def\
KSM.def KSMa.def KSMb.def KSMc.def KSMd.def KSMnad.def KSPa.def\
KSParith.def BUILD.def KSPb.def kcdp.def TIIacc.def memPar.def\
KSPnad.def Kmisc.def Nucleus.def
	NEWVERSIONS $(BYHAND)
	ls *.def > .sym-files
	emacs -batch .sym-files -l make-symbol-list -f make-symbol-list -kill
	rm -f .sym-files
	echo "ADDRESS : SYSTEM" >> $@
	echo "ADR : SYSTEM" >> $@
	echo "SIZE : SYSTEM" >> $@
	echo "TSIZE : SYSTEM" >> $@
	echo "WORD : SYSTEM" >> $@
	sort -f $@ -o $@
	-diff $@~ $@

heads:
	Rebuild-Import-Lists BUILD.def BUILD.head IOCommon.def\
IOCommon.head IOD.head IOD.mod IODbus.def IODbus.head IODdevs.def\
IODdevs.head IODint.def IODint.head IODnew.def IODnew.head\
IODqueue.def IODqueue.head IODsys.def IODsys.head IODtimer.def\
IODtimer.head IODtrap.def IODtrap.head IOE.def IOE.head IOEform.head\
IOEform.mod IOF.head IOF.mod IOFcacher.def IOFcacher.head IOFform.head\
IOFform.mod IOFindex.def IOFindex.head IOform.head IOform.mod\
IOFspace.def IOFspace.head IOFsys.def IOFsys.head IOSecure.def\
IOSecure.head IOTqueue.def IOTqueue.head IOTsys.def IOTsys.head\
IOUtil.def IOUtil.head K32baseTypes.head K32baseTypes.mod\
K32callp.head K32callp.mod K32calls.head K32calls.mod K32conf.head\
K32conf.mod K32except.head K32except.mod K32types.head K32types.mod\
kcdp.def kcdp.head KERpcs.head KERpcs.mod KIO.head KIO.mod Kmisc.mod\
Kmisc.head KPRa.def KPRa.head clock.def clock.head KPRb.def KPRb.head\
KPRc.def KPRc.head KPRd.def KPRd.head psd.def psd.head KPRdcl.head\
KPRdcl.mod KSM.def KSM.head KSMa.def KSMa.head KSMb.def KSMb.head\
KSMc.def KSMd.def KSMc.head KSMnad.head KSMnad.mod KSPa.def KSPa.head\
KSParith.def KSParith.head KSPb.def KSPb.head KSPnad.head KSPnad.mod\
memPar.def memPar.head Nucleus.def Nucleus.head TIIacc.def TIIacc.head\
Kernel.head
	OLDVERSIONS $(BYHAND)
	Rebuild-Import-Lists BUILD.mod+1 IOCommon.mod+1 IODdevs.mod+1\
IODnew.mod+1 IODqueue.mod+1 IODsys.mod+1 IODtimer.mod+1 IOE.mod+1\
IOEform.def+1 IOFcacher.mod+1 IOFform.def+1 IOFindex.mod+1\
IOFspace.mod+1 IOFsys.mod+1 IOSecure.mod+1 IOTqueue.mod+1 IOTsys.mod+1\
IOUtil.mod+1 K32baseTypes.def+1 KPRa.mod+1 clock.mod+1 KPRb.mod+1\
KPRc.mod+1 KPRd.mod+1 psd.mod+1 KPRdcl.def+1 KSM.mod+1 KSMa.mod+1\
KSMb.mod+1 KSMc.mod+1 KSMd.mod+1 KSPa.mod+1 KSParith.mod+1 KSPb.mod+1\
Kmisc.def+1 memPar.mod+1 TIIacc.mod+1 kcdp.mod+1
