<?xml version="1.0" ?>
<project name="OpenSim" default="build">
    <echo message="Using '${nant.settings.currentframework}' Framework"/>

    <property name="bin.dir" value="bin" />
    <property name="obj.dir" value="obj" />
    <property name="doc.dir" value="doc" />
    <property name="project.main.dir" value="${project::get-base-directory()}" />

    <target name="Debug" description="">
        <property name="project.config" value="Debug" />
        <property name="build.debug" value="true" />
    </target>

    <property name="project.config" value="Release" />

    <target name="Release" description="">
        <property name="project.config" value="Release" />
        <property name="build.debug" value="false" />
    </target>

    <target name="net-1.1" description="Sets framework to .NET 1.1">
        <property name="nant.settings.currentframework" value="net-1.1" />
    </target>

    <target name="net-2.0" description="Sets framework to .NET 2.0">
        <property name="nant.settings.currentframework" value="net-2.0" />
    </target>

    <target name="mono-2.0" description="Sets framework to mono 2.0">
        <property name="nant.settings.currentframework" value="mono-2.0" />
    </target>

    <target name="mono-1.0" description="Sets framework to mono 1.0">
        <property name="nant.settings.currentframework" value="mono-1.0" />
    </target>

    <target name="init" description="">
        <call target="${project.config}" />
        <sysinfo />
        <echo message="Platform ${sys.os.platform}" />
        <property name="build.dir" value="${bin.dir}/${project.config}" />
    </target>

    <target name="clean" description="">
        <echo message="Deleting all builds from all configurations" />
        <delete dir="${bin.dir}" failonerror="false" />
        <delete dir="${obj.dir}" failonerror="false" />
        <nant buildfile="OpenSim/OpenSim.exe.build" target="clean" />
        <nant buildfile="OpenSim.Physics/OdePlugin/OpenSim.Physics.OdePlugin.dll.build" target="clean" />
        <nant buildfile="OpenSim.Framework.Console/OpenSim.Framework.Console.dll.build" target="clean" />
        <nant buildfile="OpenSim.GenericConfig/Xml/OpenSim.GenericConfig.Xml.dll.build" target="clean" />
        <nant buildfile="OpenSim.Physics/Manager/OpenSim.Physics.Manager.dll.build" target="clean" />
        <nant buildfile="OpenGridServices.UserServer/OpenGridServices.UserServer.exe.build" target="clean" />
        <nant buildfile="OpenSim.Physics/BasicPhysicsPlugin/OpenSim.Physics.BasicPhysicsPlugin.dll.build" target="clean" />
        <nant buildfile="OpenGrid.Config/GridConfigDb4o/OpenGrid.Config.GridConfigDb4o.dll.build" target="clean" />
        <nant buildfile="Servers/OpenSim.Servers.dll.build" target="clean" />
        <nant buildfile="OpenSim.Physics/PhysXPlugin/OpenSim.Physics.PhysXPlugin.dll.build" target="clean" />
        <nant buildfile="OpenSim.GridInterfaces/Remote/OpenSim.GridInterfaces.Remote.dll.build" target="clean" />
        <nant buildfile="OpenSim.Framework/OpenSim.Framework.dll.build" target="clean" />
        <nant buildfile="OpenSim.RegionServer/OpenSim.RegionServer.dll.build" target="clean" />
        <nant buildfile="OpenSim.Storage/LocalStorageDb4o/OpenSim.Storage.LocalStorageDb4o.dll.build" target="clean" />
        <nant buildfile="OpenUser.Config/UserConfigDb4o/OpenUser.Config.UserConfigDb4o.dll.build" target="clean" />
        <nant buildfile="OpenSim.GridInterfaces/Local/OpenSim.GridInterfaces.Local.dll.build" target="clean" />
        <nant buildfile="OpenGridServices.GridServer/OpenGridServices.GridServer.exe.build" target="clean" />
    </target>

    <target name="build" depends="init" description="">
        <nant buildfile="OpenSim.Framework/OpenSim.Framework.dll.build" target="build" />
        <nant buildfile="OpenSim.Framework.Console/OpenSim.Framework.Console.dll.build" target="build" />
        <nant buildfile="Servers/OpenSim.Servers.dll.build" target="build" />
        <nant buildfile="OpenGridServices.GridServer/OpenGridServices.GridServer.exe.build" target="build" />
        <nant buildfile="OpenGridServices.UserServer/OpenGridServices.UserServer.exe.build" target="build" />
        <nant buildfile="OpenSim.Physics/Manager/OpenSim.Physics.Manager.dll.build" target="build" />
        <nant buildfile="OpenGrid.Config/GridConfigDb4o/OpenGrid.Config.GridConfigDb4o.dll.build" target="build" />
        <nant buildfile="OpenUser.Config/UserConfigDb4o/OpenUser.Config.UserConfigDb4o.dll.build" target="build" />
        <nant buildfile="OpenSim.GridInterfaces/Local/OpenSim.GridInterfaces.Local.dll.build" target="build" />
        <nant buildfile="OpenSim.GridInterfaces/Remote/OpenSim.GridInterfaces.Remote.dll.build" target="build" />
        <nant buildfile="OpenSim.Physics/BasicPhysicsPlugin/OpenSim.Physics.BasicPhysicsPlugin.dll.build" target="build" />
        <nant buildfile="OpenSim.Physics/PhysXPlugin/OpenSim.Physics.PhysXPlugin.dll.build" target="build" />
        <nant buildfile="OpenSim.Physics/OdePlugin/OpenSim.Physics.OdePlugin.dll.build" target="build" />
        <nant buildfile="OpenSim.GenericConfig/Xml/OpenSim.GenericConfig.Xml.dll.build" target="build" />
        <nant buildfile="OpenSim.RegionServer/OpenSim.RegionServer.dll.build" target="build" />
        <nant buildfile="OpenSim/OpenSim.exe.build" target="build" />
        <nant buildfile="OpenSim.Storage/LocalStorageDb4o/OpenSim.Storage.LocalStorageDb4o.dll.build" target="build" />
    </target>

    <target name="build-release" depends="Release, init, build" description="Builds in Release mode" />

    <target name="build-debug" depends="Debug, init, build" description="Builds in Debug mode" />

    <target name="package" depends="clean, doc" description="Builds all" />

    <target name="doc" depends="build-release">
        <echo message="Generating all documentation from all builds" />
        <nant buildfile="OpenSim/OpenSim.exe.build" target="doc" />
        <nant buildfile="OpenSim.Physics/OdePlugin/OpenSim.Physics.OdePlugin.dll.build" target="doc" />
        <nant buildfile="OpenSim.Framework.Console/OpenSim.Framework.Console.dll.build" target="doc" />
        <nant buildfile="OpenSim.GenericConfig/Xml/OpenSim.GenericConfig.Xml.dll.build" target="doc" />
        <nant buildfile="OpenSim.Physics/Manager/OpenSim.Physics.Manager.dll.build" target="doc" />
        <nant buildfile="OpenGridServices.UserServer/OpenGridServices.UserServer.exe.build" target="doc" />
        <nant buildfile="OpenSim.Physics/BasicPhysicsPlugin/OpenSim.Physics.BasicPhysicsPlugin.dll.build" target="doc" />
        <nant buildfile="OpenGrid.Config/GridConfigDb4o/OpenGrid.Config.GridConfigDb4o.dll.build" target="doc" />
        <nant buildfile="Servers/OpenSim.Servers.dll.build" target="doc" />
        <nant buildfile="OpenSim.Physics/PhysXPlugin/OpenSim.Physics.PhysXPlugin.dll.build" target="doc" />
        <nant buildfile="OpenSim.GridInterfaces/Remote/OpenSim.GridInterfaces.Remote.dll.build" target="doc" />
        <nant buildfile="OpenSim.Framework/OpenSim.Framework.dll.build" target="doc" />
        <nant buildfile="OpenSim.RegionServer/OpenSim.RegionServer.dll.build" target="doc" />
        <nant buildfile="OpenSim.Storage/LocalStorageDb4o/OpenSim.Storage.LocalStorageDb4o.dll.build" target="doc" />
        <nant buildfile="OpenUser.Config/UserConfigDb4o/OpenUser.Config.UserConfigDb4o.dll.build" target="doc" />
        <nant buildfile="OpenSim.GridInterfaces/Local/OpenSim.GridInterfaces.Local.dll.build" target="doc" />
        <nant buildfile="OpenGridServices.GridServer/OpenGridServices.GridServer.exe.build" target="doc" />
    </target>

</project>