From 98038e9282b0282826c6c75bfc73d965237cedc6 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Wed, 12 Nov 2008 17:08:09 +0000
Subject: [PATCH]     * Build files:       - Use the depend task with caching
 for more accurate dependencies       - Make sure the routerconsole gets the
 latest router version       - Fix addressbook repeated builds

---
 apps/addressbook/build.xml        | 23 ++++++++++++++++++++---
 apps/i2psnark/java/build.xml      | 17 ++++++++++++++++-
 apps/i2ptunnel/java/build.xml     | 14 +++++++++++++-
 apps/ministreaming/java/build.xml | 13 ++++++++++++-
 apps/routerconsole/java/build.xml | 27 ++++++++++++++++++++++++++-
 apps/sam/java/build.xml           | 14 +++++++++++++-
 apps/streaming/java/build.xml     | 14 +++++++++++++-
 core/java/build.xml               |  9 ++++++++-
 router/java/build.xml             | 13 ++++++++++++-
 9 files changed, 133 insertions(+), 11 deletions(-)

diff --git a/apps/addressbook/build.xml b/apps/addressbook/build.xml
index 5b22cd200e..c4b214feb7 100644
--- a/apps/addressbook/build.xml
+++ b/apps/addressbook/build.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <project name="addressbook" default="war" basedir=".">
 
-	<property name="src" value="java/src/addressbook"/>
+	<property name="src" value="java/src"/>
 	<property name="build" value="build"/>
 	<property name="dist"  location="dist"/>
 	<property name="jar" value="addressbook.jar"/>
@@ -19,7 +19,20 @@
 
 	<target name="distclean" depends="clean" />
 
-	<target name="compile" depends="init">
+        <target name="depend">
+            <depend
+                cache="../../build"
+                srcdir="${src}"
+                destdir="${build}" >
+                <!-- Depend on classes instead of jars where available -->
+                <classpath>
+                    <pathelement location="../../core/java/build/obj" />
+                    <pathelement location="../jetty/jettylib/javax.servlet.jar" />
+                </classpath>
+            </depend>
+        </target>
+
+	<target name="compile" depends="init, depend">
 		<javac debug="true" deprecation="on" source="1.5" target="1.5" 
                        srcdir="${src}" destdir="${build}">
             <classpath>
@@ -37,7 +50,7 @@
 		</jar>
 	</target>
 	
-	<target name="war" depends="compile">
+	<target name="war" depends="compile" unless="war.uptodate">
 		<mkdir dir="${dist}/tmp"/>
 		<mkdir dir="${dist}/tmp/WEB-INF"/>
 		<mkdir dir="${dist}/tmp/WEB-INF/classes"/>
@@ -48,4 +61,8 @@
 		<delete dir="${dist}/tmp"/>
 	</target>
 	
+        <uptodate property="war.uptodate" targetfile="${dist}/${war}">
+            <srcfiles dir= "." includes="${build}/**/*.class, web.xml"/>
+        </uptodate>
+
 </project>
diff --git a/apps/i2psnark/java/build.xml b/apps/i2psnark/java/build.xml
index 548e129aeb..0a882af6d2 100644
--- a/apps/i2psnark/java/build.xml
+++ b/apps/i2psnark/java/build.xml
@@ -7,7 +7,22 @@
         <ant dir="../../streaming/java/" target="build" />
 	<!-- streaming will build ministreaming and core -->
     </target>
-    <target name="compile">
+    <target name="depend">
+        <depend
+            cache="../../../build"
+            srcdir="./src" 
+            destdir="./build/obj" >
+            <!-- Depend on classes instead of jars where available -->
+            <classpath>
+                <pathelement location="../../../core/java/build/obj" />
+                <pathelement location="../../../router/java/build/obj" />
+                <pathelement location="../../ministreaming/java/build/obj" />
+                <pathelement location="../../jetty/jettylib/org.mortbay.jetty.jar" />
+                <pathelement location="../../jetty/jettylib/javax.servlet.jar" />
+            </classpath>
+        </depend>
+    </target>
+    <target name="compile" depends="depend">
         <mkdir dir="./build" />
         <mkdir dir="./build/obj" />
         <javac 
