<!--/*******************************************************************************
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
*   Ant naming conventions:
*   - regardless of the actual OS platform,'/' is the directory separator
*     (Ant will convert as appropriate).
*   - multi-word properties use periods '.'
*   - multi-word targets use hyphens '-'
*   - multi-word macros use underscores '_'
*   - multi-word macro attributes are concatenated
*     e.g. 'runpathref'
*   - multi-word tasks (taskdef) names are concatenated
*     e.g. 'validateconnection'
*   - OS environment variables are in ALLCAPS and have 'env' as a prefix
*     e.g. ${env.XXX}.
*   - Ant properties are lower case.
*
* Contributors:
*     tware - initial API and implementation
*     egwin - update to adopt calling standards
*     pkrogh - modified for sigcompare
#******************************************************************************/-->
<project name="eclipselink.utils.sigcompare" default="build" basedir=".">
    <available file="../${ant.project.name}" type="dir" property="sigcompare.is.local"/>
    <!-- Test to make sure that the calling script doesn't inherit the variable -->
    <!-- (should be set locally, and be destroyed upon return) -->
    <fail unless="sigcompare.is.local" message="Not running from '${ant.project.name}' directory"/>

    <!-- properties checked into SVN -->
    <property file="./antbuild.properties"/>

    <!-- versioning -->
    <!-- These variables  are set in autobuild.xml. A manual build gets defaults -->
    <tstamp>
       <format property="build.date" pattern="yyyyMMdd"/>
       <format property="build.time" pattern="HHmm"/>
    </tstamp>
    <property name="build.type" value="SNAPSHOT"/>
    <property name="svn.revision" value="NA"/>
    <property name="version.string" value="${release.version}.qualifier"/>
    <property name="release.designation"  value="EclipseLink DeveloperBuild"/>

    <!-- all -->
    <target name="build" depends="clean, compile, package" description="build sigcompare jar"/>

    <!-- clean -->
    <target name="clean" description="Clean the build">
        <delete includeEmptyDirs="true" failonerror="false">
            <fileset dir="${classes.dir}"/>
            <fileset file="${sig-compare.jar}"/>
        </delete>
    </target>


    <!-- compile -->
    <target name="compile" description="compile sig compare Util">
        <mkdir dir="${classes.dir}"/>
       <!-- Set Compile Path-->
        <path id="sigcompare.compile.path">
            <pathelement path="../../eclipselink.jar"/>
        </path>
        <javac srcdir="${src.dir}"
               destdir="${classes.dir}"
               includes="**/*.java"
               debug="${javac.debug}"
               debuglevel="${javac.debuglevel}"
               encoding="UTF-8"
               optimize="${javac.optimize}"
               source="${javac.version}"
               target="${javac.version}"
               deprecation="${javac.deprecation}"
               classpathref="sigcompare.compile.path"
               failonerror="true">
        </javac>
    </target>

    <!-- package -->
    <target name="package" description="jar the util">
        <jar jarfile="./${sig-compare.jar}">
             <manifest>
                <attribute name="Specification-Title"    value="${sigcompare.util.specification.title}"/>
                <attribute name="Specification-Vendor"   value="${specification.vendor}"/>
                <attribute name="Specification-Version"  value="${release.version}"/>
                <attribute name="Implementation-Title"   value="${sigcompare.util.implementation.title}"/>
                <attribute name="Implementation-Vendor"  value="${implementation.vendor}"/>
                <attribute name="Implementation-Version" value="${version.string}"/>
                <attribute name="Release-Designation"    value="${release.designation}"/>
            </manifest>
            <fileset dir="${classes.dir}">
                <include name="**/*.class"/>
            </fileset>
        </jar>
    </target>

</project>
