# Makefile for Java Dependency Generator

PACKAGE = JavaDeps
VERSION = 1.1

CLASSDIR = .

JAVACC = javacc
JAVACOMPILE = javac -d $(CLASSDIR)

# Set the grammar file, classname, and any other classfiles (xxx.class) 
# needed
grammarFile = Java1.1.jj
grammarClass = Java
srcs := DepTable.java ParseOptions.java InvalidOptionException.java \
	JavaDeps.java ParameterEnumeration.java


# These are the files built by JavaCC from the grammar file
grammarSrcs := $(grammarClass).java $(grammarClass)Constants.java \
	       $(grammarClass)TokenManager.java

# Static stuff built by JavaCC
javaccSrcs := ASCII_UCodeESC_CharStream.java ParseException.java \
	Token.java TokenMgrError.java

# All built sources
builtSrcs := $(grammarSrcs) $(javaccSrcs)

# How to compile the grammar
grammarCompile := $(JAVACC)

# Files to distribute
distFiles = $(grammarFile) $(srcs) $(builtSrcs) jdeps.jar \
	BUGS COPYING Makefile ChangeLog .deps jdeps \
	doc/*.html doc/grammar-mods


.PHONY: deps doc clean
.SUFFIXES:

default: all
include .deps
all: jdeps.jar

.deps deps: $(builtSrcs)
	jdeps -d $(CLASSDIR) $(srcs) $(builtSrcs) > .deps

$(grammarSrcs): $(grammarFile)
	$(grammarCompile) $<

$(javaccSrcs):
	$(grammarCompile) $(grammarFile)

clean:
	rm -f $(builtSrcs) jdeps.jar $(CLASSES) *~ $(distdir)

mark_release:
	VERSION=$(VERSION) emacs -batch -l set-changelog-release.el
	for file in JavaDeps.java doc/welcome.html; do \
		sed 's/JavaDeps\(.*\)version [0-9.]*/JavaDeps\1version $(VERSION)/' \
			$$file > xxx && mv -f xxx $$file; \
	done
	cvs commit -m 'commit before tag'
	cvs tag release-`echo $(VERSION) | tr . -`

jdeps.jar: $(CLASSES) MANIFEST.MF
	jar cmf MANIFEST.MF jdeps.jar smr

tar: distdir
	tar chzf JavaDeps.tar.gz $(distdir)

zip: distdir
	zip -r -q JavaDeps.zip $(distdir)

archives: tar zip
	rm -rf $(distdir)

srcdir = .
distdir = $(PACKAGE)-$(VERSION)
distdir: $(distFiles)
	rm -rf $(distdir)
	mkdir -p $(distdir)/doc
	-chmod 755 $(distdir)
	@for file in $(distFiles); do \
		d=$(srcdir); \
		test -f $(distdir)/$$file \
		|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
		|| cp -p $$d/$$file $(distdir)/$$file; \
	done
	-chmod -R a+r $(distdir)

release: export

export: mark_release all export-docs archives export-source

export-source:
	mv -f JavaDeps.tar.gz JavaDeps.zip $(HOME)/www/software/JavaDeps

export-docs:
	weblint doc/*.html
	cp -a COPYING ChangeLog doc/*.html $(HOME)/www/software/JavaDeps

myinstall: jdeps.jar
#	install jdeps $(HOME)/bin
	install -m644 jdeps.jar $(HOME)/lib/classes
