gatk-3.8/build.xml

326 lines
13 KiB
XML
Raw Normal View History

<project name="Sting" default="dist" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">
<description>Compile and distribute the Sting toolkit</description>
<property name="source.dir" value="java/src" />
<property name="single" value="*Test" />
<property name="singleintegration" value="*IntegrationTest" />
<property name="dist" value="dist" />
<!-- should our junit test output go to a file or the screen?
false means it goes to the screen (default) true to file -->
<property name="usefile" value="false" />
<!-- should our junit tests use XML? default is no -->
<property name="testOutput" value="brief" />
<!-- If running the 'package' task, this property controls the name of the xml file to package -->
<property name="executable" value="GenomeAnalysisTK" />
<!-- Set target based on STING_BUILD_TYPE environment variable -->
<property environment="env"/>
<condition property="target" value="playground" else="core">
<equals arg1="${env.STING_BUILD_TYPE}" arg2="playground" casesensitive="false"/>
</condition>
<patternset id="dependency.mask" includes="*.jar">
<exclude name="junit*.jar" />
<exclude name="bcel*.jar" />
</patternset>
<path id="runtime.dependencies">
<fileset dir="lib">
<patternset refid="dependency.mask" />
</fileset>
</path>
<!-- ivy properties -->
<property name="ivy.install.version" value="2.0.0"/>
<property name="ivy.home" value="${user.home}/.ant"/>
<property name="ivy.jar.dir" value="${ivy.home}/lib"/>
<property name="ivy.jar.file" value="ivy-${ivy.install.version}.jar"/>
<property name="ivy.settings.dir" value="settings"/>
<property file="${ivy.settings.dir}/ivysettings.properties"/>
<property name="ivy.conf" value="default"/>
<target name="resolve" depends="init"
description="locate and download library dependencies">
<mkdir dir="${ivy.jar.dir}"/>
<get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/${ivy.jar.file}"
dest="${ivy.jar.dir}/${ivy.jar.file}"
usetimestamp="true"/>
<taskdef resource="org/apache/ivy/ant/antlib.xml"
uri="antlib:org.apache.ivy.ant"
classpath="${ivy.jar.dir}/${ivy.jar.file}"/>
<ivy:settings file="${ivy.settings.dir}/ivysettings.xml"/>
<ivy:retrieve file="ivy.xml" conf="${ivy.conf}" />
</target>
<!-- where to put reports and tests-->
<property name="report" value="build/report"/>
<property name="test.classes" value="build/testclasses"/>
<property name="test.output" value="${dist}/test"/>
<property name="test.sources" value="java/test"/>
<property name="classes" value="classes"/>
<target name="init">
<!-- Create the time stamp -->
<tstamp/>
<echo message="Compiling module ${target}"/>
<!-- Create the build directory structure used by compile -->
<mkdir dir="build"/>
</target>
<target name="compile" depends="init,resolve"
description="compile the source">
<condition property="target.is.playground" value="true">
<equals arg1="${target}" arg2="playground"/>
</condition>
<!-- Compile the java code from ${src} into build -->
<javac srcdir="${source.dir}" destdir="build" debug="true" debuglevel="lines,vars,source" classpathref="runtime.dependencies">
<!--compilerarg value="-Xlint:unchecked" /-->
<exclude name="**/playground/**" unless="target.is.playground"/>
</javac>
</target>
<target name="dist" depends="compile"
description="generate the distribution">
<mkdir dir="${dist}"/>
<delete>
<fileset dir="${dist}" includes="*.jar" />
</delete>
<copy todir="${dist}">
<fileset dir="lib" includes="*.jar"/>
</copy>
<jar jarfile="${dist}/StingUtils.jar">
<fileset dir="build" includes="**/utils/**/*.class"/>
</jar>
<jar jarfile="${dist}/GenomeAnalysisTK.jar">
<fileset dir="build" includes="**/gatk/**/*.class"/>
<manifest>
<attribute name="Main-Class" value="org.broadinstitute.sting.gatk.CommandLineGATK"/>
</manifest>
</jar>
<jar jarfile="${dist}/FourBaseRecaller.jar" whenmanifestonly="skip">
<fileset dir="build">
<include name="**/secondarybase/**/*.class" />
</fileset>
<manifest>
<attribute name="Main-Class" value="org.broadinstitute.sting.secondarybase.FourBaseRecaller" />
</manifest>
</jar>
<jar jarfile="${dist}/Playground.jar" whenmanifestonly="skip">
<fileset dir="build">
<include name="**/*.class"/>
<exclude name="**/utils/**"/>
<exclude name="**/gatk/**"/>
<exclude name="**/secondarybase/**" />
</fileset>
</jar>
<pathconvert property="jar.classpath" pathsep=" ">
<flattenmapper/>
<fileset dir="${dist}" includes="*.jar"/>
<filelist files="GATKScala.jar"/>
</pathconvert>
<jar jarfile="${dist}/StingUtils.jar" update="true">
<manifest>
<attribute name="Class-Path" value="${jar.classpath}"/>
</manifest>
</jar>
<jar jarfile="${dist}/GenomeAnalysisTK.jar" update="true">
<manifest>
<attribute name="Class-Path" value="${jar.classpath}"/>
</manifest>
</jar>
<jar jarfile="${dist}/FourBaseRecaller.jar" update="true" whenmanifestonly="skip">
<manifest>
<attribute name="Class-Path" value="${jar.classpath}" />
</manifest>
</jar>
<jar jarfile="${dist}/Playground.jar" update="true" whenmanifestonly="skip">
<manifest>
<attribute name="Class-Path" value="${jar.classpath}"/>
</manifest>
</jar>
</target>
<target name="core" description="force a build of the Sting core code">
<antcall target="dist" inheritAll="true">
<param name="target" value="core" />
</antcall>
</target>
<target name="playground" description="force a build of the Sting experimental code">
<antcall target="dist" inheritAll="true">
<param name="target" value="playground" />
</antcall>
</target>
<target name="test.compile" depends="playground">
<echo message="Sting: Compiling test cases!"/>
<mkdir dir="${test.classes}"/>
<javac destdir="${test.classes}" debug="true" optimize="on">
<src path="${test.sources}"/>
<classpath>
<path refid="runtime.dependencies" />
<pathelement location="build"/>
<pathelement location="lib/junit-4.4.jar"/>
</classpath>
</javac>
</target>
<!-- new scala target -->
<target name="scala" description="build the scala directory">
<antcall target="resolve">
<param name="ivy.conf" value="scala"/>
</antcall>
<antcall target="dist"/>
<property name="scala.src" value="scala/src" />
<property name="scala.classes" value="scala/classes" />
<pathconvert property="scalajar.classpath" pathsep=";">
<flattenmapper/>
<fileset dir="${basedir}" includes="dist/*.jar"/>
</pathconvert>
<path id="scala.classpath">
<pathelement location="lib/scala-compiler-2.7.7.jar"/>
<pathelement location="lib/scala-library-2.7.7.jar"/>
<fileset dir="${dist}">
<patternset id="scalaStuff">
<include name="*.jar"/>
</patternset>
</fileset>
</path>
<taskdef resource="scala/tools/ant/antlib.xml">
<classpath refid="scala.classpath"/>
</taskdef>
<mkdir dir="${scala.classes}"/>
<echo>Building Scala...</echo>
<scalac srcdir="${scala.src}" destdir="${scala.classes}" classpathref="scala.classpath" force="changed">
<include name="**/*.scala"/>
</scalac>
<jar jarfile="${dist}/GATKScala.jar">
<fileset dir="${scala.classes}">
<include name="**/*.class"/>
</fileset>
</jar>
</target>
<!-- TEST -->
<target name="test" depends="test.compile,agent" description="Run unit tests">
<mkdir dir="${report}"/>
<echo message="Sting: Running test cases!"/>
<junit printsummary="yes" showoutput="yes" clonevm="yes" haltonfailure="yes" failureProperty="test.failure">
<jvmarg value="-javaagent:build/TestAgent.jar"/>
<formatter type="${testOutput}" usefile="${usefile}" />
<classpath>
<path refid="runtime.dependencies"/>
<pathelement location="build"/>
<pathelement location="${test.classes}"/>
<pathelement location="lib/junit-4.4.jar"/>
</classpath>
<batchtest fork="yes" todir="${report}">
<fileset dir="${test.classes}">
<include name="**/${single}.class"/>
<exclude name="**/BaseTest.class"/>
<exclude name="**/*IntegrationTest.class"/>
</fileset>
</batchtest>
</junit>
<fail message="test failed" if="test.failure" />
</target>
<!-- Our long tests, tests that are more software integration and test -->
<target name="integrationtest" depends="test.compile"
description="Run the long integration unit tests">
<mkdir dir="${report}"/>
<echo message="Sting: Running integration test cases!"/>
<junit printsummary="yes" showoutput="yes" clonevm="yes" haltonfailure="yes" failureProperty="test.failure">
<jvmarg value="-Xdebug"/>
<jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8090"/>
<formatter type="${testOutput}" usefile="${usefile}" />
<classpath>
<path refid="runtime.dependencies"/>
<pathelement location="${dist}/GenomeAnalysisTK.jar"/>
<pathelement location="${test.classes}"/>
<pathelement location="lib/junit-4.4.jar"/>
</classpath>
<batchtest fork="yes" todir="${report}">
<fileset dir="${test.classes}">
<include name="**/${singleintegration}.class"/>
</fileset>
</batchtest>
</junit>
<fail message="test failed" if="test.failure" />
</target>
<!-- this builds the instrumentation library we're going to use for test cases -->
<target name="agent" description="build the agent">
<echo message="Sting: Creating test agent!"/>
<jar jarfile="build/TestAgent.jar">
<fileset dir="build">
<include name="**/TrivialInstrumenter.class" />
</fileset>
<manifest>
<attribute name="Class-Path" value="${jar.classpath}"/>
<attribute name="Premain-Class" value="org.broadinstitute.sting.TrivialInstrumenter"/>
</manifest>
</jar>
</target>
<target name="javadoc" depends="init,resolve" description="generates javadoc">
<mkdir dir="javadoc"/>
<!-- Javadoc can't take the same dirsets as javac; it only likes getting the base directory -->
<!-- Exclude playground files with excludepackagenames instead of the "source" dirset -->
<condition property="package.excludes" value="" else="org.broadinstitute.sting.playground.*">
<equals arg1="${target}" arg2="playground" />
</condition>
<javadoc destdir="javadoc" sourcepath="${source.dir}" excludepackagenames="${package.excludes}" classpathref="runtime.dependencies"/>
</target>
<!-- Unzip all classes from their current locations and assemble them in a staging directory -->
<target name="stage" description="stage files for distribution">
<mkdir dir="staging"/>
<unjar dest="staging" overwrite="false">
<fileset dir="${dist}">
<patternset refid="dependency.mask" />
</fileset>
</unjar>
</target>
<!-- Build a package consisting of all supporting files -->
<target name="package" depends="dist,stage" description="bundle up an executable for distribution">
<mkdir dir="${dist}/packages" />
<xslt in="packages/${executable}.xml" out="${dist}/packages/Build${executable}.xml" style="packages/CreatePackager.xsl" />
<ant antfile="${dist}/packages/Build${executable}.xml" />
</target>
<target name="clean" description="clean up">
<delete dir="out"/>
<delete dir="build"/>
<delete dir="lib"/>
<delete dir="staging"/>
<delete dir="${dist}"/>
</target>
</project>