CC = /usr/local/bin/gcc
AR = ar
LDFLAGS = -static
CFLAGS = -Wall -Werror -gstabs -O0
PRINT = enscript
PRINTFLAGS = -2rG -fCourier7 -FCourier-Bold10 
DOC = doxygen
#AFS_DIR = /afs/cs.cmu.edu/academic/class/15410-f07/Web/update

include traceback.mk

TRACEBACK_OBJS = traceback_globals.o $(MY_TRACEBACK_OBJS)

.PHONY: update query_update html_doc print clean verify

all: query_update $(TEST_PROGS) add_one_test

#doupdate:
#	./update.pl $(UPDATE_METHOD)

update:
	./update.sh $(UPDATE_METHOD)

query_update:
	./update.sh $(UPDATE_METHOD) query

%.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: $(TRACEBACK_OBJS)
	$(AR) rc libtraceback.a $(TRACEBACK_OBJS)

# Run with -W0 to get rid of
#   ./symtabgen.rb:142: warning: Insecure world writable dir /afs/andrew.cmu.edu/usr2 in PATH, mode 040777
$(TEST_PROGS) verify_test: %: %.o libtraceback.a
	$(CC) -o $@ $@.o -L. libtraceback.a $(CFLAGS) $(LDFLAGS) $(LIBS)
	ruby -W0 ./symtabgen.rb $@

add_one_test: add_one.S add_one_test.c
	$(CC) -o add_one_test add_one.S add_one_test.c $(CFLAGS) $(LDFLAGS)

html_doc:
	$(DOC) doxygen.conf

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

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

verify: verify_test
	./verify_test | diff -bB sample.output - 2>&1 > /dev/null

