CFLAGS	= -O
LIBS	= -ll
TARGET	= vax
GENDEP	= /lib/cpp -M		# on ultrix, use /lib/cpp -Em

SRC	= README makefile INTERNALS lcomp.1 lcomp \
	  bbexit.c bbfile.c \
	  bb.h new.h bool.h \
	  bb.c lprint.c ealloc.c efopen.c \
	  vax.l 68020.l

LPRINT	= lprint.o ealloc.o efopen.o
BB	= bb.o ealloc.o efopen.o $(TARGET).o

HOME	= /u/haahr
BIN	= $(HOME)/bin
LIB	= $(HOME)/lib/bb
MAN	= $(HOME)/lib/man/man1

# normal targets

all	: bb bbexit.o bbfile.o lprint

bb	: $(BB)
	$(CC) $(CFLAGS) -o bb $(BB) $(LIBS)

lprint	: $(LPRINT)
	$(CC) $(CFLAGS) -o lprint $(LPRINT)


# c code checking

#	using V8 cyntax
CYNTAX	= cyntax
CYN	= O
CYNLIB	=

#	using sun system V lint
#CYNTAX	= /usr/5bin/lint
#CYN	= ln
#CYNLIB	= -ll


CLPRINT	= lprint.$(CYN) ealloc.$(CYN) efopen.$(CYN)
CBB	= bb.$(CYN) ealloc.$(CYN) efopen.$(CYN) $(TARGET).$(CYN)

.SUFFIXES:	.$(CYN)

.c.$(CYN):
	-$(CYNTAX) $(CFLAGS) -c $*.c

cyntax	: Cbb Clprint bbexit.$(CYN) bbfile.$(CYN)

Cbb	: $(CBB)
	-$(CYNTAX) $(CFLAGS) $(CBB) $(CYNLIB)

Clprint	: $(CLPRINT)
	-$(CYNTAX) $(CFLAGS) $(CLPRINT)

$(TARGET).$(CYN) : $(TARGET).l
	lex $(LFLAGS) -t $(TARGET).l > $(TARGET).c
	-$(CYNTAX) $(CFLAGS) -c $(TARGET).c
	rm -f $(TARGET).c


# installation procedure

install		: bin lib man
bin		: $(BIN)/lprint $(BIN)/lcomp 
lib		: $(LIB)/bb $(LIB)/bbexit.o $(LIB)/bbfile.o
man		: $(MAN)/lcomp.1

$(BIN)/lcomp	: lcomp
		sed 's+^LIB=.*$$+LIB='$(LIB)+ lcomp > $(BIN)/lcomp

$(BIN)/lprint	: lprint
		cp lprint $(BIN)
		strip $(BIN)/lprint

$(LIB)/bb	: bb
		cp bb $(LIB)
	 	strip $(LIB)/bb

$(LIB)/bbexit.o	: bbexit.o
		cp bbexit.o $(LIB)

$(LIB)/bbfile.o	: bbfile.o
		cp bbfile.o $(LIB)

$(MAN)/lcomp.1	: lcomp.1
		sed 's+\$$LIB+'$(LIB)+g lcomp.1 > $(MAN)/lcomp.1

bundle	: $(SRC)
	@bundle $(SRC)

wc	:
	@wc $(SRC)

delta	: $(SRC)
	@echo "message for $?"
	@cat > .cimsg
	@ci -q -l -m"`cat .cimsg`" $?
	@rm -f .cimsg
	@touch delta

clean	:
	rm -f a.out prof.out bb lprint lex.yy.c makefile.dep *.sL *.[Oos] *%

depend	:
	sed '/^# --- cut here ---$$/q' makefile > makefile.dep
	for i in *.[cly]; do $(GENDEP) $$i; done >> makefile.dep
	mv makefile.dep makefile

# --- cut here ---
68020.o: 68020.l
68020.o: /usr/include/stdio.h
68020.o: /usr/include/ctype.h
68020.o: /usr/include/string.h
68020.o: ./bool.h
68020.o: ./bb.h
bb.o: bb.c
bb.o: /usr/include/stdio.h
bb.o: /usr/include/ctype.h
bb.o: /usr/include/string.h
bb.o: ./new.h
bb.o: ./bool.h
bb.o: ./bb.h
bbexit.o: bbexit.c
bbexit.o: /usr/include/stdio.h
ealloc.o: ealloc.c
ealloc.o: /usr/include/stdio.h
ealloc.o: ./new.h
ealloc.o: /usr/include/string.h
efopen.o: efopen.c
efopen.o: /usr/include/stdio.h
lprint.o: lprint.c
lprint.o: /usr/include/stdio.h
lprint.o: /usr/include/string.h
lprint.o: ./bool.h
lprint.o: ./new.h
max.o: max.c
panic.o: panic.c
panic.o: /usr/include/stdio.h
vax.o: vax.l
vax.o: /usr/include/stdio.h
vax.o: /usr/include/ctype.h
vax.o: /usr/include/string.h
vax.o: ./bool.h
vax.o: ./bb.h
