                # Modula-2 library
LIB	= ../../reuse/src

                # options for modula compiler
MFLAGS	= -nobounds -norange -M. -M$(LIB)

                # option to name linked program
OUT	= ; mv a.out

MD	= m2c $(MFLAGS)		# command to compile definition module
MI	= m2c $(MFLAGS)		# command to compile implementation module
MP	= m2c $(MFLAGS)		# command to compile program module
ML	= m2c $(MFLAGS) -e	# command to link program

ED	= .def	# extension for definition module
EI	= .mod	# extension for implementation module
EP	= .mod	# extension for program module
ES	= .sym	# extension for symbol file (compiled definition)
EO	= .o	# extension for object file (compiled implementation)

SD	= .def	# compiler suffix for definition module
SI	= .mod	# compiler suffix for implementation module
SP	= .mod	# compiler suffix for program module

all	:

# HEAD

AssocTab$(ES)	: AssocTab$(ED)	; $(MD) AssocTab$(SD)

AssocTab$(EO)	: AssocTab$(EI)	; $(MI) AssocTab$(SI)
AssocTab$(EO)	: AssocTab$(ES)

Base$(ES)	: Base$(ED)	; $(MD) Base$(SD)

Base$(EO)	: Base$(EI)	; $(MI) Base$(SI)
Base$(EO)	: Base$(ES)

Code$(ES)	: Code$(ED)	; $(MD) Code$(SD)
Code$(ES)	: Tree$(ES)

Code$(EO)	: Code$(EI)	; $(MI) Code$(SI)
Code$(EO)	: Code$(ES)
Code$(EO)	: Tree$(ES)
Code$(EO)	: Base$(ES)
Code$(EO)	: Tree$(ES)
Code$(EO)	: Defs$(ES)
Code$(EO)	: Values$(ES)
Code$(EO)	: Types$(ES)
Code$(EO)	: AssocTab$(ES)
Code$(EO)	: GenIdents$(ES)
Code$(EO)	: Errors$(ES)
Code$(EO)	: GenIdents$(ES)
Code$(EO)	: Defs$(ES)
Code$(EO)	: Values$(ES)

DefMods$(ES)	: DefMods$(ED)	; $(MD) DefMods$(SD)
DefMods$(ES)	: Tree$(ES)

DefMods$(EO)	: DefMods$(EI)	; $(MI) DefMods$(SI)
DefMods$(EO)	: DefMods$(ES)
DefMods$(EO)	: Base$(ES)
DefMods$(EO)	: Scanner$(ES)
DefMods$(EO)	: Parser$(ES)
DefMods$(EO)	: Errors$(ES)
DefMods$(EO)	: Positions$(ES)
DefMods$(EO)	: Tree$(ES)
DefMods$(EO)	: Defs$(ES)
DefMods$(EO)	: AssocTab$(ES)

Defs$(ES)	: Defs$(ED)	; $(MD) Defs$(SD)
Defs$(ES)	: Values$(ES)

Defs$(EO)	: Defs$(EI)	; $(MI) Defs$(SI)
Defs$(EO)	: Defs$(ES)
Defs$(EO)	: Positions$(ES)
Defs$(EO)	: Values$(ES)
Defs$(EO)	: Values$(ES)

Errors$(ES)	: Errors$(ED)	; $(MD) Errors$(SD)
Errors$(ES)	: Positions$(ES)

Errors$(EO)	: Errors$(EI)	; $(MI) Errors$(SI)
Errors$(EO)	: Errors$(ES)
Errors$(EO)	: Scanner$(ES)
Errors$(EO)	: Positions$(ES)

GenIdents$(ES)	: GenIdents$(ED)	; $(MD) GenIdents$(SD)

GenIdents$(EO)	: GenIdents$(EI)	; $(MI) GenIdents$(SI)
GenIdents$(EO)	: GenIdents$(ES)

Parser$(ES)	: Parser$(ED)	; $(MD) Parser$(SD)
Parser$(ES)	: Tree$(ES)

Parser$(EO)	: Parser$(EI)	; $(MI) Parser$(SI)
Parser$(EO)	: Parser$(ES)
Parser$(EO)	: Positions$(ES)
Parser$(EO)	: Errors$(ES)
Parser$(EO)	: Scanner$(ES)
Parser$(EO)	: Scanner$(ES)
Parser$(EO)	: Positions$(ES)
Parser$(EO)	: Tree$(ES)
Parser$(EO)	: Defs$(ES)

Positions$(ES)	: Positions$(ED)	; $(MD) Positions$(SD)

Positions$(EO)	: Positions$(EI)	; $(MI) Positions$(SI)
Positions$(EO)	: Positions$(ES)

Scanner$(ES)	: Scanner$(ED)	; $(MD) Scanner$(SD)
Scanner$(ES)	: Tokens$(ES)
Scanner$(ES)	: Positions$(ES)

Scanner$(EO)	: Scanner$(EI)	; $(MI) Scanner$(SI)
Scanner$(EO)	: Scanner$(ES)
Scanner$(EO)	: Source$(ES)
Scanner$(EO)	: Errors$(ES)
Scanner$(EO)	: Tokens$(ES)

Semantics$(ES)	: Semantics$(ED)	; $(MD) Semantics$(SD)
Semantics$(ES)	: Tree$(ES)

