wolfssljni/build.xml

297 lines
11 KiB
XML

<?xml version="1.0"?>
<project name="wolfssl" default="build" basedir="." xmlns:jacoco="antlib:org.jacoco.ant">
<description>
wolfSSL JNI is a Java wrapper for the wolfSSL lightweight SSL/TLS library.
This build file requires JUnit for running provided JUnit tests. JUnit can
be downloaded from: http:/www.junit.org/
When running JUnit tests, this package will look for JUnit at:
$JUNIT_HOME/junit.jar
</description>
<!-- set properties for this build -->
<property name="src.dir" value="src/java/"/>
<property name="native.dir" value="native"/>
<property name="lib.dir" value="lib/"/>
<property name="build.dir" value="build"/>
<property name="doc.dir" value="docs"/>
<property name="test.dir" value="src/test/"/>
<property name="test.build.dir" value="build/test"/>
<property name="examples.dir" value="examples/"/>
<property name="examples.build.dir" value="examples/build"/>
<property name="reports.dir" value="build/reports"/>
<!-- These paths should be relative to JUNIT_HOME -->
<property name="junit4" value="junit-4.13.jar" />
<property name="hamcrest-core" value="hamcrest-all-1.3.jar" />
<property name="ant-junit4" value="ant/ant-junit4.jar" />
<property environment="env"/>
<!-- check for SNIHostName class to determine if JDK version >= 1.8 -->
<available property="have-SNIHostName" classname="javax.net.ssl.SNIHostName" />
<!-- check if javac nativeheaderdir is available -->
<condition property="have-nativeheaderdir">
<and>
<antversion atleast="1.9.8"/>
<not>
<or>
<equals arg1="${ant.java.version}" arg2="1.5"/>
<equals arg1="${ant.java.version}" arg2="1.6"/>
<equals arg1="${ant.java.version}" arg2="1.7"/>
</or>
</not>
</and>
</condition>
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<classpath path="${env.JACOCO_HOME}/jacocoant.jar"/>
</taskdef>
<!-- classpath to compiled wolfssl.jar, for running tests -->
<path id="classpath">
<fileset dir="${lib.dir}" includes="*.jar">
<include name="wolfssl.jar"/>
</fileset>
<fileset dir="${env.JUNIT_HOME}" erroronmissingdir="false">
<include name="${junit4}"/>
</fileset>
</path>
<target name="init" depends="clean, default-javac-flags">
<mkdir dir="${build.dir}"/>
<mkdir dir="${lib.dir}"/>
<mkdir dir="${examples.build.dir}"/>
<mkdir dir="${test.build.dir}"/>
<mkdir dir="${reports.dir}"/>
</target>
<target name="clean">
<delete dir="${test.build.dir}"/>
<delete dir="${build.dir}"/>
<delete dir="${examples.build.dir}"/>
<delete dir="${reports.dir}"/>
<delete>
<fileset dir="${lib.dir}" includes="wolfssl.jar" />
<fileset dir="${lib.dir}" includes="wolfssl-jsse.jar" />
</delete>
</target>
<target name="cleanjni">
<delete>
<fileset dir="${lib.dir}" includes="*.jnilib"/>
<fileset dir="${lib.dir}" includes="*.so"/>
<fileset dir="${native.dir}" includes="*.o"/>
</delete>
</target>
<target name="build" depends="init, compile-nativeheaderdir, compile-javah, jar, jar-jsse, javah, javadoc"/>
<target name="build-jacoco" depends="init, compile-nativeheaderdir, compile-javah, jar, jar-jsse, javah, javadoc, examples, test-jacoco, coverage-report"/>
<target name="compile-nativeheaderdir" if="have-nativeheaderdir">
<javac destdir="${build.dir}"
nativeheaderdir="${native.dir}"
debug="${java.debug}"
debuglevel="${java.debuglevel}"
deprecation="${java.deprecation}"
optimize="${java.optimize}"
source="${java.source}"
target="${java.target}"
classpathref="classpath"
includeantruntime="false">
<compilerarg value="-Xlint:-options"/>
<src path="${src.dir}" />
<include name="com/wolfssl/**" />
<include name="com/wolfssl/provider/jsse/**" />
<include name="com/wolfssl/provider/jsse/adapter/**" />
<exclude name="com/wolfssl/provider/jsse/adapter/WolfSSLJDK8Helper.java" unless="have-SNIHostName" />
</javac>
</target>
<target name="compile-javah" unless="have-nativeheaderdir">
<javac destdir="${build.dir}"
debug="${java.debug}"
debuglevel="${java.debuglevel}"
deprecation="${java.deprecation}"
optimize="${java.optimize}"
source="${java.source}"
target="${java.target}"
classpathref="classpath"
includeantruntime="false">
<compilerarg value="-Xlint:-options"/>
<src path="${src.dir}" />
<include name="com/wolfssl/**" />
<include name="com/wolfssl/provider/jsse/**" />
<include name="com/wolfssl/provider/jsse/adapter/**" />
<exclude name="com/wolfssl/provider/jsse/adapter/WolfSSLJDK8Helper.java" unless="have-SNIHostName" />
</javac>
</target>
<target name="javah" unless="have-nativeheaderdir">
<javah destdir="${native.dir}" force="yes" classpathref="classpath">
<class name="com.wolfssl.WolfSSL"/>
<class name="com.wolfssl.WolfSSLCertManager"/>
<class name="com.wolfssl.WolfSSLCertificate"/>
<class name="com.wolfssl.WolfSSLContext"/>
<class name="com.wolfssl.WolfSSLSession"/>
<class name="com.wolfssl.WolfSSLX509StoreCtx"/>
<class name="com.wolfssl.wolfcrypt.ECC"/>
<class name="com.wolfssl.wolfcrypt.EccKey"/>
<class name="com.wolfssl.wolfcrypt.RSA"/>
</javah>
</target>
<target name="default-javac-flags"
description="Set the javac flags that will produce a debug jar
with no compiler optimisation and all debug symbols" >
<property name="java.debug" value="true"/>
<property name="java.debuglevel" value="source,lines,vars"/>
<property name="java.deprecation" value="true"/>
<property name="java.optimize" value="false"/>
<property name="java.source" value="1.7"/>
<property name="java.target" value="1.7"/>
</target>
<target name="jar">
<jar jarfile="${lib.dir}/wolfssl.jar">
<fileset dir="${build.dir}">
<include name="com/wolfssl/*.class"/>
<include name="com/wolfssl/wolfcrypt/*.class"/>
</fileset>
</jar>
</target>
<target name="jar-jsse">
<jar jarfile="${lib.dir}/wolfssl-jsse.jar" basedir="${build.dir}"></jar>
</target>
<target name="javadoc" description="generate documentation">
<javadoc destdir="${doc.dir}">
<fileset dir="${src.dir}">
<include name="com/wolfssl/**"/>
<include name="com/wolfssl/provider/jsse/**"/>
<exclude name="com/wolfssl/provider/jsse/adapter/WolfSSLJDK8Helper.java" unless="have-SNIHostName" />
</fileset>
</javadoc>
</target>
<target name="examples" depends="build">
<javac srcdir="${examples.dir}"
destdir="${examples.build.dir}"
debug="${java.debug}"
debuglevel="${java.debuglevel}"
deprecation="${java.deprecation}"
optimize="${java.optimize}"
source="${java.source}"
target="${java.target}"
classpathref="classpath"
includeantruntime="false">
<compilerarg value="-Xlint:-options"/>
</javac>
</target>
<target name="build-test" depends="build">
<javac srcdir="${test.dir}"
destdir="${test.build.dir}"
debug="${java.debug}"
debuglevel="${java.debuglevel}"
deprecation="${java.depreciation}"
optimize="${java.optimize}"
source="${java.source}"
target="${java.target}"
classpathref="classpath"
includeantruntime="false">
<compilerarg value="-Xlint:-options"/>
</javac>
</target>
<target name="test" depends="build-test">
<junit printsummary="yes" showoutput="yes" haltonfailure="yes" fork="true">
<classpath>
<pathelement location="${build.dir}"/>
<pathelement location="${test.build.dir}"/>
<fileset dir="${env.JUNIT_HOME}">
<include name="${junit4}"/>
<include name="${hamcrest-core}"/>
<include name="${ant-junit4}"/>
</fileset>
</classpath>
<formatter type="plain"/>
<formatter type="xml"/>
<sysproperty key="sun.boot.library.path" value="$JAVA_HOME/bin:${lib.dir}" />
<env key="LD_LIBRARY_PATH" path="${env.LD_LIBRARY_PATH}:{lib.dir}:/usr/local/lib" />
<env key="CLASSPATH" path="${env.LD_LIBRARY_PATH}:${env.JUNIT_HOME}/${junit4}" />
<batchtest fork="yes" todir="${reports.dir}">
<fileset dir="${test.dir}">
<include name="**/*TestSuite.java"/>
</fileset>
</batchtest>
</junit>
</target>
<target name="test-jacoco" depends="build-test">
<jacoco:coverage destfile="${build.dir}/jacoco.exec">
<junit printsummary="yes" showoutput="yes" haltonfailure="yes" fork="true">
<classpath>
<pathelement location="${build.dir}"/>
<pathelement location="${test.build.dir}"/>
<fileset dir="${env.JUNIT_HOME}">
<include name="${junit4}"/>
<include name="${hamcrest-core}"/>
<include name="${ant-junit4}"/>
</fileset>
</classpath>
<formatter type="plain"/>
<formatter type="xml"/>
<sysproperty key="sun.boot.library.path" value="$JAVA_HOME/bin:${lib.dir}" />
<env key="LD_LIBRARY_PATH" path="${env.LD_LIBRARY_PATH}:{lib.dir}:/usr/local/lib" />
<env key="CLASSPATH" path="${env.LD_LIBRARY_PATH}:${env.JUNIT_HOME}/${junit4}" />
<batchtest fork="yes" todir="${reports.dir}">
<fileset dir="${test.dir}">
<include name="**/*TestSuite.java"/>
</fileset>
</batchtest>
</junit>
</jacoco:coverage>
</target>
<target name="coverage-report">
<jacoco:report>
<executiondata>
<file file="${build.dir}/jacoco.exec"/>
</executiondata>
<structure name="wolfSSL JNI/JSSE">
<classfiles>
<fileset dir="${build.dir}">
<include name="com/wolfssl/*.class"/>
<include name="com/wolfssl/provider/jsse/*.class"/>
</fileset>
</classfiles>
<sourcefiles>
<fileset dir="${src.dir}">
<include name="com/wolfssl/*.java"/>
<include name="com/wolfssl/provider/jsse/*.java"/>
</fileset>
</sourcefiles>
</structure>
<html destdir="report"/>
<csv destfile="report/report.csv"/>
</jacoco:report>
</target>
<target name="coverage" depends="build-jacoco"/>
</project>