# Makefile for the PL/MMIX compiler

CTANGLE=ctangle
CWEAVE=cweave
TEX=tex

plmmix : mmix-arith64.o mmix-elf64.o plmmix.o
	$(CC) $(CFLAGS) plmmix.o mmix-arith64.o mmix-elf64.o -o plmmix

mmix-arith64.o : mmix-arith64.h mmix-arith64.c
	$(CC) -c $(CFLAGS) mmix-arith64.c

mmix-elf64.o : mmix-elf64.h mmix-elf64.c
	$(CC) -c $(CFLAGS) mmix-elf64.c

plmmix.o : mmix-arith64.h mmix-elf64.h plmmix.c
	$(CC) -c $(CFLAGS) plmmix.c

nnlink.c : nnlink.w
	$(CTANGLE) nnlink.w

mmix-arith64.c mmix-arith64.h : mmix-arith64.w
	$(CTANGLE) mmix-arith64.w

mmix-elf64.c mmix-elf64.h : mmix-elf64.w
	$(CTANGLE) mmix-elf64.w

plmmix.c : plmmix.w
	$(CTANGLE) plmmix.w
	touch plmmix.c

doc : mmix-arith64.dvi mmix-elf64.dvi plmmix.dvi
	dvipdfm mmix-arith64.dvi
	dvipdfm mmix-elf64.dvi
	dvipdfm plmmix.dvi

run : plmmix
	./plmmix test.plm

mmix-arith64.dvi : mmix-arith64.tex
	$(TEX) mmix-arith64.tex

mmix-elf64.dvi : mmix-elf64.tex
	$(TEX) mmix-elf64.tex

plmmix.dvi : plmmix.tex
	$(TEX) plmmix.tex

mmix-arith64.tex : mmix-arith64.w
	$(CWEAVE) mmix-arith64.w

mmix-elf64.tex : mmix-elf64.w
	$(CWEAVE) mmix-elf64.w

plmmix.tex : plmmix.w
	$(CWEAVE) plmmix.w

.PHONY : clean

clean :
	rm -f *.core *.dvi *.idx *.log *.o *.output *.scn *.tex *.toc *.obj

unit99_arith : unit99_arith.o mmix-arith64.o
	$(CC) $(CFLAGS) unit99_arith.o mmix-arith64.o -o unit99_arith
unit99_arith.o : unit99_arith.c
	$(CC) -c $(CFLAGS) unit99_arith.c
unit99_arith.c : unit99_arith.w
	$(CTANGLE) unit99_arith.w
  
ta: unit99_arith
	./unit99_arith
