# Makefile for Micro Quixote.
# Copyright (C) 1993 ICOT
# Written by gniibe

CC = gcc
CFLAGS = -g -Wall -DDEBUG
# CC = cc
# CFLAGS = -O

INSTALL= install
BISON  = bison
BFLAGS = --defines --output-file=parse_t

OBJS = mq.o dot.o error.o exec.o internal.o subsump.o attr.o \
       lex.o parse_t.o print.o tree.o unify.o cs.o lookup.o \
       option.o subrel.o atom.o rule.o commands.o emit.o \
       cs-dot.o cs-sub.o cs-ext.o ext.o version.o

OBSTACK_OBJ = obstack.o

#####
prefix = /usr/local
bindir = ${prefix}/bin
libdir = ${prefix}/lib
libsubdir = ${libdir}/mq
manext = .1
mandir = ${prefix}/man/man1
tmpdir = /tmp

##############
all: mq

install: all
	${INSTALL} mq ${bindir}

tags:
	etags *.c *.h

clean:
	rm -f ${OBJS} ${OBSTACK_OBJ} \
		core parse_t.output

veryclean:
	rm -f ${OBJS} ${OBSTACK_OBJ} \
		core parse_t.output mq *~

##############
mq: ${OBJS} ${OBSTACK_OBJ}
	${CC} -o mq ${CFLAGS} ${OBJS} ${OBSTACK_OBJ}

parse_t.c: parse.y
	${BISON} ${BFLAGS} parse.y

parse_t.h: parse.y
	${BISON} ${BFLAGS} parse.y

parse_t.o: parse_t.c mq.h internal.h tree.h extern.h emit.h
obstack.o: obstack.c obstack.h


# Well, I don't like suffix rule...

lex.o: lex.c parse_t.h mq.h internal.h tree.h extern.h
dot.o: dot.c mq.h internal.h extern.h
error.o: error.c mq.h internal.h extern.h
exec.o: exec.c mq.h internal.h extern.h
internal.o: internal.c internal.h mq.h extern.h
subsump.o: subsump.c mq.h internal.h extern.h
mq.o: mq.c mq.h internal.h extern.h
tree.o: tree.c tree.h mq.h internal.h extern.h
unify.o: unify.c mq.h internal.h extern.h
cs.o: cs.c mq.h internal.h extern.h
cs-dot.o: cs-dot.c mq.h internal.h extern.h
cs-sub.o: cs-sub.c mq.h internal.h extern.h
cs-ext.o: cs-ext.c mq.h internal.h extern.h
lookup.o: lookup.c mq.h internal.h extern.h
option.o: option.c mq.h internal.h extern.h
subrel.o: subrel.c mq.h internal.h extern.h
atom.o: atom.c mq.h internal.h extern.h
rule.o: rule.c mq.h internal.h extern.h
emit.o: emit.c mq.h internal.h extern.h
commands.o: commands.c mq.h internal.h extern.h
attr.o: attr.c mq.h internal.h extern.h
print.o: print.c mq.h internal.h extern.h
version.o: version.c
ext.o: ext.c mq.h internal.h extern.h
