<?xml version="1.0" encoding="ISO-8859-1"?>
<!--

    Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<project name="specialization-test" default="usage" basedir=".">

    <property name="specialization-target" value="all"/>

    <target name="run-test">
        <antcall target="specialization">
        <param name="specialization-target" value="run-test"/>
        </antcall>
    </target>

    <target name="all">
        <antcall target="specialization">
        <param name="specialization-target" value="all"/>
        </antcall>
    </target>

    <target name="clean">
        <antcall target="specialization">
        <param name="specialization-target" value="clean"/>
        </antcall>
    </target>

    <target name="build">
        <antcall target="specialization">
        <param name="specialization-target" value="build"/>
        </antcall>
    </target>

    <target name="setup">
        <antcall target="specialization">
        <param name="specialization-target" value="setup"/>
        </antcall>
    </target>

    <target name="deploy">
        <antcall target="specialization">
        <param name="specialization-target" value="deploy"/>
        </antcall>
    </target>

    <target name="undeploy">
        <antcall target="specialization">
        <param name="specialization-target" value="undeploy"/>
        </antcall>
    </target>

    <target name="unsetup">
        <antcall target="specialization">
        <param name="specialization-target" value="unsetup"/>
        </antcall>
    </target>

    <target name="run">
        <antcall target="specialization">
        <param name="specialization-target" value="run"/>
        </antcall>
    </target>

    <target name="specialization">
        <record name="specialization.output" action="start" />
            <ant dir="alternative-leaks" target="${specialization-target}"/>
            <ant dir="specialization-simple" target="${specialization-target}"/>
        <record name="specialization.output" action="stop" />
    </target>

    <target name="usage">
        <echo> Usage:
                ant all (Executes all the specialization tests)
                ant clean (cleans all the specialization tests)
                ant build (builds all the specialization tests)
                ant setup (sets up all resources for specialization tests)
                ant deploy (deploys all the specialization apps)
                ant run (Executes all the specialization tests)
                ant undeploy (undeploys all the  specialization apps)
                ant unsetup (unsets all resources for specialization tests)
        </echo>
    </target>
</project>