diff --git a/apps/i2ptunnel/java/build.xml b/apps/i2ptunnel/java/build.xml
index 4221d6eff9..6db84dbf34 100644
--- a/apps/i2ptunnel/java/build.xml
+++ b/apps/i2ptunnel/java/build.xml
@@ -7,7 +7,19 @@
         <ant dir="../../jetty/" target="build" />
 	<!-- ministreaming will build core -->
     </target>
-    <target name="compile">
+    <target name="depend">
+        <depend
+            cache="../../../build"
+            srcdir="./src" 
+            destdir="./build/obj" >
+            <!-- Depend on classes instead of jars where available -->
+            <classpath>
+                <pathelement location="../../../core/java/build/obj" />
+                <pathelement location="../../ministreaming/java/build/obj" />
+            </classpath>
+        </depend>
+    </target>
+    <target name="compile" depends="depend">
         <mkdir dir="./build" />
         <mkdir dir="./build/obj" />
         <javac 
diff --git a/apps/ministreaming/java/build.xml b/apps/ministreaming/java/build.xml
index 321ebf2c8c..72a65d89c5 100644
--- a/apps/ministreaming/java/build.xml
+++ b/apps/ministreaming/java/build.xml
@@ -5,7 +5,18 @@
     <target name="builddep">
         <ant dir="../../../core/java/" target="build" />
     </target>
-    <target name="compile">
+    <target name="depend">
+        <depend
+            cache="../../../build"
+            srcdir="./src" 
+            destdir="./build/obj" >
+            <!-- Depend on classes instead of jars where available -->
+            <classpath>
+                <pathelement location="../../../core/java/build/obj" />
+            </classpath>
+        </depend>
+    </target>
+    <target name="compile" depends="depend">
         <mkdir dir="./build" />
         <mkdir dir="./build/obj" />
         <javac srcdir="./src" debug="true" deprecation="on" source="1.5" target="1.5" destdir="./build/obj" classpath="../../../core/java/build/i2p.jar" />
diff --git a/apps/routerconsole/java/build.xml b/apps/routerconsole/java/build.xml
index e263d4ca63..cea75a248c 100644
--- a/apps/routerconsole/java/build.xml
+++ b/apps/routerconsole/java/build.xml
@@ -10,7 +10,32 @@
     <target name="prepare">
         <ant dir="../../jetty/" target="build" />
     </target>
-    <target name="compile" depends="prepare">
+    <target name="depend">
+        <depend
+            cache="../../../build"
+            srcdir="./src" 
+            destdir="./build/obj" >
+            <!-- Depend on classes instead of jars where available -->
+            <classpath>
+                <pathelement location="../../../core/java/build/obj" />
+                <pathelement location="../../../router/java/build/obj" />
+                <pathelement location="../../jetty/jettylib/org.mortbay.jetty.jar" />
+                <pathelement location="../../jetty/jettylib/javax.servlet.jar" />
+                <pathelement location="../../systray/java/build/obj" />
+                <pathelement location="../../systray/java/lib/systray4j.jar" />
+                <pathelement location="../../../installer/lib/wrapper/win32/wrapper.jar" /> <!-- we dont care if we're not on win32 -->
+                <pathelement location="../../jrobin/jrobin-1.4.0.jar" />
+            </classpath>
+        </depend>
+        <!-- Force the dependency on the RouterVersion as depend doesn't recognize constant changes  -->
+        <dependset>
+             <srcfilelist dir="." files="../../../router/java/build/obj/net/i2p/router/RouterVersion.class" />
+             <targetfilelist dir="." files="build/obj/net/i2p/router/web/NewsFetcher.class" />
+             <targetfilelist dir="." files="build/obj/net/i2p/router/web/SummaryHelper.class" />
+             <targetfilelist dir="." files="build/obj/net/i2p/router/web/UpdateHandler.class" />
+        </dependset>
+    </target>
+    <target name="compile" depends="prepare, depend">
         <mkdir dir="./build" />
         <mkdir dir="./build/obj" />
         <javac 
