CC = gcc
AR = ar
LDFLAGS = -static
CFLAGS = -Wall -Werror -gstabs -O0
PRINT = enscript
PRINTFLAGS = -2rG -fHelvetica7 -FHelvetica-Bold10 
DOC = doxygen
AFS_DIR = /afs/andrew/scs/cs/15-412/Web/update

include traceback.mk

TRACEBACK_OBJS = traceback_globals.o $(MY_TRACEBACK_OBJS)

.PHONY: doupdate html_doc print clean

all: $(TEST_PROGS)

doupdate:
	./update.pl $(UPDATE_METHOD)

%.o: %.c
	$(CC) -c -o $(*F).o $(CFLAGS) $(LDFLAGS) $(*F).c

%.o: %.s
	@echo "You should use the .S file extension rather than .s"
	@echo ".s does not support precompiler directives (like #include)"
	@false

%.o: %.S
	$(CC) -c -o $(*F).o $(CFLAGS) $(LDFLAGS) $(*F).S

libtraceback.a: doupdate $(TRACEBACK_OBJS)
	$(AR) rc libtraceback.a $(TRACEBACK_OBJS)

$(TEST_PROGS): %: %.o libtraceback.a
	$(CC) -o $@ $@.o -L. libtraceback.a $(CFLAGS) $(LDFLAGS) $(LIBS)
	./symtabgen.pl $@

html_doc:
	$(DOC) $(AFS_DIR)/doxygen.config

print:
	$(PRINT) $(PRINTFLAGS) -p traceback.ps $(SRCS) $(HDRS)

clean:
	rm -rf *.o *~ libtraceback.a $(TEST_PROGS)

