Dear help-make audience,
I have a rudimentary dependency support for Java files using
autoconf, automake and jikes. Jikes (+M) creates .u files with simple
dependency rules for each class file. My problem is that when modifying a
source file and immediately issuing a make invocation compiles some of the
files multiple times. By reading makes output with -d it seems like the
system resolution for file timestamps is so large that even if the file is
actually newer make is unable to determine this and instead recompiles.
Output from a make session:
Finished prerequisites of target file `Bar.class'.
Prerequisite `Bar.java' is newer than target `Bar.class'.
Prerequisite `/fs/home/kpbackma/work/template/template/Bar.java' is \
newer than target `Bar.class'.
Must remake target `Bar.class'.
jikes +M -classpath /fs/home/kpbackma/work/template:$JIKESPATH -d \
/fs/home/kpbackma/work/template +E +P Bar.java
...
Successfully remade target file `Bar.class'.
...
Prerequisite `/fs/home/kpbackma/work/template/template/Bar.java' \
is newer than target `/fs/home/kpbackma/work/template/template/Bar.class'.
Must remake target \
`/fs/home/kpbackma/work/template/template/Bar.class'.
jikes +M -classpath /fs/home/kpbackma/work/template:$JIKESPATH -d \
/fs/home/kpbackma/work/template +E +P
/fs/home/kpbackma/work/template/template/Bar.java \
...
Successfully remade target file \
`/fs/home/kpbackma/work/template/template/Bar.class'.
The different references are because Jikes outputs full path.
Yours sincerely,
Kai-Peter Baeckman