<!--
 Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.

 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
 are met:

   - Redistributions of source code must retain the above copyright
     notice, this list of conditions and the following disclaimer.

   - Redistributions in binary form must reproduce the above copyright
     notice, this list of conditions and the following disclaimer in the
     documentation and/or other materials provided with the distribution.

   - Neither the name of Sun Microsystems nor the names of its
     contributors may be used to endorse or promote products derived
     from this software without specific prior written permission.

 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
 IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->

<project name="awt2d" default="build" basedir=".">
    <description>
        JDK: AWT &amp; Java2D Ant build file
    </description>

    <import file="../common/shared.xml"/>

    <target name="-build-make" depends="-make.init,-build-make-unix,-build-make-windows" if="use.make"/>

    <target name="-build-make-unix" depends="-make.init" if="osfamily.unix">
        <make-run target="all" dir="${make.dir}/java/awt"/>
        <make-run target="all" dir="${make.dir}/sun/dcpr"/>
        <make-run target="all" dir="${make.dir}/sun/image"/>
        <make-run target="all" dir="${make.dir}/sun/awt"/>
        <make-run target="all" dir="${make.dir}/sun/splashscreen"/>
        <make-run target="all" dir="${make.dir}/sun/xawt"/>
        <make-run target="all" dir="${make.dir}/sun/headless"/>
        <make-run target="all" dir="${make.dir}/sun/font"/>
        <make-run target="all" dir="${make.dir}/sun/jpeg"/>
        <make-run target="all" dir="${make.dir}/sun/cmm"/>
        <make-run target="all" dir="${make.dir}/sun/jawt"/>
        <make-run target="all" dir="${make.dir}/sun/text"/>
        <make-run target="all" dir="${make.dir}/com/sun/image"/>
        <make-run target="all" dir="${make.dir}/com/sun/java2d"/>
    </target>

    <target name="-build-make-windows" depends="-make.init" if="os.windows">
        <make-run target="all" dir="${make.dir}/java/awt"/>
        <make-run target="all" dir="${make.dir}/sun/dcpr"/>
        <make-run target="all" dir="${make.dir}/sun/awt"/>
        <make-run target="all" dir="${make.dir}/sun/splashscreen"/>
        <make-run target="all" dir="${make.dir}/sun/font"/>
        <make-run target="all" dir="${make.dir}/sun/jpeg"/>
        <make-run target="all" dir="${make.dir}/sun/cmm"/>
        <make-run target="all" dir="${make.dir}/sun/jawt"/>
        <make-run target="all" dir="${make.dir}/sun/text"/>
        <make-run target="all" dir="${make.dir}/com/sun/image"/>
        <make-run target="all" dir="${make.dir}/com/sun/java2d"/>
    </target>

    <target name="-clean-make" depends="-make.init,-clean-docs-tests" if="use.make">
        <make-run target="clean" dir="${make.dir}/java/awt"/>
        <make-run target="clean" dir="${make.dir}/sun/dcpr"/>
        <make-run target="clean" dir="${make.dir}/sun/image"/>
        <make-run target="clean" dir="${make.dir}/sun/awt"/>
        <make-run target="clean" dir="${make.dir}/sun/splashscreen"/>
        <make-run target="clean" dir="${make.dir}/sun/xawt"/>
        <make-run target="clean" dir="${make.dir}/sun/font"/>
        <make-run target="clean" dir="${make.dir}/sun/jpeg"/>
        <make-run target="clean" dir="${make.dir}/sun/cmm"/>
        <make-run target="clean" dir="${make.dir}/sun/jawt"/>
        <make-run target="clean" dir="${make.dir}/sun/text"/>
        <make-run target="clean" dir="${make.dir}/com/sun/image"/>
        <make-run target="clean" dir="${make.dir}/com/sun/java2d"/>
        <make-run target="clean" dir="${make.dir}/mkdemo/jfc"/>
    </target>
    
    <target name="run" depends="-make.init">
        <make-run target="all" dir="${make.dir}/mkdemo/jfc"/>
        <property name="jvm.args" value=""/>
        <java jar="${build.dir}/demo/jfc/Font2DTest/Font2DTest.jar"
            fork="true"
            classpath="${classes.dir}:${bootstrap.jdk}/jre/lib/rt.jar">
            <jvmarg line="${jvm.args}"/>
        </java>
     </target>


</project>
