<?xml version="1.0"?>
<project name="ANTLR C# Runtime Library" default="build">
    <tstamp/>
	<property name="base.dir" value="${path::get-full-path( project::get-base-directory() )}" />

	<include buildfile="../../antlr3.runtime.net.common.inc" />

	<property name="antlr3.runtime.test" value="true" unless="${property::exists('antlr3.runtime.test')}" />
	<property name="enabletest" value="ALLOWTEST" unless="${property::exists('enabletest')}" />

	<property name="name" value="Antlr3.Runtime" />
	<property name="test.name" value="${name}.Tests" />
	
	<property name="assembly.name" value="${name}.dll" />
	<property name="test.assembly.name" value="${test.name}.exe" />
	
	<property name="src.dir" value="${base.dir}/" />
	<property name="test.src.dir" value="${base.dir}/../Antlr3.Runtime.Tests" />

    <property name="debug" value="true" unless="${property::exists('debug')}" />

    <echo message="Building project: '${name}' version ${version} ==> '${assembly.name}'"/>

    <target name="build" depends="init, compile, test" description="compiles the source code">
    </target>

	<target name="init" depends="clean, copy_build_dependencies">
        <mkdir dir="${build.working.dir}/tests" />
	</target>

	<target name="copy_build_dependencies">
		<!-- Copy Antlr3.Runtime.Tests dependencies -->
		<copy todir="${build.working.dir}" overwrite="true">
			<fileset basedir="${sharedlibrary.dir}/MbUnit">
				<include name="MbUnit.Framework.dll" />
				<include name="QuickGraph.Algorithms.dll" />
				<include name="QuickGraph.dll" />
			</fileset>
		</copy>
		<copy todir="${build.working.dir}" overwrite="true">
			<fileset basedir="${sharedlibrary.dir}/StringTemplate.NET/${target.clr}">
				<include name="StringTemplate.dll" />
				<include name="antlr.runtime.dll" />
			</fileset>
		</copy>
	</target>

    <target name="clean">
	</target>

    <target name="clean.vsnet" description="cleans up VS.NET build artifacts and output">
		<!-- delete VS.NET project artifacts directory -->
        <echo message="Deleting VS.NET artifacts directory '${base.dir}/bin'" />
		<delete dir="${base.dir}/bin" failonerror="false" />
        <echo message="Deleting VS.NET artifacts directory '${base.dir}/obj'" />
		<delete dir="${base.dir}/obj" failonerror="false" />

		<!-- delete VS.NET project artifacts directory for Tests projects-->
        <echo message="Deleting VS.NET artifacts directory '${base.dir}/../Antlr3.Runtime.Tests/bin'" />
		<delete dir="${base.dir}/../Antlr3.Runtime.Tests/bin" failonerror="false" />
        <echo message="Deleting VS.NET artifacts directory '${base.dir}/../Antlr3.Runtime.Tests/obj'" />
		<delete dir="${base.dir}/../Antlr3.Runtime.Tests/obj" failonerror="false" />
    </target>

	<target name="test" depends="tests.run" if="${antlr3.runtime.test}">
	</target>

	<target name="tests.run" depends="tests.compile">
		<loadtasks assembly="${sharedlibrary.dir}/MbUnit/MbUnit.Tasks.dll" />
		<mbunit
        	report-types="Html"
         	report-filename-format="antlr3-runtime-report-{0}-{1}"
         	report-output-directory="${build.working.dir}"
         	halt-on-failure="true"
         >
		    <assemblies>
		    	<include name="${build.working.dir}/${test.assembly.name}" /> 
			</assemblies>
		</mbunit>
	</target>

	<target name="compile" depends="init">
		<csc 
			define="${strong_name};${dotnet_define}"
			target="library" 
			debug="${debug}"
			optimize="${optimize}"
			output="${build.working.dir}/${assembly.name}" 
			doc="${build.working.dir}/${name}.xml">
			
			<nowarn>
				<warning number="1591" />
				<warning number="1572" />
			</nowarn>
			
			<sources basedir="${src.dir}" defaultexcludes="true">
				<include name="**/*.cs" />
				<exclude name="**/*.Designer.cs" 
					if="${framework::get-target-framework()=='net-1.1' or framework::get-target-framework()=='mono-1.0'}" 
				/>
			</sources>

			<references>
				<!-- <include name="${build.working.dir}/antlr.runtime.dll" /> -->
			</references>
		</csc>
	</target>

	<target name="tests.compile" depends="init">
		<csc 
			define="${dotnet_define}"
			target="exe" 
			debug="${debug}" 
			output="${build.working.dir}/${test.assembly.name}">
			
			<sources basedir="${test.src.dir}" defaultexcludes="true">
				<include name="**/*.cs" />
				<exclude name="**/*.Designer.cs" 
					if="${framework::get-target-framework()=='net-1.1' or framework::get-target-framework()=='mono-1.0'}" 
				/>
			</sources>

			<references>
				<include name="${build.working.dir}/${assembly.name}" />
				<include name="${build.working.dir}/MbUnit.Framework.dll" />
				<include name="${build.working.dir}/QuickGraph.Algorithms.dll" />
				<include name="${build.working.dir}/QuickGraph.dll" />
			</references>
		</csc>
	</target>
	
</project>