<project name="com.android.eclipse.rcp.build" default="build">
    <tstamp>
        <format property="QUALIFIER" pattern="yyyy-M-d-H-m"/>
    </tstamp>

    <!-- Root of Android Source Tree -->
    <property name="ANDROID_SRC" location="../../" />

    <!-- Host Eclipse used for building the RCP -->
    <property name="basebuilder" value="${ANDROID_SRC}/external/eclipse-basebuilder/basebuilder-3.6.2/org.eclipse.releng.basebuilder/" />

    <!-- Source for target prebuilts -->
    <property name="deltaPackTargetSrcDir" value="${ANDROID_SRC}/prebuilts/eclipse/" />
    <property name="targetSrcDir" value="${ANDROID_SRC}/prebuilts/eclipse-build-deps/" />

    <!-- Location where build happens and resulting binaries are generated -->
    <property name="outDir" value="${ANDROID_SRC}/out/host/eclipse/adtproduct/" />

    <!-- Location where the target platform is created -->
    <property name="targetDir" value="${outDir}/target" />

    <!-- Location where ADT feature build is performed -->
    <property name="featureBuildDir" value="${outDir}/fbuild" />

    <!-- Location where ADT feature build is performed -->
    <property name="productBuildDir" value="${outDir}/pbuild" />

    <!-- Location of the sources -->
    <property name="srcDir" value="${ANDROID_SRC}/sdk/eclipse/" />

    <!-- Identify configurations to build -->
    <condition property="buildconfigs" value="linux,gtk,x86_64">
        <equals arg1="${buildFor}" arg2="linux" />
    </condition>
    <condition property="buildconfigs" value="macosx,cocoa,x86_64">
        <equals arg1="${buildFor}" arg2="darwin" />
    </condition>
    <condition property="buildconfigs" value="win32,win32,x86_64">
        <equals arg1="${buildFor}" arg2="windows" />
    </condition>

    <!-- if no platforms are provided, then build for all platforms -->
    <property name="buildconfigs" value="linux,gtk,x86 &amp; linux,gtk,x86_64 &amp; win32,win32,x86 &amp; win32,win32,x86_64 &amp; macosx,cocoa,x86_64" />

    <!-- locate launcher plugin inside eclipse -->
    <path id="equinox.launcher.path">
        <fileset dir="${basebuilder}/plugins">
            <include name="org.eclipse.equinox.launcher_*.jar" />
        </fileset>
    </path>
    <property name="equinox.launcher" refid="equinox.launcher.path" />

    <!-- locate pde build plugin inside eclipse -->
    <path id="pde.build.dir.path">
        <dirset dir="${basebuilder}/plugins">
            <include name="org.eclipse.pde.build_*" />
        </dirset>
    </path>
    <property name="pde.build.dir" refid="pde.build.dir.path" />

    <!-- create the build directory, copy plugins and features into it -->
    <target name="copy_srcs">
        <mkdir dir="${featureBuildDir}" />
        <copy todir="${featureBuildDir}" preservelastmodified="true">
            <fileset dir="${srcDir}/">
                <include name="plugins/**" />
                <include name="features/**" />
                <exclude name="plugins/*/bin/**" />
            </fileset>
        </copy>
        <mkdir dir="${productBuildDir}" />
        <copy todir="${productBuildDir}" preservelastmodified="true">
            <fileset dir="${srcDir}/">
                <include name="features/com.android.ide.eclipse.adt.package/**" />
            </fileset>
        </copy>
    </target>

    <!-- create target platform -->
    <target name="create-target">
        <mkdir dir="${targetDir}" />
        <mkdir dir="${targetDir}/deltapack" />
        <mkdir dir="${targetDir}/repos" />

        <unzip src="${deltaPackTargetSrcDir}/deltapack/eclipse-3.7.2-delta-pack.zip" dest="${targetDir}/deltapack" overwrite="false" />
        <unzip src="${targetSrcDir}/platform/org.eclipse.platform-3.8.zip" dest="${targetDir}/repos/platform" overwrite="false" />
        <unzip src="${targetSrcDir}/cdt/cdt-master-8.0.2.zip" dest="${targetDir}/repos/cdt" overwrite="false" />
        <unzip src="${targetSrcDir}/emf/emf-xsd-SDK-M201201231045.zip" dest="${targetDir}/repos/emf" overwrite="false" />
        <unzip src="${targetSrcDir}/jdt/org.eclipse.jdt.source-3.7.2.zip" dest="${targetDir}/repos/jdt" overwrite="false" />
        <unzip src="${targetSrcDir}/wtp/wtp-repo-R-3.3.2-20120210195245.zip" dest="${targetDir}/repos/wtp" overwrite="false" />
        <unzip src="${targetSrcDir}/gef/GEF-SDK-3.7.2.zip" dest="${targetDir}/repos/gef" overwrite="false" />
        <unzip src="${targetSrcDir}/pde/org.eclipse.pde-3.8.zip" dest="${targetDir}/repos/pde" overwrite="false" />
        <unzip src="${targetSrcDir}/egit/org.eclipse.egit.repository-2.2.0.201212191850-r.zip" dest="${targetDir}/repos/egit" overwrite="false" />
    </target>

    <!-- Launch pde build to build the adtpackage product -->
    <target name="feature-build" depends="copy_srcs, create-target">
        <java classname="org.eclipse.equinox.launcher.Main" fork="true" failonerror="true">
            <arg value="-application" />
            <arg value="org.eclipse.ant.core.antRunner" />
            <arg value="-buildfile" />
            <arg value="${pde.build.dir}/scripts/build.xml" />
            <arg value="-data" />
            <arg value="${featureBuildDir}/workspace" />
            <arg value="-configuration" />
            <arg value="${featureBuildDir}/configuration" />
            <arg value="-Dtimestamp=${timestamp}" />
            <arg value="-DeclipseLocation=${baseBuilder}" />
            <arg value="-DbuildDirectory=${featureBuildDir}" />
            <arg value="-Dbuilder=${ANDROID_SRC}/sdk/eclipse/buildConfig" />
            <arg value="-DbaseLocation=${targetDir}/deltapack/eclipse" />
            <arg value="-DrepoBaseLocation=${targetDir}/repos/" />
            <arg value="-DtransformedRepoLocation=${targetDir}/transformedRepos/" />
            <arg value="-DupdateSiteSource=${ANDROID_SRC}/sdk/eclipse/sites/external" />
            <arg value="-DupdateSiteRoot=${targetDir}/repos/" />
            <arg value="-DforceContextQualifier=${QUALIFIER}" />
            <classpath>
                <pathelement location="${equinox.launcher}" />
            </classpath>
        </java>
    </target>

    <!-- Launch pde build to build the adtpackage product -->
    <target name="product-build" depends="feature-build">
        <java classname="org.eclipse.equinox.launcher.Main" fork="true" failonerror="true">
            <arg value="-application" />
            <arg value="org.eclipse.ant.core.antRunner" />
            <arg value="-buildfile" />
            <arg value="${pde.build.dir}/scripts/productBuild/productBuild.xml" />
            <arg value="-data" />
            <arg value="${productBuildDir}/workspace" />
            <arg value="-configuration" />
            <arg value="${productBuildDir}/configuration" />
            <arg value="-Dtimestamp=${timestamp}" />
            <arg value="-DeclipseLocation=${baseBuilder}" />
            <arg value="-DbuildDirectory=${productBuildDir}" />
            <arg value="-DbaseLocation=${targetDir}/deltapack/eclipse" />
            <arg value="-DrepoBaseLocation=${targetDir}/repos/" />
            <arg value="-DtransformedRepoLocation=${targetDir}/transformedRepos/" />
            <arg value="-Dconfigs=${buildconfigs}" />
            <classpath>
                <pathelement location="${equinox.launcher}" />
            </classpath>
        </java>
    </target>

    <target name="clean">
        <delete dir="${outDir}" />
        <delete dir="${targetDir}" />
    </target>

    <!-- Make sure that earlier build results are not present in the repository -->
    <target name="clean-features">
        <delete dir="${featureBuildDir}" />
        <delete dir="${productBuildDir}" />
        <delete dir="${targetDir}/repos/android-eclipse" />
        <delete dir="${targetDir}/transformedRepos" />
    </target>

    <target name="build" depends="clean-features, product-build" />
</project>
