<?xml version="1.0"?>
<!--/*******************************************************************************
* 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 '.'
*     - properties ending in .jar define jarfile names only (no path)
*     - properties ending in .lib are fully qualified jars (path and filename)
*     - properties ending in .dir are directory paths
*     - properties ending in .path are path refid names (classpath fragments)
*   - multi-word targets use hyphens '-'
*     - targets beginning with test- are reserved for high level test targets,
*       and are used in test results parsing
*     - targets typically use the form <action>-<object>-<type> (ie. package-bundle-zip)
*   - multi-word macros use underscores '_'
*   - multi-word macro attributes are concatinated
*     e.g. 'runpathref'
*   - multi-word tasks (taskdef) names are concatinated
*     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:
*     egwin - initial API and implementation
#******************************************************************************/-->
<project name="javax.persistence" default="build" basedir=".">
    <available file="../${ant.project.name}" type="dir" property="jpaproto.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 message="Not running from '${ant.project.name}' directory" unless="jpaproto.is.local"/>

    <dirname  property="jpaproto.build.location_temp" file="${ant.file.javax.persistence}"/>
    <pathconvert targetos="unix" property="jpaproto.build.location">
        <path>
            <pathelement location="${jpaproto.build.location_temp}"/>
        </path>
    </pathconvert>
    <condition property="jpaproto.2.base.dir" value="../../.." else="..">
        <contains string="${jpaproto.build.location}" substring="jpa"/>
    </condition>
    <property name="jpaproto.2.common.plugins.dir" value="${jpaproto.2.base.dir}/plugins"/>
    <property name="jpaproto.2.buildsys.dir" value="${jpaproto.2.base.dir}/buildsystem"/>

    <!-- Properties usually defined in build.properties, set here to avoid easy redefinition. -->
    <!-- Persistence Version properties -->
    <tstamp>
       <format property="jpaproto.build.date" pattern="yyyyMMdd"/>
       <format property="jpaproto.build.time" pattern="HHmm"/>
    </tstamp>
    <property name="jpaproto.qualifier"             value="v${jpaproto.build.date}${jpaproto.build.time}"/>
    <property name="jpaproto.spec.vendor"           value="Sun Microsystems Inc."/>
    <property name="implementation.vendor"          value="Eclipse.org - EclipseLink Project"/>
    <property name="jpaproto.spec.version"          value="2.0"/>
    <property name="jpaproto.version"               value="2.0.6"/>
    <property name="jpaproto.osgi.service.version"  value="1.0.0"/>
    <property name="jpaproto.bundle.name"           value="Java Persistence API 2.0"/>
    <!-- Project infrastructure properties -->
    <property name="src.dir"                        value="src"/>
    <property name="package.dir"                    value=".."/>
    <property name="classes.dir"                    value="classes"/>
    <property name="jpaproto.resource.dir"          value="META-INF"/>
    <property name="jpaproto.jar"                   value="${ant.project.name}_${jpaproto.version}.${jpaproto.qualifier}.jar"/>
    <property name="jpaproto.src.jar"               value="${ant.project.name}.source_${jpaproto.version}.${jpaproto.qualifier}.jar"/>

    <!-- local property overrides -->
    <condition property="custom.properties.message" value="Loading ${user.home}/build.properties..."
                                                     else="Custom properties file '${user.home}/build.properties' not found to load.">
        <available file="${user.home}/build.properties"/>
    </condition>
    <echo message="${custom.properties.message}"/>
    <property file="${user.home}/build.properties"/>

    <!-- Defaults, set var in ${user.home}/build.properties if different version required -->
    <property name="bndtool.jar" value="bnd-0.0.366.jar"/>

    <!-- Primary Targets -->
    <target name="build" depends="clean, compile, jar" description="build ${ant.project.name}_${jpaproto.version} component"/>
    <target name="jar"   depends="bnd-package, package" description="package ${ant.project.name} component"/>

    <!-- clean -->
    <target name="clean" description="Clean all generated content">
        <delete dir="${classes.dir}" includeEmptyDirs="true" failonerror="false" quiet="true"/>
        <!-- Remove Build artifacts, and potential "confict" files  from check-out -->
        <delete failonerror="false" quiet="true">
            <fileset dir="${package.dir}" includes="${jpaproto.jar}*"/>
        </delete>
        <delete failonerror="false" quiet="true">
            <fileset dir="${package.dir}" includes="${jpaproto.src.jar}*"/>
        </delete>
    </target>

    <!-- initialize varables and paths needed for compile -->
    <!-- the number of properties needed now is too great for lazy loading without a target -->
    <target name="init">
        <!-- This HAS to be defined after allowing user redefinitions (which will cause the condition not to set anything) -->
        <!-- This tests to make sure the extensions dir exists, if not sets to a existant dummy location -->
        <condition property="extensions.depend.dir" value="${jpaproto.2.base.dir}/../extension.lib.external"
                                                    else="${jpaproto.build.location}">
            <available file="${jpaproto.2.base.dir}/../extension.lib.external" type="dir"/>
        </condition>
        <echo message="extensions.depend.dir        = '${extensions.depend.dir}'"/>

        <!-- Compiler flag properties -->
        <property name="javac.debug"           value="true"/>
        <property name="javac.optimize"        value="off"/>
        <property name="javac.deprecation"     value="off"/>
        <property name="javac.version"         value="1.5"/>

        <!-- Set Compile Path-->
        <path id="jpaproto.compile.path">
            <pathelement path="${jpaproto.2.common.plugins.dir}/osgi.core.zip"/>
            <pathelement path="${jpaproto.2.common.plugins.dir}/osgi.cmpn_4.1.0.jar"/>
        </path>

        <!-- Check for BND library -->
        <property name="nobndtool.manifest.dir"      value="${jpaproto.build.location}/META-INF"/>
        <condition property="bndtool.lib" value="${extensions.depend.dir}/${bndtool.jar}">
            <available file="${extensions.depend.dir}/${bndtool.jar}"/>
        </condition>
        <condition property="bndtool.lib" value="${jpaproto.2.buildsys.dir}/${bndtool.jar}">
            <available file="${jpaproto.2.buildsys.dir}/${bndtool.jar}"/>
        </condition>
        <echo message="bndtool.lib                     = '${bndtool.lib}'"/>
        <condition property="bld">
            <or>
                <isset property="bndtool.lib"/>
                <isset property="nobnd"/>
            </or>
        </condition>
        <condition property="bnd.bld">
            <and>
                <isset property="bndtool.lib"/>
                <not>  <isset property="nobnd"/> </not>
            </and>
        </condition>
    </target>

    <target name="fail-on-no-bnd" unless="bld">
        <echo message="BND tool (${bndtool.jar}) not found in either:"/>
        <echo message="    the extensions.depend.dir: '${extensions.depend.dir}'"/>
        <echo message="    or the buildsystem dir:    '${jpaproto.2.buildsys.dir}'"/>
        <echo message=""/>
        <echo message="if you have a different version, you can define a different"/>
        <echo message="jarname by adding 'bndtool.jar=bnd-{version}.jar to your'"/>
        <echo message="${user.home}/build.properties file."/>
        <echo message=""/>
        <echo message="You can download BND from http://www.aqute.biz/Code/Download"/>
        <echo message=""/>
        <echo message="or if you really need to build NOW, you can use '-Dnobnd=true'"/>
        <echo message="on the ant command-line. However, the manifests used will be those"/>
        <echo message="checked-in for development, and will likely have errors."/>
        <fail message="Missing BND library!"/>
    </target>

    <!-- compile -->
    <target name="compile" depends="init, fail-on-no-bnd" description="Compile bundle code">
        <mkdir dir="${classes.dir}"/>
        <javac srcdir="${src.dir}"
               destdir="${classes.dir}"
               includes="**"
               debug="${javac.debug}"
               debuglevel="${javac.debuglevel}"
               encoding="UTF-8"
               optimize="${javac.optimize}"
               source="${javac.version}"
               target="${javac.version}"
               deprecation="${javac.deprecation}"
               failonerror="true"
               memoryMaximumSize="512m"
               fork="true"
               classpathref="jpaproto.compile.path"
        />
    </target>

    <!-- package -->
    <target name="package-src" depends="init" description="jar OSGI bundle">
        <jar jarfile="${package.dir}/${jpaproto.src.jar}" duplicate="preserve">
            <manifest>
                <attribute name="Specification-Vendor"   value="${jpaproto.spec.vendor}"/>
                <attribute name="Specification-Version"  value="${jpaproto.spec.version}"/>
                <attribute name="Implementation-Vendor"  value="${implementation.vendor}"/>
                <attribute name="Implementation-Version" value="${jpaproto.version}"/>
                <attribute name="Bundle-ManifestVersion" value="2"/>
                <attribute name="Bundle-Name"            value="${jpaproto.bundle.name} Source"/>
                <attribute name="Bundle-SymbolicName"    value="javax.persistence.source"/>
                <attribute name="Bundle-Vendor"          value="${implementation.vendor}"/>
                <attribute name="Bundle-Version"         value="${jpaproto.version}.${jpaproto.qualifier}"/>
                <attribute name="Eclipse-SourceBundle"   value="javax.persistence;version=&quot;${jpaproto.version}.${jpaproto.qualifier}&quot;"/>
            </manifest>
            <fileset dir="${jpaproto.2.base.dir}">
                <include name="about.html"/>
                <include name="readme.html"/>
                <include name="license.*"/>
            </fileset>
            <fileset dir="."
                includes="readme.txt"
            />
            <fileset dir="${src.dir}"
                includes="**"
            />
        </jar>
    </target>

    <target name="package" if="nobnd" depends="init, package-src" description="jar OSGI bundle">
        <jar jarfile="${package.dir}/${jpaproto.jar}" duplicate="preserve" manifest="${nobndtool.manifest.dir}/MANIFEST.MF">
            <fileset dir="${jpaproto.2.base.dir}">
                <include name="about.html"/>
                <include name="readme.html"/>
                <include name="license.*"/>
            </fileset>
            <fileset dir="."
                includes="readme.txt"
            />
            <fileset dir="${src.dir}"
                includes="**/*.xsd"
            />
            <fileset dir="${classes.dir}"
                includes="**/*.class"
            />
        </jar>
    </target>

    <target name="bnd-package" if="bnd.bld" depends="init, package-src">
        <taskdef resource="aQute/bnd/ant/taskdef.properties" classpath="${bndtool.lib}"/>
        <bnd
            classpath="${classes.dir}"
            eclipse="false"
            sourcepath="${src.dir}"
            failok="false"
            exceptions="true"
            files="./javax.persistence.bnd"
            output="${package.dir}/${jpaproto.jar}"/>
    </target>
</project>