diff --git a/apps/sam/java/build.xml b/apps/sam/java/build.xml
index aa11115227..c0eab67a35 100644
--- a/apps/sam/java/build.xml
+++ b/apps/sam/java/build.xml
@@ -6,7 +6,19 @@
         <ant dir="../../ministreaming/java/" target="build" />
 	<!-- ministreaming will build core -->
     </target>
-    <target name="compile">
+    <target name="depend">
+        <depend
+            cache="../../../build"
+            srcdir="./src" 
+            destdir="./build/obj" >
+            <!-- Depend on classes instead of jars where available -->
+            <classpath>
+                <pathelement location="../../../core/java/build/obj" />
+                <pathelement location="../../ministreaming/java/build/obj" />
+            </classpath>
+        </depend>
+    </target>
+    <target name="compile" depends="depend">
         <mkdir dir="./build" />
         <mkdir dir="./build/obj" />
         <javac 
diff --git a/apps/streaming/java/build.xml b/apps/streaming/java/build.xml
index bc02e8876f..5c79f97cc8 100644
--- a/apps/streaming/java/build.xml
+++ b/apps/streaming/java/build.xml
@@ -6,7 +6,19 @@
         <ant dir="../../ministreaming/java/" target="build" />
 	<!-- ministreaming will build core -->
     </target>
-    <target name="compile">
+    <target name="depend">
+        <depend
+            cache="../../../build"
+            srcdir="./src" 
+            destdir="./build/obj" >
+            <!-- Depend on classes instead of jars where available -->
+            <classpath>
+                <pathelement location="../../../core/java/build/obj" />
+                <pathelement location="../../ministreaming/java/build/obj" />
+            </classpath>
+        </depend>
+    </target>
+    <target name="compile" depends="depend">
         <mkdir dir="./build" />
         <mkdir dir="./build/obj" />
         <javac 
diff --git a/core/java/build.xml b/core/java/build.xml
index d568db3412..24b7a77bcd 100644
--- a/core/java/build.xml
+++ b/core/java/build.xml
@@ -5,7 +5,14 @@
     <target name="builddep">
         <!-- noop, since the core doesnt depend on anything -->
     </target>
-    <target name="compile">
+    <target name="depend">
+        <depend
+            cache="../../build"
+            srcdir="./src" 
+            destdir="./build/obj" >
+        </depend>
+    </target>
+    <target name="compile" depends="depend">
         <mkdir dir="./build" />
         <mkdir dir="./build/obj" />
         <javac srcdir="./src" debug="true" source="1.5" target="1.5" deprecation="on" destdir="./build/obj" />
diff --git a/router/java/build.xml b/router/java/build.xml
index 0e0df9f62f..b6c9281aa4 100644
--- a/router/java/build.xml
+++ b/router/java/build.xml
@@ -8,7 +8,18 @@
     <target name="builddeptest">
         <ant dir="../../core/java/" target="jarTest" />
     </target>
-    <target name="compile">
+    <target name="depend">
+        <depend
+            cache="../../build"
+            srcdir="./src" 
+            destdir="./build/obj" >
+            <!-- Depend on classes instead of jars where available -->
+            <classpath>
+                <pathelement location="../../core/java/build/obj" />
+            </classpath>
+        </depend>
+    </target>
+    <target name="compile" depends="depend">
         <mkdir dir="./build" />
         <mkdir dir="./build/obj" />
         <javac srcdir="./src" debug="true" source="1.5" target="1.5" deprecation="on" destdir="./build/obj" classpath="../../core/java/build/i2p.jar" />
-- 
GitLab