#
# This file makes TANGLE and WEAVE from their WEB sources
#

SITEDIR=/
CC=lc
OPT=-cw -j100i94i84i
CFLAGS=-b0 -i$(SITEDIR) -r0 -v $(OPT)
BLINKCMDS=LIB lib:lcnb.lib


.SUFFIXES: .o .c .p .ch
.SUFFIXES: .dvi .tex .ch
.ch.p:
		/web/tangle $*.web $*.ch
.p.c:
		execute /common/convert $*
.c.o:
		$(CC) $(CFLAGS) $*.c
.ch.tex:
		/web/weave $*.web $*.ch
.tex.dvi:
		virtex &plain. \language=\usenglish \input $*.tex


# Routines used everywhere.
# 
commondefines=/common/common.defines
commonh=/common/extra.h
commono=/common/extra.o /common/main.o


default:	tangle

all:		tangle weave

docs:		tangle.dvi weave.dvi


# Tangleboot:
# 
tangleboot:	tangleboot.o $(commono)
		blink FROM lib:c.o $(commono) $*.o TO tangle $(BLINKCMDS)
tangleboot.o: 	tangleboot.c $(commonh)
		edit tangleboot.c WITH fix_tangle OPT W1000
		$(CC) $(CFLAGS) $*
tangleboot.c: 	tangleboot.p $(commondefines)


# Tangle:
# 
tangle:		tangle.o $(commono)
		blink FROM lib:c.o $(commono) $*.o TO $@ $(BLINKCMDS)
tangle.o: 	tangle.c $(commonh)
		edit tangle.c WITH fix_tangle OPT W1000
		$(CC) $(CFLAGS) $*
tangle.c: 	tangle.p $(commondefines)
tangle.p:	tangle.web tangle.ch
tangle.dvi:	tangle.tex
tangle.tex:	tangle.web tangle.ch


# Weave:
# 
weave: 		weave.o $(commono)
		blink FROM lib:c.o $(commono) $*.o TO $@ $(BLINKCMDS)
weave.o: 	weave.c $(commonh)
		edit weave.c WITH fix_weave OPT W1000
		$(CC) $(CFLAGS) $*
weave.c:	weave.p $(commondefines)
weave.p: 	weave.web weave.ch
weave.dvi:	weave.tex
weave.tex:	weave.web weave.ch

clean:
		delete tangleboot.o tangle.o weave.o QUIET
		delete tangleboot tangle weave QUIET

# Do not remove tangleboot.p, since it's needed for bootstrapping.
# 
veryclean:	clean
		delete tangle.p weave.p QUIET
		delete tangleboot.c tangle.c weave.c QUIET
		delete tangleboot.h tangle.h weave.h QUIET
		delete tangle.dvi weave.dvi QUIET
		delete tangle.tex weave.tex CONTENTS.tex QUIET
		delete tangle.log weave.log QUIET
