From 941d3e60ce79c75d9d0aa639b95f6fd9fadefd87 Mon Sep 17 00:00:00 2001
From: "Ryan R. LaMothe" <Ryan.LaMothe@pnnl.gov>
Date: Sat, 27 Sep 2014 13:08:23 -0700
Subject: [PATCH] Refactored build script to support CPU and GPU execution of
 all project build targets.

---
 samples/extension/build.xml | 139 ++++++++++++++++++++++++++++++------
 samples/info/build.xml      |  61 ++++++++++++----
 samples/life/build.xml      |  77 ++++++++++++++++----
 samples/mandel/build.xml    |  93 ++++++++++++++++++++----
 4 files changed, 308 insertions(+), 62 deletions(-)

diff --git a/samples/extension/build.xml b/samples/extension/build.xml
index a89c798f..11e67810 100644
--- a/samples/extension/build.xml
+++ b/samples/extension/build.xml
@@ -1,26 +1,125 @@
 <?xml version="1.0"?>
 
 <project name="extension" default="build" basedir=".">
-   <target name="build" depends="clean">
-      <mkdir dir="classes"/>
-      <javac srcdir="src" destdir="classes" debug="on" includeantruntime="false" >
-         <classpath>
-            <pathelement path="../../com.amd.aparapi/dist/aparapi.jar"/>
-         </classpath>
-      </javac>
-      <copy todir="classes/com\amd\aparapi\sample\extension" file="src\com\amd\aparapi\sample\extension\mandel.cl"/>
-      <copy todir="classes/com\amd\aparapi\sample\extension" file="src\com\amd\aparapi\sample\extension\mandel2.cl"/>
-      <copy todir="classes/com\amd\aparapi\sample\extension" file="src\com\amd\aparapi\sample\extension\squarer.cl"/>
-      <copy todir="classes/com\amd\aparapi\sample\extension" file="src\com\amd\aparapi\sample\extension\squarer.cl"/>
-      <copy todir="classes/com\amd\aparapi\sample\extension" file="src\com\amd\aparapi\sample\extension\HistogramKernel.cl"/>
-      <jar jarfile="${ant.project.name}.jar" basedir="classes"/>
-
-   </target>
-
-   <target name="clean">
-      <delete dir="classes"/>
-      <delete file="${ant.project.name}.jar"/>
-   </target>
 
+	<!-- Ideally this would be the latest version of Java but not everyone is going to have it installed -->
+	<!-- Additionally we want to avoid "Class not found: javac1.8" errors from old Ant versions (i.e. Eclipse) -->
+	<property name="build.compiler" value="javac1.7" />
+	<property name="ant.build.javac.source" value="1.7" />
+	<property name="ant.build.javac.target" value="1.7" />
+
+	<target name="build" depends="clean">
+		<mkdir dir="classes" />
+		<javac srcdir="src" destdir="classes" debug="on" includeantruntime="false">
+			<classpath>
+				<pathelement path="../../com.amd.aparapi/dist/aparapi.jar" />
+			</classpath>
+		</javac>
+		<copy todir="classes/com\amd\aparapi\sample\extension" file="src\com\amd\aparapi\sample\extension\mandel.cl" />
+		<copy todir="classes/com\amd\aparapi\sample\extension" file="src\com\amd\aparapi\sample\extension\mandel2.cl" />
+		<copy todir="classes/com\amd\aparapi\sample\extension" file="src\com\amd\aparapi\sample\extension\squarer.cl" />
+		<copy todir="classes/com\amd\aparapi\sample\extension" file="src\com\amd\aparapi\sample\extension\squarer.cl" />
+		<copy todir="classes/com\amd\aparapi\sample\extension" file="src\com\amd\aparapi\sample\extension\HistogramKernel.cl" />
+		<jar jarfile="${ant.project.name}.jar" basedir="classes" />
+
+	</target>
+
+	<target name="clean">
+		<delete dir="classes" />
+		<delete file="${ant.project.name}.jar" />
+	</target>
+
+	<path id="compiler.class.path">
+		<pathelement path="../../com.amd.aparapi/dist/aparapi.jar" />
+	</path>
+
+	<path id="runtime.class.path" cache="true">
+		<path refid="compiler.class.path" />
+		<pathelement path="${ant.project.name}.jar" />
+	</path>
+
+	<!-- FFT -->
+	<target name="run-fft-gpu">
+		<java classname="com.amd.aparapi.sample.extension.FFTExample" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="GPU" />
+		</java>
+	</target>
+
+	<target name="run-fft-jtp">
+		<java classname="com.amd.aparapi.sample.extension.FFTExample" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="JTP" />
+		</java>
+	</target>
+
+	<!-- Histogram -->
+	<target name="run-histogram-gpu">
+		<java classname="com.amd.aparapi.sample.extension.Histogram" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="GPU" />
+		</java>
+	</target>
+
+	<target name="run-histogram-jtp">
+		<java classname="com.amd.aparapi.sample.extension.Histogram" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="JTP" />
+		</java>
+	</target>
+
+	<target name="run-histogram-ideal-gpu">
+		<java classname="com.amd.aparapi.sample.extension.HistogramIdeal" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="GPU" />
+		</java>
+	</target>
+
+	<target name="run-histogram-ideal-jtp">
+		<java classname="com.amd.aparapi.sample.extension.HistogramIdeal" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="JTP" />
+		</java>
+	</target>
+
+	<!-- Mandel -->
+	<target name="run-mandel-gpu">
+		<java classname="com.amd.aparapi.sample.extension.MandelExample" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="GPU" />
+		</java>
+	</target>
+
+	<target name="run-mandel-jtp">
+		<java classname="com.amd.aparapi.sample.extension.MandelExample" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="JTP" />
+		</java>
+	</target>
+
+	<!-- Square -->
+	<target name="run-square-gpu">
+		<java classname="com.amd.aparapi.sample.extension.SquareExample" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="GPU" />
+		</java>
+	</target>
+
+	<target name="run-square-jtp">
+		<java classname="com.amd.aparapi.sample.extension.SquareExample" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="JTP" />
+		</java>
+	</target>
 
 </project>
