#
# Makefile for "project/qp/src"
#
# Define the position of the top-level project directory.
#
PROJECT		= ../..
#
# Define the program to be made.
#
PROGRAM		= qp
#
# Defines for various useful project directories.  These
# shouldn't need changing.
#
BIN		= $(PROJECT)/bin
TARGET		= $(BIN)/$(PROGRAM)
XTARGET		= $(BIN)/x$(PROGRAM)
TARGETSAVE	= $(TARGET).qx
XTARGETSAVE	= $(XTARGET).qx
PROGBASE	= $(PROJECT)/$(PROGRAM)
SRC		= $(PROGBASE)/src
OBJ		= $(PROGBASE)/obj
$(XTARGET) xclean := OBJ = $(PROGBASE)/xobj
QPLIB		= $(PROJECT)/qplib
QPLIBSRC	= $(QPLIB)/src
#
# Defines for various processing flags.
#
QC		= $(BIN)/qc -Z
$(XTARGET)	:= QC		+= -X
SHELL		= /bin/sh

SOURCES = \
	$(SRC)/qp.ql
OBJECTS = \
	$(OBJ)/qp.qo

#
# Compile src/file.ql to obj/file.qo
#
$$(OBJ)/%.qo:: $(SRC)/%.ql
	cp $< /tmp/$*.ql
	$(QC) -o $@ -c /tmp/$*.ql
	$(RM) /tmp/$*.ql

$(TARGET): qplib $$(OBJECTS)
	$(QC) -o $(TARGET) $(OBJECTS)
	chmod 755 $(TARGET)
	chmod 644 $(TARGETSAVE)

xversion: $(XTARGET)

$(XTARGET): qplib $$(OBJECTS)
	$(QC) -o $(XTARGET) $(OBJECTS)
	chmod 755 $(XTARGET)
	chmod 644 $(XTARGETSAVE)

qplib:
	cd $(QPLIBSRC); $(MAKE)

$$(OBJECTS): $(QPLIBSRC)/escape.qs $(QPLIBSRC)/escape_inst.qs

clean:
	$(RM) $(OBJECTS)

xclean:
	$(RM) $(OBJECTS)

clobber: clean xclean
	$(RM) $(TARGET) $(TARGETSAVE) $(XTARGET) $(XTARGETSAVE)
