# 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) -fsource=1.5 -ftarget=1.5 -g -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 > $@