<?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 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:
*     bdoughan - initial API and implementation
*     egwin - update to adopt calling standards
#******************************************************************************/-->
<project name="org.eclipse.persistence.moxy" default="build" basedir=".">
    <available file="../${ant.project.name}" type="dir" property="moxy.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="moxy.is.local"/>

    <dirname  property="moxy.build.location_temp" file="${ant.file.org.eclipse.persistence.moxy}"/>
    <pathconvert targetos="unix" property="moxy.build.location">
        <path>
            <pathelement location="${moxy.build.location_temp}"/>
        </path>
    </pathconvert>
    <condition property="moxy.2.base.dir" value="../.." else="..">
        <contains string="${moxy.build.location}" substring="moxy/${ant.project.name}"/>
    </condition>
    <echo message="moxy.2.base.dir = '${moxy.2.base.dir}'"/>
    <property name="moxy.2.common.plugins.dir" value="${moxy.2.base.dir}/plugins"/>
    <property name="moxy.2.buildsys.dir" value="${moxy.2.base.dir}/buildsystem"/>

    <!-- 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"/>
    <property file="${moxy.build.location}/antbuild.properties"/>

    <propertyset id="parser.properties">
        <propertyref prefix="javax.xml"/>
    </propertyset>

    <!-- 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} component"/>
    <target name="jar"   depends="bnd-package, package" description="package ${ant.project.name} component"/>

    <!-- clean -->
    <target name="clean" description="Clean all generated content">
        <delete includeEmptyDirs="true" failonerror="false">
            <fileset dir="${classes.dir}"/>
            <fileset dir="${moxy.2.common.plugins.dir}" includes="${ant.project.name}_*.jar, ${ant.project.name}.source_*.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="${moxy.2.base.dir}/../extension.lib.external"
                                                    else="${moxy.build.location}">
            <available file="${moxy.2.base.dir}/../extension.lib.external" type="dir"/>
        </condition>
        <echo message="extensions.depend.dir       = '${extensions.depend.dir}'"/>

        <!-- 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.qualifier"     value="qualifier"/>
        <property name="version.string"        value="${release.version}.${version.qualifier}"/>
        <property name="release.designation"   value="EclipseLink ${release.version} Build"/>
        <property name="specification.vendor"  value="Eclipse.org - EclipseLink Project"/>
        <property name="implementation.vendor" value="${specification.vendor}"/>

        <!-- dependency properties -->
        <property name="core.lib"           value="${moxy.2.common.plugins.dir}/org.eclipse.persistence.core_${version.string}.jar"/>
        <property name="jaxb-api.lib"       value="${moxy.2.common.plugins.dir}/${jaxb-api.jar}"/>
        <property name="jaxb-xjc.lib"       value="${moxy.2.common.plugins.dir}/${jaxb-xjc.jar}"/>
        <property name="jaxb-impl.lib"      value="${moxy.2.common.plugins.dir}/${jaxb-impl.jar}"/>

        <!-- dependency tests -->
        <available file="${core.lib}"                  property="core.bundle.exist"/>
        <fail message="Cannot find core: '${core.lib}'"     unless="core.bundle.exist"/>
        <available file="${jaxb-api.lib}"              property="jaxb-api.bundle.exist"/>
        <fail message="Cannot find jaxb-api: '${jaxb-api.lib}'" unless="jaxb-api.bundle.exist"/>
        <available file="${jaxb-xjc.lib}"              property="jaxb-xjc.bundle.exist"/>
        <fail message="Cannot find jaxb-xjc: '${jaxb-xjc.lib}'" unless="jaxb-xjc.bundle.exist"/>
        <available file="${jaxb-impl.lib}"             property="jaxb-impl.bundle.exist"/>
        <fail message="Cannot find jaxb-impl: '${jaxb-impl.lib}'" unless="jaxb-impl.bundle.exist"/>

        <!-- Set Compile Path-->
        <path id="moxy.compile.path">
            <pathelement path="${jaxb-api.lib}"/>
            <pathelement path="${moxy.2.common.plugins.dir}/${asm}"/>
            <pathelement path="${jaxb-xjc.lib}"/>
            <pathelement path="${jaxb-impl.lib}"/>
            <pathelement path="${core.lib}"/>
            <fileset
                dir="${moxy.2.common.plugins.dir}"
                includes="${moxy.global.depend}"/>
        </path>

        <!-- Check for BND library -->
        <property name="nobndtool.manifest.dir"      value="${moxy.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="${moxy.2.buildsys.dir}/${bndtool.jar}">
            <available file="${moxy.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:    '${moxy.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="org/eclipse/persistence/**/*.java"
               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="moxy.compile.path"
        />
    </target>

    <!-- package -->
    <target name="package" if="nobnd" depends="init" description="jar OSGI bundle">
        <jar jarfile="${moxy.2.common.plugins.dir}/${ant.project.name}_${version.string}.jar" manifest="${nobndtool.manifest.dir}/MANIFEST.MF">
            <fileset dir="${moxy.2.base.dir}">
                <include name="about.html"/>
                <include name="readme.html"/>
                <include name="license.*"/>
            </fileset>
            <fileset dir="${classes.dir}">
                <include name="org/eclipse/persistence/**/*.class"/>
            </fileset>
            <fileset dir="${resource.dir}">
                <include name="META-INF/services/*"/>
                <include name="org/eclipse/persistence/**/*.xsd"/>
            </fileset>
        </jar>
        <jar jarfile="${moxy.2.common.plugins.dir}/${ant.project.name}.source_${version.string}.jar">
             <manifest>
                <attribute name="Specification-Vendor"   value="${specification.vendor}"/>
                <attribute name="Specification-Version"  value="${release.version}"/>
                <attribute name="Implementation-Vendor"  value="${implementation.vendor}"/>
                <attribute name="Implementation-Version" value="${version.string}"/>
                <attribute name="Bundle-ManifestVersion" value="2"/>
                <attribute name="Bundle-Name"            value="EclipseLink MOXY Source"/>
                <attribute name="Bundle-SymbolicName"    value="${ant.project.name}.source"/>
                <attribute name="Bundle-Vendor"          value="${implementation.vendor}"/>
                <attribute name="Bundle-Version"         value="${version.string}"/>
                <attribute name="Eclipse-SourceBundle"   value="${ant.project.name};version=&quot;${version.string}&quot;"/>
            </manifest>
            <fileset dir="${moxy.2.base.dir}">
                <include name="about.html"/>
                <include name="readme.html"/>
                <include name="license.*"/>
            </fileset>
            <fileset dir="${src.dir}">
                <include name="org/eclipse/persistence/**/*.java"/>
            </fileset>
            <fileset dir="${resource.dir}">
                <include name="org/eclipse/persistence/**/*.xsd"/>
            </fileset>
        </jar>
    </target>

    <target name="bnd-package" if="bnd.bld" depends="init">
        <taskdef resource="aQute/bnd/ant/taskdef.properties" classpath="${bndtool.lib}"/>
        <bnd
            classpath="${classes.dir}"
            eclipse="false"
            sourcepath="${src.dir}"
            failok="false"
            exceptions="true"
            files="./org.eclipse.persistence.moxy.bnd"
            output="${moxy.2.common.plugins.dir}/${ant.project.name}_${version.string}.jar"/>
        <jar jarfile="${moxy.2.common.plugins.dir}/${ant.project.name}.source_${version.string}.jar">
             <manifest>
                <attribute name="Specification-Vendor"   value="${specification.vendor}"/>
                <attribute name="Specification-Version"  value="${release.version}"/>
                <attribute name="Implementation-Vendor"  value="${implementation.vendor}"/>
                <attribute name="Implementation-Version" value="${version.string}"/>
                <attribute name="Bundle-ManifestVersion" value="2"/>
                <attribute name="Bundle-Name"            value="EclipseLink MOXY Source"/>
                <attribute name="Bundle-SymbolicName"    value="${ant.project.name}.source"/>
                <attribute name="Bundle-Vendor"          value="${implementation.vendor}"/>
                <attribute name="Bundle-Version"         value="${version.string}"/>
                <attribute name="Eclipse-SourceBundle"   value="${ant.project.name};version=&quot;${version.string}&quot;"/>
            </manifest>
            <fileset dir="${moxy.2.base.dir}">
                <include name="about.html"/>
                <include name="readme.html"/>
                <include name="license.*"/>
            </fileset>
            <fileset dir="${src.dir}">
                <include name="org/eclipse/persistence/**/*.java"/>
            </fileset>
            <fileset dir="${resource.dir}">
                <include name="org/eclipse/persistence/**/*.xsd"/>
            </fileset>
        </jar>
    </target>

    <target name="bnd-deps" if="bnd.bld" depends="init" description="take existing source and classes from checked in bundles, and repackage with new manifest">
        <taskdef resource="aQute/bnd/ant/taskdef.properties" classpath="${bnd.path}"/>
        <bnd
            classpath="${moxy.2.common.plugins.dir}/${jaxb-api.jar}"
            eclipse="false"
            sourcepath="${moxy.2.common.plugins.dir}/${jaxb-api.src.jar}"
            failok="false"
            exceptions="true"
            files="./javax.xml.bind.bnd"
            output="${moxy.2.common.plugins.dir}/javax.xml.bind_2.2.0.v${build.date}${build.time}.jar"/>
        <copy file="${moxy.2.common.plugins.dir}/${jaxb-api.src.jar}" tofile="${moxy.2.common.plugins.dir}/javax.xml.bind.source_2.2.0.v${build.date}${build.time}.jar" failonerror="false"/>
    </target>
</project>