<?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., Oracle"/>
    <property name="implementation.vendor" value="Eclipse.org - EclipseLink Project"/>
    <property name="jpaproto.spec.version" value="2.1"/>
    <property name="jpaproto.version"      value="2.0.100"/>
    <property name="jpaproto.bundle.name"  value="Java Persistence API 2.1 prototype"/>
    <!-- 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}"
               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>
