#
# Makefile for "project"
#
# Define the position of the top-level project directory, and supporing
# software.
#
PROJECT		= /homes/qp/qp3.2
CC		= acc
PROLOG		= prolog
#
# Destination for installation.
#
INSTALLDIR	= /tmp/qp
#
# Defines for various useful project directories.  These
# shouldn't need changing.
#
QC1		= $(PROJECT)/qc1.sics
LIB		= $(PROJECT)/lib
QA		= $(PROJECT)/qa
QL		= $(PROJECT)/ql
QEM		= $(PROJECT)/qem
QPLIB		= $(PROJECT)/qplib
QP		= $(PROJECT)/qp
QC1SRC		= $(QC1)/src
LIBSRC		= $(LIB)/src
QASRC		= $(QA)/src
QLSRC		= $(QL)/src
QEMSRC		= $(QEM)/src
QPLIBSRC	= $(QPLIB)/src
QPSRC		= $(QP)/src
MAKEMACROS	= PROJECT=$(PROJECT) CC=$(CC) SICSTUS=$(PROLOG)

#
# Create all the necessary programs for Qu-Prolog.
#
compile: Qem Lib Qa Ql Qc1 Qplib Qp

Qc1:
	cd $(QC1SRC);		$(MAKE) $(MAKEMACROS)

Lib:
	cd $(LIBSRC);		$(MAKE) $(MAKEMACROS)

Qa:
	cd $(QASRC);		$(MAKE) $(MAKEMACROS)

Ql:
	cd $(QLSRC);		$(MAKE) $(MAKEMACROS)

Qem:
	cd $(QEMSRC);		$(MAKE) $(MAKEMACROS)

Qplib:
	cd $(QPLIBSRC);		$(MAKE) $(MAKEMACROS)

Qp:
	cd $(QPSRC);		$(MAKE) $(MAKEMACROS)

#
# Install the system.
#
install: compile
	[ -d "$(INSTALLDIR)" ] || mkdir $(INSTALLDIR)
	[ -d "$(INSTALLDIR)/lib" ] || mkdir $(INSTALLDIR)/lib
	cp bin/* $(INSTALLDIR)
	cp qplib/obj/* $(INSTALLDIR)/lib
	sed -e "s|^project=.*$$|project=$(INSTALLDIR)|" \
	    -e "s|^qolib=.*$$|qolib=$(INSTALLDIR)/lib|" \
			< bin/qc > $(INSTALLDIR)/qc
	sed -e "s|^.*qem|$(INSTALLDIR)/qem|" \
	    -e "s|Q.*qp.qx|Q $(INSTALLDIR)/qp.qx|" \
			< bin/qp > $(INSTALLDIR)/qp

#
# Create all the necessary programs for X version of Qu-Prolog.
#
# xcompile: XQem Lib Qa Ql Qc1 Qplib XQp
# 
# XQem:
# 	cd $(QEMSRC);		$(MAKE) xversion $(MAKEMACROS)
# 
# XQp:
# 	cd $(QPSRC);		$(MAKE) xversion $(MAKEMACROS)
# 

#
# Auxiliary maintenance functions.
#

#
# C programs only.
#
strip:
	cd $(QASRC);		$(MAKE) $@
	cd $(QLSRC);		$(MAKE) $@
	cd $(QEMSRC);		$(MAKE) $@

#
# C programs and libraries only.
#
lint depend:
	cd $(LIBSRC);		$(MAKE) $@
	cd $(QASRC);		$(MAKE) $@
	cd $(QLSRC);		$(MAKE) $@
	cd $(QEMSRC);		$(MAKE) $@

#
# All programs and libraries.
#
clean clobber:
	cd $(QC1SRC);		$(MAKE) $@
	cd $(LIBSRC);		$(MAKE) $@
	cd $(QASRC);		$(MAKE) $@
	cd $(QLSRC);		$(MAKE) $@
	cd $(QEMSRC);		$(MAKE) $@
	cd $(QPLIBSRC);		$(MAKE) $@
	cd $(QPSRC);		$(MAKE) $@

#
# X version only.
#
# xclean:
# 	cd $(QEMSRC);		$(MAKE) $@
# 	cd $(QPSRC);		$(MAKE) $@
