<?xml version="1.0" standalone='yes'?>

  <project name="Jackson JSON processor" basedir="." default="readme">

    <!-- Source directories -->
    <property name="dir.src" location="${basedir}/src" />
    <property name="dir.src.java.core" location="${dir.src}/java" />
    <property name="dir.src.java.mapper" location="${dir.src}/mapper/java" />
    <property name="dir.src.java.jaxrs" location="${dir.src}/jaxrs/java" />
    <property name="dir.src.java.xc" location="${dir.src}/xc/java" />
    <property name="dir.src.java.smile" location="${dir.src}/smile/java" />
    <property name="dir.src.java.mrbean" location="${dir.src}/mrbean/java" />
    <property name="dir.src.resource.jaxrs" location="${dir.src}/jaxrs/resources" />
    <property name="dir.src.maven" location="${dir.src}/maven" />
    <property name="dir.src.sample" location="${dir.src}/sample" />
    <property name="dir.src.tools" location="${dir.src}/tools" />
    <property name="dir.releasenotes" location="${basedir}/release-notes" />

    <!-- Libs -->
    <property name="dir.lib" location="${basedir}/lib" />
    <!-- Build-related -->
    <property name="dir.build" location="${basedir}/build" />
    <property name="dir.build.classes.core" location="${dir.build}/classes/core" />
    <property name="dir.build.classes.mapper" location="${dir.build}/classes/mapper" />
    <property name="dir.build.classes.jaxrs" location="${dir.build}/classes/jaxrs" />
    <property name="dir.build.classes.xc" location="${dir.build}/classes/xc" />
    <property name="dir.build.classes.smile" location="${dir.build}/classes/smile" />
    <property name="dir.build.classes.mrbean" location="${dir.build}/classes/mrbean" />
    <!-- both "sample" and "tools" java code goes under "extra" -->
    <property name="dir.build.classes.extra" location="${dir.build}/classes/extra" />

    <!-- Documentation -->
    <property name="dir.doc" location="${basedir}/doc" />
    <property name="dir.javadoc" location="${dir.build}/javadoc" />

    <!-- Distribution -->
    <property name="dir.dist" location="${basedir}/dist" />
    <property name="dir.snapshot" location="${basedir}/build/snapshot" />

    <!-- Version information -->

    <!-- Version -->
    <property name="JSON_TITLE" value="JSON - JavaScript Object Notation" />
    <property name="JSON_VERSION" value="1.0" />
    <property name="JSON_VENDOR" value="http://www.ietf.org/rfc/rfc4627.txt" />
    <property name="IMPL_TITLE_CORE" value="Jackson JSON processor" />
    <property name="IMPL_TITLE_MAPPER" value="Data mapper for Jackson JSON processor" />
    <property name="IMPL_TITLE_JAXRS" value="JAX-RS provider for JSON content type, using Jackson data binding" />
    <property name="IMPL_TITLE_XC" value="XML Compatibility extensions for Jackson data binding" />
    <property name="IMPL_TITLE_SMILE" value="Jackson Binary format (aka Smile) handling functionality" />
    <property name="IMPL_TITLE_MRBEAN" value="Jackson Bean Materializer (aka Mr. Bean)" />

    <property name="IMPL_VERSION" value="1.9.11" />
    <property name="IMPL_VENDOR" value="http://fasterxml.com" />

    <patternset id="dist-all-source-files">
          <include name="README.txt" />
          <include name="ant/build*.xml" />
          <include name="build.xml" />
          <include name="release-notes/*" />
          <include name="DEV/contributor*" />
          <include name="src/**/*.java" />
          <include name="src/VERSION.txt" />
          <include name="src/java/**/*.html" />
          <include name="src/maven/*.pom" />
          <include name="release-notes/*" />
          <include name="release-notes/asl/*" />
          <include name="release-notes/lgpl/*" />
          <!-- need jars for auxiliary tasks (tests), although jackson
               itself does not depend on any other packages, just JDK 1.5
            -->
          <include name="lib/**/*.jar" />
          <include name="samples/**/*.jsn" />
    </patternset>

    <!-- some build tasks are refactored out of the main task -->
    <import file="ant/build-osgi.xml" />
    <import file="ant/build-maven-deploy.xml" />
    <import file="ant/build-coverage.xml" />
    <import file="ant/build-test.xml" />
    <import file="ant/build-mini.xml" />

    <!--*********************************************************************-->
    <!-- The readme target shows a brief description of all targets          -->
    <!-- supported by this ant build file                                    -->
    <!--*********************************************************************-->
    <target name="readme">
        <echo message = "${ant.project.name}'s Available Targets" />
        <echo message = "---------------------------------------------------" />
        <echo message = "1)  readme - Displays this information (default target)." />
        <echo message = "2)  clean - Remove any generated files/directories." />
        <echo message = "3)  build - Compile all code, run unit tests" />
        <echo message = "4)  jars - Compile and create all jars for non-test ${ant.project.name} code" />
        <echo message = "5)  javadoc - Generate ${ant.project.name} code documentation." />
        <echo message = "6)  test - Run JUnit tests." />
        <echo message = "7)  dist - Create distribution directory and copy necessary files there" />
        <echo message = "8) all - Run clean, compile, test, javadoc," />
        <echo message = "         and dist targets." />  
        <echo message = "" />
        <echo message = "Available command-line arguments:" />
        <echo message = "---------------------------------" />
        <echo message = "none" />
    </target>

    <target name="prepare">
        <!-- make build directories -->
        <mkdir dir="${dir.build}" />
        <mkdir dir="${dir.build.classes.core}" />
        <mkdir dir="${dir.build.classes.mapper}" />
        <mkdir dir="${dir.build.classes.jaxrs}" />
        <mkdir dir="${dir.build.classes.xc}" />
        <mkdir dir="${dir.build.classes.smile}" />
        <mkdir dir="${dir.build.classes.mrbean}" />
        <mkdir dir="${dir.build.classes.extra}" />

        <!-- make docs directories -->
        <mkdir dir="${dir.doc}" />
        <mkdir dir="${dir.javadoc}" />

        <!-- and finally distribution dir -->
        <mkdir dir="${dir.dist}" />
        <mkdir dir="${dir.snapshot}" />
    	<!-- 1.6.0: also add VERSION marker file -->
        <copy todir="${dir.build}">
            <fileset dir="${dir.src}" includes="VERSION.txt" />
            <filterset>
                <filter token="VERSION" value="${IMPL_VERSION}" />
            </filterset>
        </copy>

    </target>

    <!-- ***********************************************
       - supporting dummy tasks
       - ***********************************************-->


    <!-- ***********************************************
       - clean - Removes all generated files/directories
       - ***********************************************-->

    <target name="clean">
        <delete dir="${dir.build}"/>
        <delete dir="${dir.doc}"/>
        <delete dir="${dir.test}"/>
        <delete dir="${dir.dist}"/>
        <delete file="cobertura.ser" />
    </target>

    <target name="build" depends="compile, all-tests" />

    <target name="compile" depends="compile.all" />
    <target name="compile.all" depends="