Semantics$(EO)	: Semantics$(EI)	; $(MI) Semantics$(SI)
Semantics$(EO)	: Semantics$(ES)
Semantics$(EO)	: Tree$(ES)
Semantics$(EO)	: Tree$(ES)
Semantics$(EO)	: UniqueIds$(ES)
Semantics$(EO)	: Values$(ES)
Semantics$(EO)	: Defs$(ES)
Semantics$(EO)	: Defs$(ES)
Semantics$(EO)	: GenIdents$(ES)
Semantics$(EO)	: Defs$(ES)
Semantics$(EO)	: Defs$(ES)
Semantics$(EO)	: Defs$(ES)
Semantics$(EO)	: Defs$(ES)
Semantics$(EO)	: Defs$(ES)
Semantics$(EO)	: Types$(ES)
Semantics$(EO)	: Defs$(ES)
Semantics$(EO)	: Values$(ES)
Semantics$(EO)	: Defs$(ES)
Semantics$(EO)	: UniqueIds$(ES)
Semantics$(EO)	: GenIdents$(ES)
Semantics$(EO)	: Errors$(ES)
Semantics$(EO)	: Errors$(ES)
Semantics$(EO)	: Defs$(ES)
Semantics$(EO)	: GenIdents$(ES)
Semantics$(EO)	: Defs$(ES)
Semantics$(EO)	: Tree$(ES)
Semantics$(EO)	: Code$(ES)
Semantics$(EO)	: Defs$(ES)
Semantics$(EO)	: Defs$(ES)
Semantics$(EO)	: Defs$(ES)
Semantics$(EO)	: Defs$(ES)
Semantics$(EO)	: Defs$(ES)
Semantics$(EO)	: GenIdents$(ES)
Semantics$(EO)	: Defs$(ES)

Source$(ES)	: Source$(ED)	; $(MD) Source$(SD)

Source$(EO)	: Source$(EI)	; $(MI) Source$(SI)
Source$(EO)	: Source$(ES)
Source$(EO)	: Scanner$(ES)

Tokens$(ES)	: Tokens$(ED)	; $(MD) Tokens$(SD)

Tokens$(EO)	: Tokens$(EI)	; $(MI) Tokens$(SI)
Tokens$(EO)	: Tokens$(ES)

Tree$(ES)	: Tree$(ED)	; $(MD) Tree$(SD)
Tree$(ES)	: Positions$(ES)
Tree$(ES)	: Defs$(ES)
Tree$(ES)	: Values$(ES)
Tree$(ES)	: UniqueIds$(ES)

Tree$(EO)	: Tree$(EI)	; $(MI) Tree$(SI)
Tree$(EO)	: Tree$(ES)
Tree$(EO)	: Positions$(ES)
Tree$(EO)	: Positions$(ES)

Types$(ES)	: Types$(ED)	; $(MD) Types$(SD)
Types$(ES)	: Values$(ES)
Types$(ES)	: Defs$(ES)

Types$(EO)	: Types$(EI)	; $(MI) Types$(SI)
Types$(EO)	: Types$(ES)
Types$(EO)	: Base$(ES)
Types$(EO)	: Tree$(ES)
Types$(EO)	: Defs$(ES)
Types$(EO)	: Values$(ES)
Types$(EO)	: Code$(ES)

UniqueIds$(ES)	: UniqueIds$(ED)	; $(MD) UniqueIds$(SD)

UniqueIds$(EO)	: UniqueIds$(EI)	; $(MI) UniqueIds$(SI)
UniqueIds$(EO)	: UniqueIds$(ES)
UniqueIds$(EO)	: Errors$(ES)

Values$(ES)	: Values$(ED)	; $(MD) Values$(SD)

Values$(EO)	: Values$(EI)	; $(MI) Values$(SI)
Values$(EO)	: Values$(ES)
Values$(EO)	: Tree$(ES)
Values$(EO)	: Defs$(ES)
Values$(EO)	: Types$(ES)
Values$(EO)	: Defs$(ES)
Values$(EO)	: Tree$(ES)

all	: mtc
mtc$(EO)	: mtc$(EP)	; $(MP) mtc$(SP)
mtc$(EO)	: Base$(ES)
mtc$(EO)	: Scanner$(ES)
mtc$(EO)	: Parser$(ES)
mtc$(EO)	: Tree$(ES)
mtc$(EO)	: DefMods$(ES)
mtc$(EO)	: Defs$(ES)
mtc$(EO)	: Semantics$(ES)
mtc$(EO)	: Code$(ES)
mtc$(EO)	: Errors$(ES)
mtc$(EO)	: Tree$(ES)
mtc$(EO)	: Defs$(ES)
mtc$(EO)	: Code$(ES)

mtc	: mtc$(EO) Code$(EO) Values$(EO) Tree$(EO) Positions$(EO) UniqueIds$(EO) Errors$(EO) Scanner$(EO) Tokens$(EO) Source$(EO) Defs$(EO) Types$(EO) Base$(EO) GenIdents$(EO) AssocTab$(EO) Semantics$(EO) DefMods$(EO) Parser$(EO)	; $(ML) mtc $(OUT) mtc

# TAIL

# CLEAN	:	; rm -f core *.[dimor] ERRORS LISTING
CLEAN	:	; rm -f core *.sym *.o
