<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-4.2.2-delta-pack.zip" dest="${targetDir}/deltapack" overwrite="false" />
        <unzip src="${targetSrcDir}/platform/org.eclipse.platform-4.2.2.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-4.2.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>
