#
# Makefile for "project/qa/src"
#
# Define the position of the top-level project directory.
#
PROJECT		= ../..
#
# Define the program to be made.
#
PROGRAM		= qa
#
# Defines for various useful project directories.  These
# shouldn't need changing.
#
BIN		= $(PROJECT)/bin
TARGET		= $(BIN)/$(PROGRAM)
PROGBASE	= $(PROJECT)/$(PROGRAM)
SRC		= $(PROGBASE)/src
OBJ		= $(PROGBASE)/obj
LIB		= $(PROJECT)/lib
LIBSRC		= $(LIB)/src
QLIBRARY	= $(LIB)/obj/quamlib.a
#
# Defines for various processing flags.
#
CPP		= $(CC)
DEBUG		= #-DEBUG
INCSRCS		= -I$(SRC) -I- 
CPPFLAGS	= $(DEBUG) $(INCSRCS) -I$(LIBSRC)
CFLAGS		= -O -g #-ansi -pedantic
CLIBRARY	= -ll
LDFLAGS		=
LINTFLAGS	= -ahqz
SHELL		= /bin/sh

HEADERS = \
	$(SRC)/args.h \
	$(SRC)/built_in.h \
	$(SRC)/hash_table.h \
	$(SRC)/instruction_sizes.h \
	$(SRC)/io.h \
	$(SRC)/labels.h \
	$(SRC)/lex.yy.h \
	$(SRC)/procedures.h \
	$(SRC)/put_code.h \
	$(SRC)/query_code.h \
	$(SRC)/string_table.h \
	$(SRC)/built_in_table.h
SOURCES = \
	$(SRC)/io.c \
	$(SRC)/labels.c \
	$(SRC)/lex.yy.c \
	$(SRC)/main.c \
	$(SRC)/procedures.c \
	$(SRC)/put_code.c \
	$(SRC)/query_code.c \
	$(SRC)/string_table.c \
	$(SRC)/args.c \
	$(SRC)/built_in.c \
	$(SRC)/hash_table.c \
	$(SRC)/instruction_sizes.c \
	$(SRC)/errors_out.c \
	$(SRC)/built_in_table.c
OBJECTS = \
	$(OBJ)/io.o \
	$(OBJ)/labels.o \
	$(OBJ)/lex.yy.o \
	$(OBJ)/main.o \
	$(OBJ)/procedures.o \
	$(OBJ)/put_code.o \
	$(OBJ)/query_code.o \
	$(OBJ)/string_table.o \
	$(OBJ)/args.o \
	$(OBJ)/built_in.o \
	$(OBJ)/hash_table.o \
	$(OBJ)/instruction_sizes.o \
	$(OBJ)/errors_out.o \
	$(OBJ)/built_in_table.o

#
# Compile src/file.c to obj/file.o
#
$$(OBJ)/%.o:: $(SRC)/%.c
	$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $<

$(TARGET): qlibrary $(OBJECTS)
	$(CC) $(LDFLAGS) -o $(TARGET) $(OBJECTS) $(QLIBRARY) $(CLIBRARY)
	chmod 755 $(TARGET)

qlibrary:
	cd $(LIBSRC); $(MAKE)

$(SRC)/lex.yy.c: $(SRC)/parse.l
	$(LEX) parse.l

lint:
	$(LINT) $(LINTFLAGS) $(CPPFLAGS) $(SOURCES) $(HEADERS) >lint

strip:
	strip $(TARGET)

clean:
	$(RM) $(OBJECTS) $(SRC)/lex.yy.c lint

clobber: clean
	$(RM) $(TARGET)

depend:	$(SRC)/lex.yy.c
	(echo '/^#.* PUT NO STUFF BELOW/,$$d'; echo w; echo q) | ed - Makefile
	echo '# Dependencies generated by make depend: PUT NO STUFF BELOW' >>Makefile
	for file in $(SOURCES);\
	do	gcc $(CPPFLAGS) -MM $$file |\
		sed 's| /.*\.c | |' |\
		sed 's=^\(.*:\)=$(OBJ)/\1=';\
	done >>Makefile

# Dependencies generated by make depend: PUT NO STUFF BELOW
../../qa/obj/io.o : ../../qa/src/io.c ../../lib/src/errors.h ../../lib/src/defs.h ../../qa/src/io.h 
../../qa/obj/labels.o : ../../qa/src/labels.c ../../qa/src/labels.h ../../qa/src/put_code.h \
  ../../qa/src/string_table.h 
../../qa/obj/lex.yy.o : ../../qa/src/lex.yy.c /usr/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.3.3/include/stdio.h \
  ../../qa/src/labels.h ../../qa/src/put_code.h ../../qa/src/string_table.h ../../qa/src/procedures.h \
  ../../qa/src/hash_table.h ../../qa/src/query_code.h ../../lib/src/opcodes.h \
  ../../qa/src/args.h ../../qa/src/built_in.h 
../../qa/obj/main.o : ../../qa/src/main.c ../../lib/src/options.h ../../qa/src/io.h ../../qa/src/string_table.h \
  ../../qa/src/query_code.h ../../qa/src/put_code.h ../../qa/src/procedures.h 
../../qa/obj/procedures.o : ../../qa/src/procedures.c ../../qa/src/io.h ../../lib/src/errors.h \
  ../../qa/src/put_code.h ../../qa/src/string_table.h 
../../qa/obj/put_code.o : ../../qa/src/put_code.c ../../lib/src/cells.h ../../lib/src/name_table.h \
  ../../lib/src/defs.h ../../lib/src/primitives.h ../../qa/src/string_table.h \
  ../../lib/src/errors.h ../../qa/src/io.h ../../qa/src/instruction_sizes.h ../../qa/src/labels.h \
  ../../qa/src/put_code.h ../../qa/src/procedures.h 
../../qa/obj/query_code.o : ../../qa/src/query_code.c ../../qa/src/io.h ../../qa/src/put_code.h \
  ../../qa/src/string_table.h 
../../qa/obj/string_table.o : ../../qa/src/string_table.c ../../qa/src/query_code.h ../../qa/src/put_code.h \
  ../../qa/src/string_table.h ../../qa/src/procedures.h ../../qa/src/io.h 
../../qa/obj/args.o : ../../qa/src/args.c ../../qa/src/string_table.h ../../qa/src/lex.yy.h 
../../qa/obj/built_in.o : ../../qa/src/built_in.c ../../qa/src/built_in.h ../../qa/src/built_in_table.h 
../../qa/obj/hash_table.o : ../../qa/src/hash_table.c ../../qa/src/put_code.h ../../qa/src/string_table.h 
../../qa/obj/instruction_sizes.o : ../../qa/src/instruction_sizes.c 
../../qa/obj/errors_out.o : ../../qa/src/errors_out.c ../../lib/src/defs.h ../../lib/src/errors.h 
../../qa/obj/built_in_table.o : ../../qa/src/built_in_table.c ../../qa/src/built_in.h ../../qa/src/built_in_table.h 
