Ken,

On 5/28/06, Ken Williams <[EMAIL PROTECTED]> wrote:
For at least GNU make, I think you should be able to change this:



java ::
        @$(MKPATH) Java/classes
        "$jdk/javac" -deprecation -g -d Java/classes Java/sources/org/perl/
inline/java/*.java
        "$jdk/jar" cf Java/InlineJavaServer.jar -C Java/classes org -C Java/
classes InlineJava.properties
        "$jdk/jar" cf Java/InlineJavaUser.jar -C Java/classes
InlineJavaUserClassLink.class


to this:


java :: Java/InlineJavaServer.jar Java/InlineJavaUser.jar

CLASS_FILES=$(patsubst Java/sources/%,Java/classes/%,$(wildcard Java/
sources/org/perl/inline/java/*.java))

Java/InlineJavaServer.jar: $(CLASS_FILES)
        "$jdk/jar" cf Java/InlineJavaServer.jar -C Java/classes org -C Java/
classes InlineJava.properties

Java/InlineJavaUser.jar: $(CLASS_FILES)
        "$jdk/jar" cf Java/InlineJavaUser.jar -C Java/classes
InlineJavaUserClassLink.class

Java/classes/%.class: Java/sources/%.java:
         @$(MKPATH) Java/classes
        "$jdk/javac" -deprecation -g -d Java/classes $<

pure_all :: java

Since you always need to compile all the Java files together, I
finally used a timestamp file like this:

JAVA_SRC=<Enumerate all .java files. Easy to do from Makefile.PL>

java.ts: $(JAVA_SRC)
   @$(MKPATH) $obj_dir
   "$javac" -deprecation -g -d $obj_dir $src
   "$jar" cf $server_arch -C $obj_dir org -C $obj_dir InlineJava.properties
   "$jar" cf $user_arch -C $obj_dir InlineJavaUserClassLink.class
   @$(TOUCH) java.ts

java :: java.ts


That seems to do the trick.

Thanks Artem and Ken for your help and suggestions,

Patrick


--
=====================
Patrick LeBoutillier
Laval, Québec, Canada

Reply via email to