
# Type "make" to see a list of available targets and their descriptions.

# ------------------------------ Options --------------------------------

# Variables in this section should be changed to reflect the current
# system and release.

# Specify here the version of BTools being released:

BTOOLS_VERSION = 1.1

# Specify here the commands with options used for running various tools.
#
# TOUCH: Create a new empty file with the given name.
# ARCHIVE: Build an archive using $(ARCHIVE) <archive file> <files to include>

TOUCH = touch
ARCHIVE = tar -zcf

# ------------------------------ Variables ------------------------------

include ../Makefile.options
include ../Makefile.sources

BTOOLS_DIR = btools-$(BTOOLS_VERSION)

SRC_JAR = btools-$(BTOOLS_VERSION)_src.jar
SRC_ARCHIVE = btools-$(BTOOLS_VERSION)_src.tgz
BIN_JAR = btools-$(BTOOLS_VERSION).jar
DOC_JAR = btools-$(BTOOLS_VERSION)_doc.jar
DOC_ARCHIVE = btools-$(BTOOLS_VERSION)_doc.tgz

DOC_OVERVIEW = overview.html
LICENSE = LICENSE.txt

empty_dirs = docs
sentries = $(empty_dirs:%=%/.keepme)
debian_src_mask = debian/changelog debian/control debian/copyright \
	debian/*.README.Debian debian/*.doc-base debian/*.docs debian/*.files \
	debian/rules debian/cvs.patch debian/README.Packaging
misc_src_mask = Makefile* *.txt www/*.html $(sentries) $(debian_src_mask)
dist_mask = Makefile* *.txt *.cpp insertstubreplace replacetabs stub

raw_package_dirs = $(subst .,/,$(packages))
package_java_mask = $(raw_package_dirs:%=%/*.java)
doc_sources = $(raw_package_dirs:%=%/package.html) $(DOC_OVERVIEW)

# ------------------------------ Targets --------------------------------

help :
	@cat Makefile-help

.PHONY : distsrc distbin distdocs dist stubs tabs clean purge help

distsrc : $(SRC_JAR) $(SRC_ARCHIVE)
$(SRC_JAR):
	-rm $(BTOOLS_DIR)
	ln -s .. $(BTOOLS_DIR)
	$(JAR) -cf $(SRC_JAR) $(patsubst %,$(BTOOLS_DIR)/%, \
		$(package_java_mask) $(doc_sources) $(aux_mask) $(misc_src_mask) \
		$(dist_mask:%=dist/%))
	-rm $(BTOOLS_DIR)
$(SRC_ARCHIVE):
	-rm $(BTOOLS_DIR)
	ln -s .. $(BTOOLS_DIR)
	$(ARCHIVE) $(SRC_ARCHIVE) $(patsubst %,$(BTOOLS_DIR)/%, \
		$(package_java_mask) $(doc_sources) $(aux_mask) $(misc_src_mask) \
		$(dist_mask:%=dist/%))
	-rm $(BTOOLS_DIR)

distbin : $(BIN_JAR)
$(BIN_JAR) :
	cd .. && $(MAKE) jar
	cp ../$(RUNTIME_JAR) $(BIN_JAR)

distdocs : $(DOC_JAR) $(DOC_ARCHIVE)
$(DOC_JAR):
	cd .. && $(MAKE) docs
	-rm $(BTOOLS_DIR)
	ln -s .. $(BTOOLS_DIR)
	$(JAR) -cf $(DOC_JAR) $(doc_mask:%=$(BTOOLS_DIR)/$(DOCS_DIR)/%) \
		$(BTOOLS_DIR)/$(LICENSE)
	-rm $(BTOOLS_DIR)
$(DOC_ARCHIVE):
	cd .. && $(MAKE) docs
	-rm $(BTOOLS_DIR)
	ln -s .. $(BTOOLS_DIR)
	$(ARCHIVE) $(DOC_ARCHIVE) $(doc_mask:%=$(BTOOLS_DIR)/$(DOCS_DIR)/%) \
		$(BTOOLS_DIR)/$(LICENSE)
	-rm $(BTOOLS_DIR)

dist : distsrc distbin distdocs

stubs : insertstub
	./insertstubreplace "/* end stub */" stub `find ../org -name "*.java"`
tabs :
	./replacetabs `find ../org -name "*.java"` \
		../CHANGES.txt ../README.txt \
		*.txt *.cpp

clean :
	cd .. && $(MAKE) clean
	-rm insertstub
	-rm $(BTOOLS_DIR)

purge : clean
	cd .. && $(MAKE) purge
	-rm $(SRC_JAR) $(SRC_ARCHIVE) $(BIN_JAR) $(DOC_JAR) $(DOC_ARCHIVE)