compile.main, test.compile, compile.extra, compile.perf" />
    <target name="compile.main"
      depends="compile.core, compile.mapper, compile.jaxrs, compile.xc,
compile.smile, compile.mrbean" />

    <target name="compile.core" depends="prepare">
        <javac srcdir="${dir.src.java.core}" destdir="${dir.build.classes.core}"
            source="1.5" target="1.5"
            debug="true" includeantruntime="false"
        >
            <compilerarg value="-Xlint:unchecked" />
            <exclude name="**/package-info.java" />
            <include name="org/codehaus/**/*.java" />
        </javac>
    	<!-- 1.6, [JACKSON-278]: need to copy VERSION info along (so unit tests see it) -->
        <copy file="${dir.build}/VERSION.txt" toDir="${dir.build.classes.core}/org/codehaus/jackson/impl" />
    </target>

    <target name="compile.mapper" depends="compile.core">
        <javac srcdir="${dir.src.java.mapper}" destdir="${dir.build.classes.mapper}"
            source="1.5" target="1.5"
            debug="true" includeantruntime="false"
        >
            <compilerarg value="-Xlint:unchecked" />
            <exclude name="**/package-info.java" />
            <include name="org/codehaus/jackson/**/*.java" />
            <!-- mapper builds on core classes -->
            <classpath>
               <pathelement path="${dir.build.classes.core}"/>  
               <!-- We support some ext libs (like Joda time) -->
               <fileset dir="${dir.lib}/ext">
                    <include name="*.jar" />
               </fileset>
            </classpath>
        </javac>
    	<!-- 1.6, [JACKSON-278]: need to copy VERSION info along (so unit tests see it) -->
        <copy file="${dir.build}/VERSION.txt" toDir="${dir.build.classes.mapper}/org/codehaus/jackson/map" />
    </target>

    <target name="compile.xc" depends="compile.mapper">
        <javac srcdir="${dir.src.java.xc}" destdir="${dir.build.classes.xc}"
            source="1.5" target="1.5"
            debug="true" includeantruntime="false"
        >
            <compilerarg value="-Xlint:unchecked" />
            <exclude name="**/package-info.java" />
            <include name="org/codehaus/jackson/**/*.java" />
            <!-- builds on core and mapper classes -->
            <classpath>
               <pathelement path="${dir.build.classes.core}"/>  
               <pathelement path="${dir.build.classes.mapper}"/>  
               <!-- For JDK 1.5 build, need JAXB API -->
               <fileset dir="${dir.lib}/jaxb">
                    <include name="*.jar" />
               </fileset>
            </classpath>
        </javac>
    	<!-- 1.6, [JACKSON-278]: need to copy VERSION info along (so unit tests see it) -->
        <copy file="${dir.build}/VERSION.txt" toDir="${dir.build.classes.xc}/org/codehaus/jackson/xc" />
        <copy file="${dir.build}/VERSION.txt" toDir="${dir.build.classes.xc}/org/codehaus/jackson/xml" />
    </target>

    <target name="compile.jaxrs" depends="compile.mapper,compile.xc">
        <javac srcdir="${dir.src.java.jaxrs}" destdir="${dir.build.classes.jaxrs}"
            source="1.5" target="1.5"
            debug="true" includeantruntime="false"
        >
            <compilerarg value="-Xlint:unchecked" />
            <exclude name="**/package-info.java" />
            <include name="org/codehaus/jackson/**/*.java" />
            <!-- builds on core and mapper classes -->
            <classpath>
               <fileset dir="${dir.lib}/jaxrs">
                    <include name="*.jar" />
               </fileset>
               <pathelement path="${dir.build.classes.core}"/>  
               <pathelement path="${dir.build.classes.mapper}"/>  
               <!-- this is optional dependency, but needed for compilation -->
               <pathelement path="${dir.build.classes.xc}"/>
            </classpath>
        </javac>
    	<!-- 1.6, [JACKSON-278]: need to copy VERSION info along (so unit tests see it) -->
        <copy file="${dir.build}/VERSION.txt" toDir="${dir.build.classes.jaxrs}/org/codehaus/jackson/jaxrs" />
    </target>

    <target name="compile.smile" depends="compile.core">
        <javac srcdir="${dir.src.java.smile}" destdir="${dir.build.classes.smile}"
            source="1.5" target="1.5"
            debug="true" includeantruntime="false"
        >
            <compilerarg value="-Xlint:unchecked" />
            <exclude name="**/package-info.java" />
            <include name="org/codehaus/jackson/smile/**/*.java" />
            <!-- builds on core classes -->
            <classpath>
               <pathelement path="${dir.build.classes.core}"/>  
            </classpath>
        </javac>
    	<!-- 1.6, [JACKSON-278]: need to copy VERSION info along (so unit tests see it) -->
        <copy file="${dir.build}/VERSION.txt" toDir="${dir.build.classes.smile}/org/codehaus/jackson/smile" />
    </target>

    <target name="compile.mrbean" depends="compile.core">
        <javac srcdir="${dir.src.java.mrbean}" destdir="${dir.build.classes.mrbean}"
            source="1.5" target="1.5"
            debug="true" includeantruntime="false"
        >
            <compilerarg value="-Xlint:unchecked" />
            <exclude name="**/package-info.java" />
            <include name="org/codehaus/jackson/mrbean/**/*.java" />
            <!-- builds on core and mapper classes -->
            <classpath>
               <pathelement path="${dir.build.classes.core}"/>  
               <pathelement path="${dir.build.classes.mapper}"/>  
               <fileset dir="${dir.lib}/repackaged">
                    <include name="jackson-asm*.jar" />
               </fileset>
            </classpath>
        	<!-- 1.6, [JACKSON-278]: need to copy VERSION info along (so unit tests see it) -->
        </javac>
        <copy file="${dir.build}/VERSION.txt" toDir="${dir.build.classes.mrbean}/org/codehaus/jackson/mrbean" />
        <!-- also, unpack classes from repackaged asm jar, for OSGi bundle -->
        <unjar dest="${dir.build.classes.mrbean}">
          <fileset dir="${dir.lib}/repackaged">
            <include name="jackson-asm*.jar" />
          </fileset>
        </unjar>
    </target>

    <target name="compile.extra" depends="compile.main">
        <javac destdir="${dir.build.classes.extra}"
            source="1.5" target="1.5"
            debug="true" includeantruntime="false"
        >
            <compilerarg value="-Xlint:unchecked" />
            <src path="${dir.src.sample}" /> 
            <src path="${dir.src.tools}" /> 
            <include name="**/*.java" />
            <!-- need core and mapper classes -->
            <classpath>
               <pathelement path="${dir.build.classes.core}"/>
               <pathelement path="${dir.build.classes.mapper}"/>
               <pathelement path="${dir.build.classes.smile}"/>
            </classpath>
        </javac>
    </target>

    <target name="compile.perf" depends="compile.main">
      <mkdir dir="${dir.build.classes.perf}" />
        <!-- Let's also compile micro-benchmarks... -->
        <javac srcdir="${dir.src}/perf" destdir="${dir.build.classes.perf}"
            debug="true" includeantruntime="false"
        >
            <classpath>
               <fileset dir="${dir.lib}/perf">
                    <include name="*.jar" />
               </fileset>
               <pathelement path="${dir.build.classes.core}"/>  
               <pathelement path="${dir.build.classes.mapper}"/>  
               <pathelement path="${dir.build.classes.smile}"/>  
               <pathelement path="${dir.build.classes.xc}"/>
            </classpath>
            <include name="perf/**/*.java" />
        </javac>
    </target>

    <!-- Dummy target that just includes all individual jars... --> 
    <target name="jars" depends="jars.asl, jars.lgpl, jars.other, jar.all, jars.tools, jar.mini" />

    <target name="javadoc" depends="compile.all">
        <!-- Build a dirpath that contains just the "source" tree -->
        <javadoc windowtitle="Jackson JSON Processor"
            destdir="${dir.javadoc}" 
            author="true" version="true" use="true">

            <classpath>
               <fileset dir="${dir.lib}/jaxrs">
                    <include name="*.jar" />
               </fileset>
            </classpath>

            <packageset dir="${dir.src.java.core}" defaultexcludes="yes">
                <include name="org/codehaus/**" />
            </packageset>
            <packageset dir="${dir.src.java.mapper}" defaultexcludes="yes">
                <include name="org/codehaus/**" />
            </packageset>
            <packageset dir="${dir.src.java.jaxrs}" defaultexcludes="yes">
                <include name="org/codehaus/jackson/jaxrs/**" />
            </packageset>
            <packageset dir="${dir.src.java.xc}" defaultexcludes="yes">
                <include name="org/codehaus/jackson/xc/**" />
                <include name="org/codehaus/jackson/xml/**" />
            </packageset>
            <packageset dir="${dir.src.java.smile}" defaultexcludes="yes">
                <include name="org/codehaus/jackson/smile/**" />
            </packageset>
            <packageset dir="${dir.src.java.mrbean}" defaultexcludes="yes">
                <include name="org/codehaus/jackson/mrbean/**" />
            </packageset>

        	<!-- External JavaDocs to link: -->
        	
            <!-- Joda time... -->
            <link href="http://joda-time.sourceforge.net/api-release" />
            <!-- Regular JDK 6 classes  -->
            <link href="http://docs.oracle.com/javase/6/docs/api" />
            <!-- And JAX-RS (jsr-311) as well -->
            <link href="http://jackson.codehaus.org/javadoc/jax-rs/1.0" />

            <group title="Jackson Core" packages="org.codehaus.jackson*" />
            <group title="Jackson Mapper"
               packages="org.codehaus.jackson.map*:org.codehaus.jackson.node:org.codehaus.jackson.schema"
            />
            <group title="Jackson JAX-RS provider" packages="org.codehaus.jackson.jaxrs" />
            <group title="Jackson XML Compatibility" packages="org.codehaus.jackson.xc" />
            <group title="Jackson Mr Bean" packages="org.codehaus.jackson.mrbean" />
            <group title="Jackson Smile Format" packages="org.codehaus.jackson.smile" />
        </javadoc>
    </target> 

  <!-- New with 1.6, "jackson-all" combo jar -->
    <target name="jar.all" depends="jars.asl, jars.other">
      <jar jarfile="${dir.build}/jackson-all-${IMPL_VERSION}.jar"
          filesonly="true" index="true" level="9">
