# $Header: Makefile,v 1.11 90/05/23 19:07:59 wlott Exp $
CFLAGS = -g -DEXT_PAGER
LIBS = -lthreads -lmach

OBJS = ldb.o egets.o coreparse.o alloc.o monitor.o print.o \
	os.o vars.o assem.o parse.o interrupt.o test.o \
	search.o validate.o gc.o globals.o dynbind.o \
	regnames.o backtrace.o bitbash.o \
	pager.o pagerlog.o

ldb.map: ldb
	echo -n 'Map file for ldb version ' > ldb.map
	cat version >> ldb.map
	nm -gp ldb >> ldb.map


ldb: ${OBJS} version syscalls
	echo -n '1 + ' | cat - version | bc > ,version
	mv ,version version
	cc ${CFLAGS} -DVERSION=`cat version` -c version.c
	cc `cat syscalls` -o ,ldb ${OBJS} version.o ${LIBS}
	mv -f ,ldb ldb

version:
	echo 0 > version

syscalls: /usr/man/man2
	ls /usr/man/man2 | sed -e '/intro/d' -e 's/^/-u /' -e 's/\.2$$//' > ,syscalls
	mv ,syscalls syscalls
	

# If we get an interrupt while in lisp code, the global pointer
# is trash.  Therefore, we can't use the GP relative addressing
# mode in the interrupt handlers.

interrupt.o: interrupt.c
	cc ${CFLAGS} -G 0 -c interrupt.c

assem.o: assem.s
	as -G 0 -o $@ assem.s

lisp.h:
	@echo "You must run genesis to create lisp.h!"
	@false

depend: depends

depends:
	rm -f pager-makefile.BAK
	ln pager-makefile pager-makefile.BAK
	sed -n '1,/^#@/p' pager-makefile > pager-makefile.NEW
	cc -M *.[cs] | egrep -v ' /usr/' >> pager-makefile.NEW
	mv pager-makefile.NEW pager-makefile
	rm pager-makefile.BAK

#@ Do not edit anything after this line.
alloc.o: alloc.c
alloc.o: lisp.h
alloc.o: ldb.h
alloc.o: alloc.h
alloc.o: globals.h
alloc.o: lisp.h
assem.o: assem.s
assem.o: lisp.h
assem.o: lispregs.h
assem.o: globals.h
assem.o: lisp.h
backtrace.o: backtrace.c
backtrace.o: ldb.h
backtrace.o: lisp.h
backtrace.o: globals.h
backtrace.o: lisp.h
backtrace.o: interrupt.h
backtrace.o: lispregs.h
bitbash.o: bitbash.c
coreparse.o: coreparse.c
coreparse.o: lisp.h
coreparse.o: globals.h
coreparse.o: lisp.h
dynbind.o: dynbind.c
dynbind.o: ldb.h
dynbind.o: lisp.h
dynbind.o: globals.h
dynbind.o: lisp.h
egets.o: egets.c
gc.o: gc.c
gc.o: lisp.h
gc.o: ldb.h
gc.o: gc.h
gc.o: lisp.h
gc.o: globals.h
gc.o: lisp.h
gc.o: interrupt.h
gc.o: validate.h
gc.o: lispregs.h
globals.o: globals.c
globals.o: lisp.h
globals.o: globals.h
globals.o: lisp.h
interrupt.o: interrupt.c
interrupt.o: lisp.h
interrupt.o: ldb.h
interrupt.o: globals.h
interrupt.o: lisp.h
interrupt.o: lispregs.h
interrupt.o: interrupt.h
ldb.o: ldb.c
ldb.o: ldb.h
ldb.o: lisp.h
ldb.o: alloc.h
ldb.o: vars.h
monitor.o: monitor.c
monitor.o: ldb.h
monitor.o: lisp.h
monitor.o: globals.h
monitor.o: lisp.h
monitor.o: vars.h
monitor.o: parse.h
monitor.o: interrupt.h
monitor.o: lispregs.h
os.o: os.c
os.o: ldb.h
pager.o: pager.c
pager.o: pager.h
pagerlog.o: pagerlog.c
parse.o: parse.c
parse.o: ldb.h
parse.o: lisp.h
parse.o: globals.h
parse.o: lisp.h
parse.o: vars.h
parse.o: parse.h
parse.o: interrupt.h
parse.o: lispregs.h
print.o: print.c
print.o: ldb.h
print.o: print.h
print.o: lisp.h
print.o: vars.h
regnames.o: regnames.c
regnames.o: lispregs.h
search.o: search.c
search.o: lisp.h
search.o: ldb.h
test.o: test.c
test.o: lisp.h
test.o: ldb.h
validate.o: validate.c
validate.o: lisp.h
validate.o: globals.h
validate.o: lisp.h
validate.o: validate.h
vars.o: vars.c
vars.o: ldb.h
vars.o: lisp.h
vars.o: vars.h
version.o: version.c
