aboutsummaryrefslogtreecommitdiff
path: root/bindings/java/build.xml
diff options
context:
space:
mode:
Diffstat (limited to 'bindings/java/build.xml')
-rw-r--r--bindings/java/build.xml165
1 files changed, 165 insertions, 0 deletions
diff --git a/bindings/java/build.xml b/bindings/java/build.xml
new file mode 100644
index 0000000..d4e57f6
--- /dev/null
+++ b/bindings/java/build.xml
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- build.xml: Ant build file for ppamltracer
+Copyright (C) 2014 Galois, Inc.
+
+This program is free software: you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free Software
+Foundation, either version 3 of the License, or (at your option) any later
+version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+details.
+
+You should have received a copy of the GNU General Public License along with
+this program. If not, see <http://www.gnu.org/licenses/>.
+
+To contact Galois, complete the Web form at <http://corp.galois.com/contact/>
+or write to Galois, Inc., 421 Southwest 6th Avenue, Suite 300, Portland,
+Oregon, 97204-1622. -->
+
+<project name="ppamltracer-java" basedir="." default="link-and-package">
+
+ <property name="project.shortname" value="ppamltracer" />
+ <property name="project.version" value="0.1.0" />
+ <property name="package" value="com.galois.ppaml.tracer" />
+
+ <property name="src" location="src" />
+ <property name="src.java" location="${src}/java" />
+ <property name="src.c" location="${src}/c" />
+
+ <property name="build" location="build" />
+ <property name="build.classes" location="${build}/classes" />
+ <property name="build.native" location="${build}/native" />
+
+ <property name="dist" location="dist" />
+ <property name="doc" location="${dist}/doc" />
+
+ <target name="java.compile">
+ <mkdir dir="${build.classes}" />
+ <javac srcdir="${src}"
+ destdir="${build.classes}"
+ includeantruntime="false" />
+ </target>
+
+ <target name="java.package" depends="java.compile">
+ <mkdir dir="${dist}" />
+ <jar destfile="${dist}/${project.shortname}-${project.version}.jar"
+ basedir="${build.classes}" />
+ </target>
+
+ <!-- Assemble the native sources with their JNI-generated headers. -->
+ <target name="native.prepare" depends="java.compile">
+ <copy todir="${build.native}">
+ <fileset dir="${src.c}" />
+ </copy>
+ <javah classpath="${build.classes}"
+ class="${package}.Tracer,${package}.Phase"
+ destdir="${build.native}"
+ verbose="yes" />
+ </target>
+
+ <!-- Do the autotools dance. -->
+ <target name="native.autotools" depends="native.prepare">
+ <mkdir dir="${build.native}/m4" />
+ <exec executable="autoreconf"
+ dir="${build.native}"
+ failonerror="true">
+ <arg value="--install" />
+ <arg value="-Wall" />
+ </exec>
+ </target>
+
+ <target name="native.compile" depends="native.autotools">
+ <exec executable="./configure"
+ dir="${build.native}"
+ failonerror="true">
+ <arg value="--prefix=${dist}" />
+ </exec>
+ <exec executable="make" dir="${build.native}" failonerror="true" />
+ </target>
+
+ <target name="native.install" depends="native.compile">
+ <mkdir dir="${dist}" />
+ <exec executable="make" dir="${build.native}" failonerror="true">
+ <arg value="install" />
+ </exec>
+ </target>
+
+ <target name="compile" depends="java.compile,native.compile" />
+
+ <target name="link-and-package" depends="java.package,native.install" />
+
+ <target name="doc">
+ <javadoc sourcepath="${src}"
+ destdir="${doc}"
+ packagenames="${package}"
+ access="public">
+ <fileset dir="${src.java}">
+ <include name="**" />
+ </fileset>
+ </javadoc>
+ <!-- Work around CVE-2013-1571 (frame injection vulnerability in generated
+ docs.) Hopefully, you're running a new enough JDK that this isn't
+ necessary, but one can never assume. -->
+ <patch-javadoc dir="${doc}" />
+ </target>
+
+ <target name="clean">
+ <delete dir="${build}"/>
+ <delete dir="${dist}"/>
+ </target>
+
+ <!-- Task to work around CVE-2013-1571. See Ant #55132
+ <https://issues.apache.org/bugzilla/show_bug.cgi?id=55132>. -->
+ <macrodef name="patch-javadoc">
+ <attribute name="dir"/>
+ <attribute name="docencoding" default="${file.encoding}"/>
+ <sequential>
+ <replace encoding="@{docencoding}" summary="true" taskname="patch-javadoc">
+ <fileset dir="@{dir}" casesensitive="false" includes="**/index.html,**/index.htm,**/toc.html,**/toc.htm">
+ <not><contains text="function validURL(url) {" casesensitive="true" /></not>
+ </fileset>
+ <replacetoken><![CDATA[function loadFrames() {]]></replacetoken>
+ <replacevalue expandProperties="false"><![CDATA[if (targetPage != "" && !validURL(targetPage))
+ function validURL(url) { // FIXED FIXED FIXED
+ var pos = url.indexOf(".html");
+ if (pos == -1 || pos != url.length - 5)
+ return false;
+ var allowNumber = false;
+ var allowSep = false;
+ var seenDot = false;
+ for (var i = 0; i < url.length - 5; i++) {
+ var ch = url.charAt(i);
+ if ('a' <= ch && ch <= 'z' ||
+ 'A' <= ch && ch <= 'Z' ||
+ ch == '$' ||
+ ch == '_') {
+ allowNumber = true;
+ allowSep = true;
+ } else if ('0' <= ch && ch <= '9'
+ || ch == '-') {
+ if (!allowNumber)
+ return false;
+ } else if (ch == '/' || ch == '.') {
+ if (!allowSep)
+ return false;
+ allowNumber = false;
+ allowSep = false;
+ if (ch == '.')
+ seenDot = true;
+ if (ch == '/' && seenDot)
+ return false;
+ } else {
+ return false;
+ }
+ }
+ return true;
+ }
+ function loadFrames() {]]></replacevalue>
+ </replace>
+ </sequential>
+ </macrodef>
+
+</project>