<!-- Bah: need Ant 1.8 for this:  indexMetaInf="true"  -->
        <manifest>
          <attribute name="Built-By" value="${user.name}"/>
          <attribute name="Implementation-Title"   value="Jackson"/>
          <attribute name="Implementation-Version" value="${IMPL_VERSION}"/>
          <attribute name="Implementation-Vendor"  value="${IMPL_VENDOR}"/>
          <attribute name="Specification-Title"   value="${JSON_TITLE}"/>
          <attribute name="Specification-Version" value="${JSON_VERSION}"/>
          <attribute name="Specification-Vendor"  value="${JSON_VENDOR}"/>
       </manifest>
       <metainf dir="${dir.releasenotes}/asl" includes="*" />
       <fileset dir="${dir.build.classes.core}" includes="**/*.class" />
       <fileset dir="${dir.build.classes.mapper}" includes="**/*.class" />
       <fileset dir="${dir.build.classes.jaxrs}" includes="**/*.class" />
       <fileset dir="${dir.build.classes.xc}" includes="**/*.class" />
       <fileset dir="${dir.build.classes.smile}" includes="**/*.class" />
       <fileset dir="${dir.build.classes.mrbean}" includes="**/*.class" />
      </jar>
    </target>


    <!-- Generic distribution target builds the structure we copy over
         to the website.
      --> 
    <target name="dist" depends="compile.all,jars,javadoc"
    >
       <!-- First, let's copy the binary jars to dist -->
       <copy todir="${dir.dist}">
          <fileset dir="${dir.build}" includes="*.jar" />
       </copy>

       <!-- Then let's create the source distribution tar packages
          -->
       <!-- Need to first copy to a tmp dir, to get the additional
          directory (so tar/zip contents won't explode directly
          in current dir)
        -->
       <property name="DIST_FILENAME" value="jackson-src-${IMPL_VERSION}" />
       <property name="DIST_DIR" value="${DIST_FILENAME}" />

       <!-- better always clean it up, if it exists... -->
       <delete dir="${dir.build}/${DIST_DIR}" />
       <mkdir dir="${dir.build}/${DIST_DIR}" />

       <copy todir="${dir.build}/${DIST_DIR}">
         <fileset dir="${basedir}">
           <patternset refid="dist-all-source-files" />
         </fileset>
       </copy>

       <!-- then create tarball, zip -->
       <tar basedir="${dir.build}"
        includes="${DIST_DIR}/**"
        destfile="${dir.dist}/${DIST_FILENAME}.tar.gz"
        compression="gzip"
      />
       <zip basedir="${dir.build}"
        includes="${DIST_DIR}/**"
        destfile="${dir.dist}/${DIST_FILENAME}.zip"
      />

       <!-- And create source jars for IDE support; separate for core, mapper
            and both license types
         -->
       <jar destfile="${dir.dist}/jackson-core-asl-${IMPL_VERSION}-sources.jar"
          filesonly="true" compress="true" basedir="${dir.src.java.core}"
          includes="org/codehaus/jackson/**"
       />
       <jar destfile="${dir.dist}/jackson-mapper-asl-${IMPL_VERSION}-sources.jar"
          filesonly="true" compress="true" basedir="${dir.src.java.mapper}"
          includes="org/codehaus/jackson/**"
       />

       <jar destfile="${dir.dist}/jackson-core-lgpl-${IMPL_VERSION}-sources.jar"
          filesonly="true" compress="true" basedir="${dir.src.java.core}"
          includes="org/codehaus/jackson/**"
       />
       <jar destfile="${dir.dist}/jackson-mapper-lgpl-${IMPL_VERSION}-sources.jar"
          filesonly="true" compress="true" basedir="${dir.src.java.mapper}"
          includes="org/codehaus/jackson/**"
       />
       <jar destfile="${dir.dist}/jackson-jaxrs-${IMPL_VERSION}-sources.jar"
          filesonly="true" compress="true" basedir="${dir.src.java.jaxrs}"
          includes="org/codehaus/jackson/jaxrs/**"
       />
       <jar destfile="${dir.dist}/jackson-xc-${IMPL_VERSION}-sources.jar"
          filesonly="true" compress="true" basedir="${dir.src.java.xc}"
          includes="org/codehaus/jackson/xc/**"
       />
       <jar destfile="${dir.dist}/jackson-smile-${IMPL_VERSION}-sources.jar"
          filesonly="true" compress="true" basedir="${dir.src.java.smile}"
          includes="org/codehaus/jackson/smile/**"
       />
       <jar destfile="${dir.dist}/jackson-mrbean-${IMPL_VERSION}-sources.jar"
          filesonly="true" compress="true" basedir="${dir.src.java.mrbean}"
          includes="org/codehaus/jackson/mrbean/**"
       />

       <!-- Similarly package javadocs; sub-optimal since they are built just
            once so there's plenty of replication. So let's actually
            only do this for core and mapper, for now:
         -->
       <jar destfile="${dir.dist}/jackson-core-asl-${IMPL_VERSION}-javadoc.jar"
          filesonly="true" compress="true" basedir="${dir.javadoc}" includes="**/*"
       />
       <jar destfile="${dir.dist}/jackson-mapper-asl-${IMPL_VERSION}-javadoc.jar"
          filesonly="true" compress="true" basedir="${dir.javadoc}" includes="**/*"
       />

       <!-- Then copy javadocs -->
       <copy todir="${dir.dist}">
         <fileset dir="${dir.javadoc}/.." includes="javadoc/**/*" />
       </copy>
       <!-- Plus, let's also just copy README and compatibility files, in
            addition to being included in source package
         -->
       <copy todir="${dir.dist}" >
            <fileset dir="." includes="release-notes/*" />
            <fileset dir="." includes="release-notes/asl/*" />
            <fileset dir="." includes="release-notes/lgpl/*" />
       </copy>
       <!-- And also additional Maven stuff -->
        <copy todir="${dir.dist}">
            <fileset dir="${dir.src}/maven" includes="*.pom" />
            <globmapper from="*.pom" to="*-${IMPL_VERSION}.pom" />
            <filterset>
                <filter token="VERSION" value="${IMPL_VERSION}" />
            </filterset>
        </copy>

        <!-- 12-Jun-2009, tatu: Trying to make Maven snapshots work...
          -->
        <copy todir="${dir.snapshot}">
            <fileset dir="${dir.src}/maven" includes="*.pom" />
            <globmapper from="*.pom" to="*-${IMPL_VERSION}-SNAPSHOT.pom" />
            <filterset>
                <filter token="VERSION" value="${IMPL_VERSION}-SNAPSHOT" />
            </filterset>
        </copy>

        <!-- 03-Dec-2008, tatu: Let's validate well-formedness of
          resulting files (to avoid things like [JACKSON-25])
         -->
        <xmlvalidate lenient="true">
        <!-- lenient: check only well-formedness, no dtd/schema (yet) -->
            <fileset dir="${dir.dist}" includes="*.pom" />
            <fileset dir="${dir.snapshot}" includes="*.pom" />
        </xmlvalidate>
    </target>

    <target name="all" depends="clean,javadoc,test,dist">
        <!-- This target simply depends on others to do its job -->
    </target>


</project>
