# This Makefile is used when building with gcj.  It is separate from
# the ordinary Makefile as it does special GNU-make-specific things,
# and this avoids making other builds unnecessarily ugly.

# A .list file is made by split-for-gcj.sh.
# It lists all the files in a given package.
all_list_files := $(shell echo lists/*.list)
# The corresponding stamp files.
# Each .class file depends on its package's stamp file.
# Each stamp file depends on the corresponding list file.
# Each list file depends on the java files in its package.
# This way touching a single java source will cause the minimum
# number of rebuilds.
all_stamp_files := $(all_list_files:.list=.stamp)
# The dependency file generated by gcj.
all_deps_files := $(all_list_files:.list=.deps)

all: $(all_stamp_files)

# Ensure this is rebuilt whenever the list of classes changes.
# The list will always exist when this Makefile is used.
Makefile.deps: classes
	$(SHELL) $(top_srcdir)/lib/split-for-gcj.sh

-include Makefile.deps $(all_deps_files)

## Like GCJ but include some common flags.
GCJF = $(GCJ) -Wno-deprecated --encoding=UTF-8 \
    --bootclasspath '' --classpath $(compile_classpath) \
    -C -d .

# Rule to rebuild a stamp file and update the deps file.  Note that we
# make the target be the stamp file.  This ensures that if a needed
# source is changed, this rule is re-run for the appropriate package.
%.stamp: %.list
	$(GCJF) -MD -MF ${@:.stamp=.deps} -MT $@ -MP @$<
	echo timestamp > $@
