WALA/com.ibm.wala.core.testdata/build.xml

234 lines
11 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE project>
<project name="com.ibm.wala.core.testdata" default="build.update.jar" basedir=".">
<property name="basews" value="${ws}"/>
<property name="baseos" value="${os}"/>
<property name="basearch" value="${arch}"/>
<property name="basenl" value="${nl}"/>
<!-- Compiler settings. -->
<property name="javacFailOnError" value="true"/>
<property name="javacDebugInfo" value="on"/>
<property name="javacVerbose" value="false"/>
<property name="logExtension" value=".log"/>
<property name="compilerArg" value=""/>
<property name="javacSource" value="1.8"/>
<property name="javacTarget" value="1.8"/>
<property name="dir_bootclasspath" value="${java.home}/lib"/>
<path id="path_bootclasspath">
<fileset dir="${dir_bootclasspath}">
<include name="*.jar"/>
</fileset>
</path>
<property name="bootclasspath" refid="path_bootclasspath"/>
<property name="bundleJavacSource" value="${javacSource}"/>
<property name="bundleJavacTarget" value="${javacTarget}"/>
<property name="bundleBootClasspath" value="${bootclasspath}"/>
<target name="JLexPresent" depends="init">
<available file="${plugin.destination}/JLex.jar" property="jlex.present"/>
</target>
<target name="fetchJLex" depends="JLexPresent" unless="jlex.present">
<delete dir="${temp.folder}"/>
<mkdir dir="${temp.folder}/JLex"/>
<get src="http://www.cs.princeton.edu/~appel/modern/java/JLex/current/Main.java" dest="${temp.folder}/JLex/Main.java"/>
<javac includeAntRuntime="no" srcdir="${temp.folder}" destdir="${temp.folder}"/>
<jar destfile="${plugin.destination}/JLex.jar" basedir="${temp.folder}" />
<delete dir="${temp.folder}"/>
</target>
<target name="javaCupPresent" depends="init">
<available file="${plugin.destination}/java-cup-11a.jar" property="javacup.present"/>
</target>
<target name="fetchJavaCup" depends="javaCupPresent" unless="javacup.present">
<get src="http://www2.cs.tum.edu/projects/cup/java-cup-11a.jar" dest="${plugin.destination}/java-cup-11a.jar"/>
</target>
<target name="bcelPresent" depends="init">
<available file="${plugin.destination}/bcel-5.2.jar" property="bcel.present"/>
</target>
<target name="OCamlPresent" depends="init">
<available file="${plugin.destination}/ocaml/ocamljava-2.0-alpha1/lib/ocamljava.jar" property="ocaml.present"/>
</target>
<target name="fetchOCaml" depends="OCamlPresent" unless="ocaml.present">
<delete dir="${temp.folder}"/>
<mkdir dir="${temp.folder}"/>
<get src="http://www.ocamljava.org/downloads/download.php?version=2.0-alpha1-bin" dest="${temp.folder}/ocamljava-2.0-alpha1-bin.tar.gz"/>
<gunzip src="${temp.folder}//ocamljava-2.0-alpha1-bin.tar.gz" dest="${temp.folder}/ocamljava-2.0-alpha1-bin.tar"/>
<untar src="${temp.folder}/ocamljava-2.0-alpha1-bin.tar" dest="${plugin.destination}/ocaml">
</untar>
<delete dir="${temp.folder}"/>
</target>
<target name="HelloHashPresent" depends="init">
<available file="${plugin.destination}/hello_hash.jar" property="hello.hsh.present"/>
</target>
<target name="buildOCamlHelloHash" unless="hello.hash.present" depends="HelloHashPresent,fetchOCaml">
<java jar="${plugin.destination}/ocaml/ocamljava-2.0-alpha1/lib/ocamljava.jar" fork="true">
<arg file="${basedir}/ocaml/hello_hash.ml"/>
<arg value="-o"/>
<arg file="${plugin.destination}/hello_hash.jar"/>
</java>
</target>
<target name="fetchBcel" depends="bcelPresent" unless="bcel.present">
<delete dir="${temp.folder}"/>
<mkdir dir="${temp.folder}"/>
<get src="http://archive.apache.org/dist/jakarta/bcel/binaries/bcel-5.2.tar.gz" dest="${temp.folder}/bcel-5.2.tar.gz"/>
<gunzip src="${temp.folder}/bcel-5.2.tar.gz" dest="${temp.folder}/bcel-5.2.tar"/>
<untar src="${temp.folder}/bcel-5.2.tar" dest="${temp.folder}"/>
<copy file="${temp.folder}/bcel-5.2/bcel-5.2.jar" tofile="${plugin.destination}/bcel-5.2.jar" />
<delete dir="${temp.folder}"/>
</target>
<target name="copyJars" depends="fetchJLex,fetchJavaCup,fetchBcel,buildOCamlHelloHash">
<copy todir="${plugin.destination}/bin">
<fileset dir="${plugin.destination}" includes="*.jar" />
</copy>
</target>
<target name="init" depends="properties">
<condition property="pluginTemp" value="${buildTempFolder}/plugins">
<isset property="buildTempFolder"/>
</condition>
<property name="pluginTemp" value="${basedir}"/>
<condition property="build.result.folder" value="${pluginTemp}/com.ibm.wala.core.testdata">
<isset property="buildTempFolder"/>
</condition>
<property name="build.result.folder" value="${basedir}"/>
<property name="temp.folder" value="${basedir}/temp.folder"/>
<property name="plugin.destination" value="${basedir}"/>
</target>
<target name="properties" if="eclipse.running">
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
</target>
<target name="build.update.jar" depends="copyJars,init" description="Build the plug-in: com.ibm.wala.core.testdata for an update site.">
<delete dir="${temp.folder}"/>
<mkdir dir="${temp.folder}"/>
<antcall target="build.jars"/>
<antcall target="gather.bin.parts">
<param name="destination.temp.folder" value="${temp.folder}/jdk"/>
</antcall>
<zip destfile="${plugin.destination}/com.ibm.wala.core.testdata_1.0.0a.jar" basedir="${temp.folder}/jdk/com.ibm.wala.core.testdata_1.0.0" filesonly="false" whenempty="skip" update="false" excludes="**/CodeDeleted.class,**/SortingExample.class,**/A.class"/>
<zip destfile="${plugin.destination}/com.ibm.wala.core.testdata_1.0.0.jar" basedir="${temp.folder}/jdk/com.ibm.wala.core.testdata_1.0.0" filesonly="false" whenempty="skip" update="false"/>
<delete dir="${temp.folder}"/>
</target>
<target name="@dot" depends="init" description="Create jar: com.ibm.wala.core.testdata @dot.">
<delete dir="${destdir}"/>
<mkdir dir="${destdir}"/>
<path id="@dot.classpath">
</path>
<!-- compile the source code -->
<javac destdir="${destdir}" failonerror="${javacFailOnError}" verbose="${javacVerbose}" debug="${javacDebugInfo}" includeAntRuntime="no" bootclasspath="${bundleBootClasspath}" source="${jsv}" target="${jtv}" excludes="${excludes}">
<compilerarg line="${compilerArg}" compiler="${build.compiler}"/>
<classpath refid="@dot.classpath" />
<src path="src/"/>
<compilerarg line="-log '${destdir}${logExtension}'" compiler="org.eclipse.jdt.core.JDTCompilerAdapter"/>
</javac>
<!-- Copy necessary resources -->
<copy todir="${destdir}" failonerror="true" overwrite="false">
<fileset dir="src/" excludes="**/*.java, **/package.htm*"/>
</copy>
</target>
<target name="src.zip" depends="init" unless="src.zip">
<mkdir dir="${build.result.folder}"/>
<zip destfile="${build.result.folder}/src.zip" filesonly="false" whenempty="skip" update="false">
<fileset dir="src/" includes="**/*.java"/>
</zip>
</target>
<target name="build.jars" depends="init" description="Build all the jars for the plug-in: com.ibm.wala.core.testdata.">
<available property="@dot" file="${build.result.folder}/@dot"/>
<antcall target="@dot">
<param name="destdir" value="${temp.folder}/jdk/@dot"/>
<param name="jsv" value="${bundleJavacSource}"/>
<param name="jtv" value="${bundleJavacTarget}"/>
<param name="excludes" value="**/bak/"/>
</antcall>
</target>
<target name="build.sources" depends="init">
<available property="src.zip" file="${build.result.folder}/src.zip"/>
<antcall target="src.zip"/>
</target>
<target name="gather.bin.parts" depends="init" if="destination.temp.folder">
<mkdir dir="${destination.temp.folder}/com.ibm.wala.core.testdata_1.0.0"/>
<copy todir="${destination.temp.folder}/com.ibm.wala.core.testdata_1.0.0" failonerror="true" overwrite="false">
<fileset dir="${destination.temp.folder}/@dot" includes="**"/>
</copy>
<copy todir="${destination.temp.folder}/com.ibm.wala.core.testdata_1.0.0" failonerror="true" overwrite="false">
<fileset dir="${basedir}" includes="META-INF/"/>
</copy>
<copy todir="${destination.temp.folder}/com.ibm.wala.core.testdata_1.0.0" failonerror="true" overwrite="false">
<fileset dir="${basedir}/classes" includes="**"/>
</copy>
</target>
<target name="build.zips" depends="init">
</target>
<target name="gather.sources" depends="init" if="destination.temp.folder">
<mkdir dir="${destination.temp.folder}/com.ibm.wala.core.testdata_1.0.0"/>
<copy file="${build.result.folder}/src.zip" todir="${destination.temp.folder}/com.ibm.wala.core.testdata_1.0.0" failonerror="false" overwrite="false"/>
</target>
<target name="gather.logs" depends="init" if="destination.temp.folder">
<mkdir dir="${destination.temp.folder}/com.ibm.wala.core.testdata_1.0.0"/>
<copy file="${temp.folder}/@dot.bin${logExtension}" todir="${destination.temp.folder}/com.ibm.wala.core.testdata_1.0.0" failonerror="false" overwrite="false"/>
</target>
<target name="clean" depends="init" description="Clean the plug-in: com.ibm.wala.core.testdata of all the zips, jars and logs created.">
<delete dir="${build.result.folder}/@dot"/>
<delete file="${build.result.folder}/src.zip"/>
<delete file="${plugin.destination}/com.ibm.wala.core.testdata_1.0.0.jar"/>
<delete file="${plugin.destination}/com.ibm.wala.core.testdata_1.0.0.zip"/>
<delete dir="${temp.folder}"/>
</target>
<target name="refresh" depends="init" if="eclipse.running" description="Refresh this folder.">
<eclipse.convertPath fileSystemPath="C:/temp/walaWorkspace/com.ibm.wala.core.testdata" property="resourcePath"/>
<eclipse.refreshLocal resource="${resourcePath}" depth="infinite"/>
</target>
<target name="zip.plugin" depends="init" description="Create a zip containing all the elements for the plug-in: com.ibm.wala.core.testdata.">
<delete dir="${temp.folder}"/>
<mkdir dir="${temp.folder}"/>
<antcall target="build.jars"/>
<antcall target="build.sources"/>
<antcall target="gather.bin.parts">
<param name="destination.temp.folder" value="${temp.folder}/jdk"/>
</antcall>
<antcall target="gather.sources">
<param name="destination.temp.folder" value="${temp.folder}/jdk"/>
</antcall>
<antcall target="gather.bin.parts">
<param name="destination.temp.folder" value="${temp.folder}/dalvik"/>
</antcall>
<antcall target="gather.sources">
<param name="destination.temp.folder" value="${temp.folder}/dalvik"/>
</antcall>
<delete>
<fileset dir="${temp.folder}" includes="**/*.bin${logExtension}"/>
</delete>
<zip destfile="${plugin.destination}/com.ibm.wala.core.testdata_1.0.0.zip" basedir="${temp.folder}" filesonly="true" whenempty="skip" update="false"/>
<delete dir="${temp.folder}"/>
</target>
</project>