diff --git a/samples/info/build.xml b/samples/info/build.xml
index 5f74b5da..8c984086 100644
--- a/samples/info/build.xml
+++ b/samples/info/build.xml
@@ -1,20 +1,53 @@
 <?xml version="1.0"?>
 
 <project name="info" default="build" basedir=".">
-   <target name="build" depends="clean">
-      <mkdir dir="classes"/>
-      <javac srcdir="src" destdir="classes" debug="on" includeantruntime="false" >
-         <classpath>
-            <pathelement path="../../com.amd.aparapi/dist/aparapi.jar"/>
-         </classpath>
-      </javac>
-      <jar jarfile="${ant.project.name}.jar" basedir="classes"/>
-   </target>
-
-   <target name="clean">
-      <delete dir="classes"/>
-      <delete file="${ant.project.name}.jar"/>
-   </target>
 
+	<!-- Ideally this would be the latest version of Java but not everyone is going to have it installed -->
+	<!-- Additionally we want to avoid "Class not found: javac1.8" errors from old Ant versions (i.e. Eclipse) -->
+	<property name="build.compiler" value="javac1.7" />
+	<property name="ant.build.javac.source" value="1.7" />
+	<property name="ant.build.javac.target" value="1.7" />
+
+	<path id="compiler.class.path">
+		<pathelement path="../../com.amd.aparapi/dist/aparapi.jar" />
+	</path>
+
+	<path id="runtime.class.path" cache="true">
+		<path refid="compiler.class.path" />
+		<pathelement path="${ant.project.name}.jar" />
+	</path>
+
+	<target name="build" depends="clean">
+		<mkdir dir="classes" />
+		<javac srcdir="src" destdir="classes" debug="on" includeantruntime="false">
+			<classpath>
+				<pathelement path="../../com.amd.aparapi/dist/aparapi.jar" />
+			</classpath>
+		</javac>
+		<jar jarfile="${ant.project.name}.jar" basedir="classes" />
+	</target>
+
+	<target name="clean">
+		<delete dir="classes" />
+		<delete file="${ant.project.name}.jar" />
+	</target>
+
+	<target name="run-gpu">
+		<java classname="com.amd.aparapi.sample.info.Main" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="GPU" />
+		</java>
+	</target>
+
+	<target name="run-jtp">
+		<java classname="com.amd.aparapi.sample.info.Main" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="JTP" />
+		</java>
+	</target>
+
+	<target name="run" depends="run-gpu" />
 
 </project>
diff --git a/samples/life/build.xml b/samples/life/build.xml
index a64631df..55694d1e 100644
--- a/samples/life/build.xml
+++ b/samples/life/build.xml
@@ -1,20 +1,69 @@
 <?xml version="1.0"?>
 
 <project name="life" default="build" basedir=".">
-   <target name="build" depends="clean">
-      <mkdir dir="classes"/>
-      <javac srcdir="src" destdir="classes" debug="on" includeantruntime="false" >
-         <classpath>
-            <pathelement path="../../com.amd.aparapi/dist/aparapi.jar"/>
-         </classpath>
-      </javac>
-      <jar jarfile="${ant.project.name}.jar" basedir="classes"/>
-   </target>
-
-   <target name="clean">
-      <delete dir="classes"/>
-      <delete file="${ant.project.name}.jar"/>
-   </target>
 
