| # 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 > $@ |