diff options
Diffstat (limited to 'libjava/classpath/lib/Makefile.gcj')
-rw-r--r-- | libjava/classpath/lib/Makefile.gcj | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/libjava/classpath/lib/Makefile.gcj b/libjava/classpath/lib/Makefile.gcj new file mode 100644 index 000000000..a7f3027ef --- /dev/null +++ b/libjava/classpath/lib/Makefile.gcj @@ -0,0 +1,37 @@ +# 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 > $@ |