#
# Makefile for "project/ql/src"
#
# Define the position of the top-level project directory.
#
PROJECT		= ../..
#
# Define the program to be made.
#
PROGRAM		= ql
#
# 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	=
LDFLAGS		=
LINTFLAGS	= -ahqz
SHELL		= /bin/sh

HEADERS = \
	$(SRC)/main.h
SOURCES = \
	$(SRC)/main.c \
	$(SRC)/errors_out.c
OBJECTS = \
	$(OBJ)/main.o \
	$(OBJ)/errors_out.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)

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

strip:
	strip $(TARGET)

clean:
	$(RM) $(OBJECTS) lint

clobber: clean
	$(RM) $(TARGET)

depend:
	(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
../../ql/obj/main.o : ../../ql/src/main.c ../../lib/src/name_table.h ../../lib/src/defs.h \
  ../../lib/src/primitives.h ../../lib/src/cells.h ../../lib/src/string_table.h \
  ../../lib/src/errors.h ../../lib/src/code_area.h ../../lib/src/index.h ../../lib/src/string_map.h \
  ../../lib/src/executable.h ../../lib/src/link.h ../../lib/src/load.h ../../ql/src/main.h \
  ../../lib/src/options.h ../../lib/src/pc.h ../../lib/src/pred_table.h ../../lib/src/query_code.h 
../../ql/obj/errors_out.o : ../../ql/src/errors_out.c ../../lib/src/defs.h ../../lib/src/errors.h 