+	<!-- Ideally this would be the latest version of Java but not everyone is going to have it installed -->
+	<!-- Additionally we want to avoid "Class not found: javac1.8" errors from old Ant versions (i.e. Eclipse) -->
+	<property name="build.compiler" value="javac1.7" />
+	<property name="ant.build.javac.source" value="1.7" />
+	<property name="ant.build.javac.target" value="1.7" />
+
+	<path id="compiler.class.path">
+		<pathelement path="../../com.amd.aparapi/dist/aparapi.jar" />
+	</path>
+
+	<path id="runtime.class.path" cache="true">
+		<path refid="compiler.class.path" />
+		<pathelement path="${ant.project.name}.jar" />
+	</path>
+
+	<target name="build" depends="clean">
+		<mkdir dir="classes" />
+		<javac srcdir="src" destdir="classes" debug="on" includeantruntime="false">
+			<classpath>
+				<pathelement path="../../com.amd.aparapi/dist/aparapi.jar" />
+			</classpath>
+		</javac>
+		<jar jarfile="${ant.project.name}.jar" basedir="classes" />
+	</target>
+
+	<target name="clean">
+		<delete dir="classes" />
+		<delete file="${ant.project.name}.jar" />
+	</target>
+
+	<target name="run-life-gpu">
+		<java classname="com.amd.aparapi.sample.life.Main" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="GPU" />
+		</java>
+	</target>
+
+	<target name="run-life-jtp">
+		<java classname="com.amd.aparapi.sample.life.Main" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="JTP" />
+		</java>
+	</target>
+
+	<target name="run-agent-gpu">
+		<java classname="com.amd.aparapi.sample.life.Main" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="GPU" />
+			<sysproperty key="com.amd.aparapi.useAgent" value="true" />
+		</java>
+	</target>
+
+	<target name="run-agent-jtp">
+		<java classname="com.amd.aparapi.sample.life.Main" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="JTP" />
+			<sysproperty key="com.amd.aparapi.useAgent" value="true" />
+		</java>
+	</target>
 
 </project>
diff --git a/samples/mandel/build.xml b/samples/mandel/build.xml
index 046dfb00..32fdfde1 100644
--- a/samples/mandel/build.xml
+++ b/samples/mandel/build.xml
@@ -1,20 +1,85 @@
 <?xml version="1.0"?>
 
 <project name="mandel" default="build" basedir=".">
-   <target name="build" depends="clean">
-      <mkdir dir="classes"/>
-      <javac srcdir="src" destdir="classes" debug="on" includeantruntime="false" >
-         <classpath>
-            <pathelement path="../../com.amd.aparapi/dist/aparapi.jar"/>
-         </classpath>
-      </javac>
-      <jar jarfile="${ant.project.name}.jar" basedir="classes"/>
-   </target>
-
-   <target name="clean">
-      <delete dir="classes"/>
-      <delete file="${ant.project.name}.jar"/>
-   </target>
 
+	<!-- Ideally this would be the latest version of Java but not everyone is going to have it installed -->
+	<!-- Additionally we want to avoid "Class not found: javac1.8" errors from old Ant versions (i.e. Eclipse) -->
+	<property name="build.compiler" value="javac1.7" />
+	<property name="ant.build.javac.source" value="1.7" />
+	<property name="ant.build.javac.target" value="1.7" />
+
+	<path id="compiler.class.path">
+		<pathelement path="../../com.amd.aparapi/dist/aparapi.jar" />
+	</path>
+
+	<path id="runtime.class.path" cache="true">
+		<path refid="compiler.class.path" />
+		<pathelement path="${ant.project.name}.jar" />
+	</path>
+
+	<target name="build" depends="clean">
+		<mkdir dir="classes" />
+		<javac srcdir="src" destdir="classes" debug="on" includeantruntime="false">
+			<classpath>
+				<pathelement path="../../com.amd.aparapi/dist/aparapi.jar" />
+			</classpath>
+		</javac>
+		<jar jarfile="${ant.project.name}.jar" basedir="classes" />
+	</target>
+
+	<target name="clean">
+		<delete dir="classes" />
+		<delete file="${ant.project.name}.jar" />
+	</target>
+
+	<target name="run-mandel-gpu">
+		<java classname="com.amd.aparapi.sample.mandel.Main" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="GPU" />
+		</java>
+	</target>
+
+	<target name="run-mandel-jtp">
+		<java classname="com.amd.aparapi.sample.mandel.Main" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="JTP" />
+		</java>
+	</target>
+
+	<target name="run-mandel2d-gpu">
+		<java classname="com.amd.aparapi.sample.mandel.Main2D" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="GPU" />
+		</java>
+	</target>
+
+	<target name="run-mandel2d-jtp">
+		<java classname="com.amd.aparapi.sample.mandel.Main2D" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="JTP" />
+		</java>
+	</target>
+
+	<target name="run-agent-gpu">
+		<java classname="com.amd.aparapi.sample.mandel.Main" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="GPU" />
+			<sysproperty key="com.amd.aparapi.useAgent" value="true" />
+		</java>
+	</target>
+
+	<target name="run-agent-jtp">
+		<java classname="com.amd.aparapi.sample.mandel.Main" fork="true">
+			<classpath refid="runtime.class.path" />
+			<sysproperty key="java.library.path" path="..\..\com.amd.aparapi.jni\dist" />
+			<sysproperty key="com.amd.aparapi.executionMode" value="JTP" />
+			<sysproperty key="com.amd.aparapi.useAgent" value="true" />
+		</java>
+	</target>
 
 </project>
-- 
GitLab