<!--
    Copyright (c) 2010,2023 IBM Corporation and SAP AG.
    All rights reserved. This program and the accompanying materials
    are made available under the terms of the Eclipse Public License 2.0
    which accompanies this distribution, and is available at
    https://www.eclipse.org/legal/epl-2.0/

    SPDX-License-Identifier: EPL-2.0

    Contributors:
        IBM Corporation - initial API and implementation
 -->
<project name="Build specific modifications">
<target name="pre.@dot"/>
<target name="post.compile.@dot"/>
<target name="post.@dot"/>
<target name="pre.build.jars"/>
<target name="post.build.jars"
        description="Build the javadoc for all of Memory Analyzer">
        <echo>
            compile ${compile_classpath}
            runtime ${runtime_classpath}
            test ${test_classpath}
            plugin ${plugin_classpath}
            user.home ${user.home}
            maven.repo.local ${maven.repo.local}
        </echo>
        <property name="maven.repo.local" value="${user.home}/.m2/repository"/>
        <!-- Rely on MANIFEST.MF pulling in some extra jars via plugins with resolution:=optional. 
        The Eclipse, DTFJ plugins must be found by javadoc for the external references to be built. Hope that the extra
        plugins in MANIFEST.MF don't cause trouble - couldn't find another Maven way of doing it -->
        <javadoc access="public" author="false"
            destdir="doc" doctitle="Memory Analyzer API" nodeprecated="false" nodeprecatedlist="false" noindex="false" nonavbar="false"
            notree="false"
            source="1.8"
            splitindex="true" use="true" version="true" overview="../org.eclipse.mat.api/src/overview.html">
            <classpath>
                <pathelement path="${test_classpath}"/>
            </classpath>
            <!-- Change source attribute to the Java version with which we build standalone MAT -->
            <arg value="-Xmaxwarns"/>
            <arg value="10000"/>
            <arg value="-Xmaxerrs"/>
            <arg value="10000"/>
            <tag name="noimplement" scope="types" description="No Implement:" />
            <tag name="noextend" scope="types" description="No Extend:" />
            <tag name="noreference" scope="methods,constructors,fields,types" description="No Reference:" />
            <tag name="noinstantiate" scope="types" description="No Instantiate:" />
            <tag name="nooverride" scope="methods" description="No Override:" />
            <tag name="category" scope="methods,constructors,fields" description="Category:" />
            <arg value="-J-Dhttp.proxyHost=${http.proxyHost}"/>
            <arg value="-J-Dhttp.proxyPort=${http.proxyPort}"/>
        	<!-- Change to the Java version with which we build MAT -->
            <link href="https://docs.oracle.com/en/java/javase/11/docs/api/" />
            <!-- Change to the version with which we build standalone MAT -->
            <link href="https://help.eclipse.org/2023-09/topic/org.eclipse.platform.doc.isv/reference/api/" />
            <link href="https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/" />
            <link offline="true" href="https://www.ibm.com/docs/api/v1/content/SSYKE2_8.0.0/openj9/api/jdk8/platform/dtfj/" 
                  packagelistloc="javadoc/dtfj/" />
            <packageset dir="../org.eclipse.mat.report/src" defaultexcludes="yes">
              <include name="**"/>
            </packageset>
            <packageset dir="../org.eclipse.mat.api/src" defaultexcludes="yes">
              <include name="**"/>
            </packageset>
            <packageset dir="../org.eclipse.mat.parser/src" defaultexcludes="yes">
              <include name="**"/>
            </packageset>
            <packageset dir="../org.eclipse.mat.hprof/src" defaultexcludes="yes">
              <include name="**"/>
            </packageset>
            <packageset dir="../org.eclipse.mat.dtfj/src" defaultexcludes="yes">
              <include name="**"/>
            </packageset>
            <packageset dir="../org.eclipse.mat.ibmdumps/src" defaultexcludes="yes">
              <include name="**"/>
            </packageset>
            <packageset dir="../org.eclipse.mat.jdt/src" defaultexcludes="yes">
              <include name="**"/>
            </packageset>
            <packageset dir="../org.eclipse.mat.jruby.resolver/src" defaultexcludes="yes">
              <include name="**"/>
            </packageset>
            <packageset dir="../org.eclipse.mat.ui/src" defaultexcludes="yes">
              <include name="**"/>
            </packageset>
            <packageset dir="../org.eclipse.mat.chart/src" defaultexcludes="yes">
              <include name="**"/>
            </packageset>
            <packageset dir="../org.eclipse.mat.chart.ui/src" defaultexcludes="yes">
              <include name="**"/>
            </packageset>
        </javadoc>
        <!-- Copy the schema definitions as HTML, fixing up imports of style sheets -->
        <copy todir="doc">
            <fileset dir="../org.eclipse.mat.api/doc">
              <include name="org_eclipse_mat_*.html"/>
            </fileset>
            <filterchain>
                <replaceregex pattern="file:/([^&quot;/]*/)*" replace="" flags="g" />
            </filterchain>
        </copy>
        <copy todir="doc">
            <fileset dir="../org.eclipse.mat.hprof/doc">
              <include name="org_eclipse_mat_*.html"/>
            </fileset>
            <filterchain>
                <replaceregex pattern="file:/([^&quot;/]*/)*" replace="" flags="g" />
            </filterchain>
        </copy>
        <copy todir="doc">
            <fileset dir="../org.eclipse.mat.parser/doc">
              <include name="org_eclipse_mat_*.html"/>
            </fileset>
            <filterchain>
                <replaceregex pattern="file:/([^&quot;/]*/)*" replace="" flags="g" />
            </filterchain>
        </copy>
        <copy todir="doc">
            <fileset dir="../org.eclipse.mat.report/doc">
              <include name="org_eclipse_mat_*.html"/>
            </fileset>
            <filterchain>
                <replaceregex pattern="file:/([^&quot;/]*/)*" replace="" flags="g" />
            </filterchain>
        </copy>
        <copy todir="doc">
            <fileset dir="../org.eclipse.mat.ui/doc">
              <include name="org_eclipse_mat_*.html"/>
            </fileset>
            <filterchain>
                <replaceregex pattern="file:/([^&quot;/]*/)*" replace="" flags="g" />
            </filterchain>
        </copy>
        <!-- Copy the style sheets -->
        <copy todir="doc">
            <fileset dir=".">
                <include name="book.css"/>
                <include name="schema.css"/>
            </fileset>
        </copy>
</target>
<target name="pre.build.sources"/>
<target name="post.build.sources"/>
<target name="pre.gather.bin.parts"/>
<target name="post.gather.bin.parts"/>
<target name="pre.gather.sources"/>
<target name="post.gather.sources"/>
<target name="pre.gather.logs"/>
<target name="post.gather.logs"/>
<target name="pre.clean"/>
<target name="post.clean"/>
</project>
