##############################################################################
# 
# Makefile for programming assignments
#
# 
#
##############################################################################





target: pp5

SRC= 	utility.cc   	\
	main.cc	    	\
	declaration.cc	\
	hashtable.cc 	\
	decllist.cc	\
	scopestack.cc   \
	type.cc		\
	typecheck.cc	\
	typelist.cc	\
	tac.cc		\

OBJ=	\
	y.tab.o		\
	lex.yy.o 	\
	${SRC:.cc=.o} 	\

INCS= 

 



CFLAGS = -g $(INCS) 






LIBS=	-lc \
 	-lm \
	-ll
	
# tools to build files:
CC= g++
LD = g++
LEX = flex
YACC = bison

#rules

lex.yy.o: lex.yy.c 
	$(CC) $(CFLAGS) -c -o lex.yy.o lex.yy.c

lex.yy.c: soop.l  soop.y y.tab.h 
	$(LEX) -d soop.l

y.tab.o: y.tab.c
	$(CC) $(CFLAGS) -c -o y.tab.o y.tab.c

y.tab.h y.tab.c: soop.y
	$(YACC) -dvty soop.y

.cc.o: $*.cc
	$(CC) $(CFLAGS) -c -o $@ $*.cc

pp5:    $(OBJ)
	$(LD) -o pp5 $(OBJ) $(LIBS)


#
# make depend will set up the header file dependencies for the 
# assignment.  You should make depend whenever you add a new header
# file to the project
#
depend:
	makedepend -- $(CFLAGS) -- $(SRC)


clean:
	rm -f $(OBJ) lex.yy.c \
		parser.y y.tab.c y.tab.h y.out y.output\
		*.core core \
		pp5

# DO NOT DELETE

utility.o: utility.h /usr/include/stdlib.h /usr/include/iso/stdlib_iso.h
utility.o: /usr/include/sys/feature_tests.h /usr/include/sys/isa_defs.h
utility.o: /usr/include/stdio.h /usr/include/iso/stdio_iso.h
utility.o: /usr/include/sys/va_list.h /usr/include/stdio_tag.h
utility.o: /usr/include/stdio_impl.h /usr/include/stdarg.h
utility.o: /usr/include/iso/stdarg_iso.h /usr/include/string.h
utility.o: /usr/include/iso/string_iso.h
main.o: soop.h utility.h /usr/include/stdlib.h /usr/include/iso/stdlib_iso.h
main.o: /usr/include/sys/feature_tests.h /usr/include/sys/isa_defs.h
main.o: /usr/include/stdio.h /usr/include/iso/stdio_iso.h
main.o: /usr/include/sys/va_list.h /usr/include/stdio_tag.h
main.o: /usr/include/stdio_impl.h declaration.h decllist.h
declaration.o: declaration.h utility.h /usr/include/stdlib.h
declaration.o: /usr/include/iso/stdlib_iso.h /usr/include/sys/feature_tests.h
declaration.o: /usr/include/sys/isa_defs.h /usr/include/stdio.h
declaration.o: /usr/include/iso/stdio_iso.h /usr/include/sys/va_list.h
declaration.o: /usr/include/stdio_tag.h /usr/include/stdio_impl.h decllist.h
declaration.o: type.h hashtable.h
hashtable.o: hashtable.h utility.h /usr/include/stdlib.h
hashtable.o: /usr/include/iso/stdlib_iso.h /usr/include/sys/feature_tests.h
hashtable.o: /usr/include/sys/isa_defs.h /usr/include/stdio.h
hashtable.o: /usr/include/iso/stdio_iso.h /usr/include/sys/va_list.h
hashtable.o: /usr/include/stdio_tag.h /usr/include/stdio_impl.h
hashtable.o: /usr/include/limits.h /usr/include/iso/limits_iso.h
hashtable.o: declaration.h decllist.h /usr/include/string.h
hashtable.o: /usr/include/iso/string_iso.h
decllist.o: decllist.h /usr/include/stdlib.h /usr/include/iso/stdlib_iso.h
decllist.o: /usr/include/sys/feature_tests.h /usr/include/sys/isa_defs.h
decllist.o: utility.h /usr/include/stdio.h /usr/include/iso/stdio_iso.h
decllist.o: /usr/include/sys/va_list.h /usr/include/stdio_tag.h
decllist.o: /usr/include/stdio_impl.h
scopestack.o: scopestack.h hashtable.h utility.h /usr/include/stdlib.h
scopestack.o: /usr/include/iso/stdlib_iso.h /usr/include/sys/feature_tests.h
scopestack.o: /usr/include/sys/isa_defs.h /usr/include/stdio.h
scopestack.o: /usr/include/iso/stdio_iso.h /usr/include/sys/va_list.h
scopestack.o: /usr/include/stdio_tag.h /usr/include/stdio_impl.h decllist.h
type.o: type.h utility.h /usr/include/stdlib.h /usr/include/iso/stdlib_iso.h
type.o: /usr/include/sys/feature_tests.h /usr/include/sys/isa_defs.h
type.o: /usr/include/stdio.h /usr/include/iso/stdio_iso.h
type.o: /usr/include/sys/va_list.h /usr/include/stdio_tag.h
type.o: /usr/include/stdio_impl.h hashtable.h declaration.h decllist.h
typecheck.o: typecheck.h utility.h /usr/include/stdlib.h
typecheck.o: /usr/include/iso/stdlib_iso.h /usr/include/sys/feature_tests.h
typecheck.o: /usr/include/sys/isa_defs.h /usr/include/stdio.h
typecheck.o: /usr/include/iso/stdio_iso.h /usr/include/sys/va_list.h
typecheck.o: /usr/include/stdio_tag.h /usr/include/stdio_impl.h type.h
typecheck.o: hashtable.h scopestack.h decllist.h declaration.h typelist.h
typecheck.o: soop.h
typelist.o: typelist.h /usr/include/stdlib.h /usr/include/iso/stdlib_iso.h
typelist.o: /usr/include/sys/feature_tests.h /usr/include/sys/isa_defs.h
typelist.o: utility.h /usr/include/stdio.h /usr/include/iso/stdio_iso.h
typelist.o: /usr/include/sys/va_list.h /usr/include/stdio_tag.h
typelist.o: /usr/include/stdio_impl.h
tac.o: tac.h utility.h /usr/include/stdlib.h /usr/include/iso/stdlib_iso.h
tac.o: /usr/include/sys/feature_tests.h /usr/include/sys/isa_defs.h
tac.o: /usr/include/stdio.h /usr/include/iso/stdio_iso.h
tac.o: /usr/include/sys/va_list.h /usr/include/stdio_tag.h
tac.o: /usr/include/stdio_impl.h declaration.h decllist.h type.h hashtable.h
tac.o: /usr/include/string.h /usr/include/iso/string_iso.h
tac.o: /usr/include/stdarg.h /usr/include/iso/stdarg_iso.h typecheck.h
