<?xml version="1.0" encoding="utf-8"?>
<project basedir="." default="jar" name="ioke">
<description>
ioke is a next generation language, based on Io, Self, Smalltalk, Ruby and Lisp
</description>
<property file="build.properties"/>
<property file="default.build.properties"/>
<path id="build.classpath">
<fileset dir="${lib.build.dir}" includes="*.jar"/>
<fileset dir="${lib.release.dir}" includes="*.jar"/>
</path>
<path id="emma.lib" >
<pathelement location="${lib.build.dir}/emma.jar" />
<pathelement location="${lib.build.dir}/emma_ant.jar" />
</path>
<taskdef resource="emma_ant.properties" classpathref="emma.lib" />
<target name="prepare" description="Creates the directories needed for building">
<mkdir dir="${build.dir}"/>
<mkdir dir="${coverage.dir}"/>
<mkdir dir="${classes.dir}"/>
<mkdir dir="${src.generated.dir}"/>
<uptodate property="grammar.notUpdated" targetfile="${src.generated.dir}/iokeLexer.java" srcfile="${antlr.grammar.dir}/${antlr.grammar.file}"/>
</target>
<target name="generate.antlr" depends="prepare" description="Generates source files from the ANTLR definitions" unless="grammar.notUpdated">
<java classname="org.antlr.Tool" fork="true" dir="${antlr.grammar.dir}" classpathref="build.classpath">
<arg line="-o ${src.generated.dir.relative} ${antlr.grammar.file}"/>
<!-- <arg line="-report -o ${src.generated.dir.relative} ${antlr.grammar.file}"/> -->
</java>
</target>
<target name="generate" depends="generate.antlr" description="Generates source files from the ANTLR definitions"/>
<target name="generate_filters" depends="generate.antlr" description="Generates source files from the ANTLR definitions">
<exec executable="ruby" input="generate_filter_data.rb"/>
</target>
<target name="compile" depends="generate, generate_filters" description="Compile the source files for the project.">
<filter filtersfile="version_data.properties"/>
<filter token="VERSION" value="S"/>
<filter token="VERSION_RUNTIME" value="0.2.0"/>
<filter token="VERSION_STRING" value="Ioke S ikj 0.2.0"/>
<javac destdir="${classes.dir}" debug="true" source="${javac.version}" target="${javac.version}">
<classpath refid="build.classpath"/>
<src path="${src.dir}"/>
<src path="${src.generated.dir}"/>
<include name="**/*.java"/>
</javac>
<copy todir="${classes.dir}" filtering="true" overwrite="true">
<fileset dir="${src.dir}" includes="**/*.properties"/>
</copy>
<copy todir="${classes.dir}">
<fileset dir="${src.raw.dir}" includes="builtin/**/*.ik"/>
</copy>
</target>
<target name="test" depends="compile" description="Runs all ISpec tests">
<java classname="ioke.lang.Main" fork="true" failonerror="true">
<classpath refid="build.classpath"/>
<classpath path="${classes.dir}"/>
<arg line="bin/ispec test -fs"/>
</java>
</target>
<target name="jar" depends="test" description="Create the ioke.jar file">
<jar destfile="${lib.dir}/ioke.jar">
<fileset dir="${classes.dir}">
<include name="**/*.class"/>
<include name="**/*.ik"/>
<include name="**/*.properties"/>
</fileset>
<zipfileset src="${lib.release.dir}/antlr-3.1.1.jar" includes="**/*"/>
<zipfileset src="${lib.release.dir}/jline-0.9.93.jar" includes="**/*"/>
<zipfileset src="${lib.release.dir}/joda-time-1.6.jar" includes="**/*"/>
<manifest>
<attribute name="Built-By" value="${user.name}"/>
<attribute name="Main-Class" value="ioke.lang.Main"/>
</manifest>
</jar>
</target>
<target name="jar-notest" depends="compile" description="Create the ioke.jar file">
<jar destfile="${lib.dir}/ioke.jar">
<fileset dir="${classes.dir}">
<include name="**/*.class"/>
<include name="**/*.ik"/>
<include name="**/*.properties"/>
</fileset>
<zipfileset src="${lib.release.dir}/antlr-3.1.1.jar" includes="**/*"/>
<zipfileset src="${lib.release.dir}/jline-0.9.93.jar" includes="**/*"/>
<zipfileset src="${lib.release.dir}/joda-time-1.6.jar" includes="**/*"/>
<manifest>
<attribute name="Built-By" value="${user.name}"/>
<attribute name="Main-Class" value="ioke.lang.Main"/>
</manifest>
</jar>
</target>
<target name="dist-bin" depends="jar">
<tar destfile="${release.dir}/ioke-S-ikj-0.2.0.tar.gz" compression="gzip">
<tarfileset mode="755" dir="." prefix="ioke">
<include name="bin/**"/>
</tarfileset>
<tarfileset dir="." prefix="ioke">
<include name="lib/ioke*.jar"/>
<include name="lib/ioke/**"/>
<include name="dok/**"/>
<include name="share/**"/>
<include name="COPYING"/>
<include name="LICENSE"/>
<include name="LICENSE.kawa"/>
<include name="README"/>
</tarfileset>
</tar>
<zip destfile="${release.dir}/ioke-S-ikj-0.2.0.zip">
<zipfileset filemode="755" dir="." prefix="ioke">
<include name="bin/**"/>
</zipfileset>
<zipfileset dir="." prefix="ioke">
<include name="lib/ioke*.jar"/>
<include name="lib/ioke/**"/>
<include name="dok/**"/>
<include name="share/**"/>
<include name="COPYING"/>
<include name="LICENSE"/>
<include name="LICENSE.kawa"/>
<include name="README"/>
</zipfileset>
</zip>
</target>
<target name="dist" depends="dist-bin"/>
<target name="clean" description="clean almost everything">
<delete dir="${build.dir}"/>
<delete file="${lib.dir}/ioke.jar" quiet="true"/>
<delete dir="${src.generated.dir}"/>
</target>
</project>