TAG = R3_3_maintenance

cvsroot = :pserver:anonymous@dev.eclipse.org:/cvsroot/eclipse

destination = sources.redhat.com:\~ftp/pub/java

# We don't use dependencies since we want to let the user run steps in
# isolation.
all:
	$(MAKE) checkout
	$(MAKE) compile
	$(MAKE) ecj.jar ecj-source.tar.bz2

login:
	cvs -d $(cvsroot) login

checkout:
	cvs -d $(cvsroot) co -r$(TAG) org.eclipse.jdt.core

SOURCES = org org.eclipse.jdt.core/batch org.eclipse.jdt.core/compiler

OUTPUT = bin

ecj.jar:
	cd $(OUTPUT); jar cf ../ecj.jar .

ecj-source.tar.bz2:
	tar -jcf ecj-source.tar.bz2 --exclude '*~' \
		ChangeLog gcc.properties Makefile org org.eclipse.jdt.core

compile:
	@mkdir -p $(OUTPUT)
	find $(SOURCES) -name '*.java' > List
	ecj -d $(OUTPUT) -1.4 -nowarn -g @List
	here=`pwd`; for dir in $(SOURCES); do \
	  (cd $$dir; find . -name '*.properties' -o -name '*.rsc' | \
	   while read x; do \
	     echo "cp $$x $$here/$(OUTPUT)/$$x"; \
	     cp $$x $$here/$(OUTPUT)/$$x; \
	   done); \
	done
	cat gcc.properties >> $(OUTPUT)/org/eclipse/jdt/internal/compiler/batch/messages.properties
	mkdir -p $(OUTPUT)/META-INF
	cp org.eclipse.jdt.core/META-INF/MANIFEST.MF $(OUTPUT)/META-INF

# Once per GCC release you should upload an appropriate jar.
# Don't change these once the release is out.
# You could also upload a 'HEAD' release.
upload:
	@test -n "$(RELEASE)" || ( echo "You must set RELEASE"; exit 1)
	scp ecj.jar $(destination)/ecj-$(RELEASE).jar
	scp ecj-source.tar.bz2 $(destination)/ecj-$(RELEASE)-source.tar.bz2

.PHONY: all login checkout ecj.jar compile upload
