# $Id: GNUmakefile,v 1.15 2000/08/30 22:18:56 peteg Exp $

# Compiler options, etc.
include GNUmakefile.defs

# Lists of files
PACKAGES := prolog prolog.lib prolog.math prolog.util gnu.getopt
S_PACKAGES := $(subst .,/,$(PACKAGES))

SOURCES := $(shell find $(S_PACKAGES) -name "*.java")

LEXERSRC := prolog/prolog.lex
LEXER    := prolog/Yylex.java

# Targets
prolog: $(LEXER) FORCE
	$(JAVAC) $(JFLAGS) $(SOURCES)

interactive: $(LEXER) FORCE
ifeq ($(JAVAC),jikes)
	$(JAVAC) $(JFLAGS) $(JIFLAGS) $(SOURCES)
else
	$(JAVAC) $(JFLAGS) $(SOURCES)
endif

all: prolog botworld glog

dist: distclean jar doc targz
	cd botworld && $(MAKE) dist
	cd glog && $(MAKE) dist

jar: prolog
	$(JAR) cfv $(PROLOG_JARFILE) `find $(S_PACKAGES) -name "*.class"`

doc: FORCE
	rm -f docs/*.html
	$(JAVADOC) -package -d doc $(PACKAGES)

tests: prolog
	./tests/test.pl -a

targz:
	(cd .. && rm -f prolog.tar.gz && tar cf - prolog | gzip > prolog.tar.gz)

$(LEXER): $(LEXERSRC)
	rm -f $(LEXER)
	$(JFLEX) $(LEXERSRC)

botworld: jar FORCE
	cd botworld && $(MAKE)

glog: jar FORCE
	cd glog && $(MAKE)

FORCE:

clean:
	rm -f `find . -name "*.class"` \
		$(PROLOG_JARFILE) \
		tests/*.stderr tests/*.stdout tests/*.diff

distclean: clean
	rm -f $(LEXER) docs/*.html
