1<project name="com.android.eclipse.rcp.build" default="build">
2
3    <!-- Set QUALIFIER to ADT_IDE_QUALIFIER if defined, otherwise use a date timestamp. -->
4    <tstamp>
5        <format property="defaultQualifier" pattern="yyyyMMddHHmm"/>
6    </tstamp>
7
8    <condition property="QUALIFIER" value="v${defaultQualifier}" else="${ADT_IDE_QUALIFIER}">
9        <equals arg1="${ADT_IDE_QUALIFIER}" arg2="" />
10    </condition>
11
12    <echo message="## ADT IDE Build Qualifier: ${QUALIFIER}"/>
13
14    <!-- Root of Android Source Tree -->
15    <property name="ANDROID_SRC" location="../../" />
16
17    <!-- Host Eclipse used for building the RCP -->
18    <property name="basebuilder" value="${ANDROID_SRC}/external/eclipse-basebuilder/basebuilder-3.6.2/org.eclipse.releng.basebuilder/" />
19
20    <!-- Source for target prebuilts -->
21    <property name="deltaPackTargetSrcDir" value="${ANDROID_SRC}/prebuilts/eclipse/" />
22    <property name="targetSrcDir" value="${ANDROID_SRC}/prebuilts/eclipse-build-deps/" />
23
24    <!-- Location where build happens and resulting binaries are generated -->
25    <property name="outDir" value="${ANDROID_SRC}/out/host/eclipse/adtproduct/" />
26
27    <!-- Location where the target platform is created -->
28    <property name="targetDir" value="${outDir}/target" />
29
30    <!-- Location where ADT feature build is performed -->
31    <property name="featureBuildDir" value="${outDir}/fbuild" />
32
33    <!-- Location where ADT feature build is performed -->
34    <property name="productBuildDir" value="${outDir}/pbuild" />
35
36    <!-- Location of the sources -->
37    <property name="srcDir" value="${ANDROID_SRC}/sdk/eclipse/" />
38
39    <!-- Identify configurations to build -->
40    <condition property="buildconfigs" value="linux,gtk,x86_64">
41        <equals arg1="${buildFor}" arg2="linux" />
42    </condition>
43    <condition property="buildconfigs" value="macosx,cocoa,x86_64">
44        <equals arg1="${buildFor}" arg2="darwin" />
45    </condition>
46    <condition property="buildconfigs" value="win32,win32,x86_64">
47        <equals arg1="${buildFor}" arg2="windows" />
48    </condition>
49
50    <!-- if no platforms are provided, then build for all platforms -->
51    <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" />
52
53    <!-- locate launcher plugin inside eclipse -->
54    <path id="equinox.launcher.path">
55        <fileset dir="${basebuilder}/plugins">
56            <include name="org.eclipse.equinox.launcher_*.jar" />
57        </fileset>
58    </path>
59    <property name="equinox.launcher" refid="equinox.launcher.path" />
60
61    <!-- locate pde build plugin inside eclipse -->
62    <path id="pde.build.dir.path">
63        <dirset dir="${basebuilder}/plugins">
64            <include name="org.eclipse.pde.build_*" />
65        </dirset>
66    </path>
67    <property name="pde.build.dir" refid="pde.build.dir.path" />
68
69    <!-- create the build directory, copy plugins and features into it -->
70    <target name="copy_srcs">
71        <mkdir dir="${featureBuildDir}" />
72        <copy todir="${featureBuildDir}" preservelastmodified="true">
73            <fileset dir="${srcDir}/">
74                <include name="plugins/**" />
75                <include name="features/**" />
76                <exclude name="plugins/*/bin/**" />
77            </fileset>
78        </copy>
79        <mkdir dir="${productBuildDir}" />
80        <copy todir="${productBuildDir}" preservelastmodified="true">
81            <fileset dir="${srcDir}/">
82                <include name="features/com.android.ide.eclipse.adt.package/**" />
83            </fileset>
84        </copy>
85    </target>
86
87    <property name="GooglePlayTranslation.zip" value="${ANDROID_SRC}/tools/vendor/google/TranslationPluginForEclipse/ADT_Translation_Manager_plugin.zip" />
88    <available file="${GooglePlayTranslation.zip}" property="translation.plugin.present" />
89
90    <!-- Add localization plugin to the list of features if necessary -->
91    <target name="update-features" if="translation.plugin.present">
92        <replace file="${productBuildDir}/features/com.android.ide.eclipse.adt.package/feature.xml"
93                 token='!--import feature="com.google.i18n.inkstone.eclipse.localization" --'
94                 value='import feature="com.google.i18n.inkstone.eclipse.localization" /' />
95    </target>
96
97    <!-- create target platform -->
98    <target name="create-target">
99        <mkdir dir="${targetDir}" />
100        <mkdir dir="${targetDir}/deltapack" />
101        <mkdir dir="${targetDir}/repos" />
102
103        <unzip src="${deltaPackTargetSrcDir}/deltapack/eclipse-4.3.1-delta-pack.zip" dest="${targetDir}/deltapack" overwrite="false" />
104        <unzip src="${targetSrcDir}/platform/org.eclipse.platform-4.3.1.zip" dest="${targetDir}/repos/platform" overwrite="false" />
105        <unzip src="${targetSrcDir}/cdt/cdt-master-8.2.1.zip" dest="${targetDir}/repos/cdt" overwrite="false" />
106        <unzip src="${targetSrcDir}/emf/emf-xsd-SDK-2.9.1.zip" dest="${targetDir}/repos/emf" overwrite="false" />
107        <unzip src="${targetSrcDir}/jdt/org.eclipse.jdt.source-4.3.1.zip" dest="${targetDir}/repos/jdt" overwrite="false" />
108        <unzip src="${targetSrcDir}/wtp/wtp4x-repo-R-3.5.1-20130913223750.zip" dest="${targetDir}/repos/wtp" overwrite="false" />
109        <unzip src="${targetSrcDir}/gef/GEF-SDK-3.9.1RC1.zip" dest="${targetDir}/repos/gef" overwrite="false" />
110        <unzip src="${targetSrcDir}/pde/org.eclipse.pde-4.3.1.zip" dest="${targetDir}/repos/pde" overwrite="false" />
111        <unzip src="${targetSrcDir}/egit/org.eclipse.egit.repository-3.1.0.201310021548-r.zip" dest="${targetDir}/repos/egit" overwrite="false" />
112    </target>
113
114    <target name="create-translation-target" if="translation.plugin.present">
115         <unzip src="${GooglePlayTranslation.zip}" dest="${targetDir}/repos/tpe" overwrite="false" />
116    </target>
117
118    <!-- Launch pde build to build the adtpackage product -->
119    <target name="feature-build" depends="copy_srcs, update-features, create-target, create-translation-target">
120        <java classname="org.eclipse.equinox.launcher.Main" fork="true" failonerror="true">
121            <arg value="-application" />
122            <arg value="org.eclipse.ant.core.antRunner" />
123            <arg value="-buildfile" />
124            <arg value="${pde.build.dir}/scripts/build.xml" />
125            <arg value="-data" />
126            <arg value="${featureBuildDir}/workspace" />
127            <arg value="-configuration" />
128            <arg value="${featureBuildDir}/configuration" />
129            <arg value="-Dtimestamp=${timestamp}" />
130            <arg value="-DeclipseLocation=${baseBuilder}" />
131            <arg value="-DbuildDirectory=${featureBuildDir}" />
132            <arg value="-Dbuilder=${ANDROID_SRC}/sdk/eclipse/buildConfig" />
133            <arg value="-DbaseLocation=${targetDir}/deltapack/eclipse" />
134            <arg value="-DrepoBaseLocation=${targetDir}/repos/" />
135            <arg value="-DtransformedRepoLocation=${targetDir}/transformedRepos/" />
136            <arg value="-DupdateSiteSource=${ANDROID_SRC}/sdk/eclipse/sites/external" />
137            <arg value="-DupdateSiteRoot=${targetDir}/repos/" />
138            <arg value="-DforceContextQualifier=${QUALIFIER}" />
139            <classpath>
140                <pathelement location="${equinox.launcher}" />
141            </classpath>
142        </java>
143    </target>
144
145    <!-- Launch pde build to build the adtpackage product -->
146    <target name="product-build" depends="feature-build">
147        <java classname="org.eclipse.equinox.launcher.Main" fork="true" failonerror="true">
148            <arg value="-application" />
149            <arg value="org.eclipse.ant.core.antRunner" />
150            <arg value="-buildfile" />
151            <arg value="${pde.build.dir}/scripts/productBuild/productBuild.xml" />
152            <arg value="-data" />
153            <arg value="${productBuildDir}/workspace" />
154            <arg value="-configuration" />
155            <arg value="${productBuildDir}/configuration" />
156            <arg value="-Dtimestamp=${timestamp}" />
157            <arg value="-DeclipseLocation=${baseBuilder}" />
158            <arg value="-DbuildDirectory=${productBuildDir}" />
159            <arg value="-DbaseLocation=${targetDir}/deltapack/eclipse" />
160            <arg value="-DrepoBaseLocation=${targetDir}/repos/" />
161            <arg value="-DtransformedRepoLocation=${targetDir}/transformedRepos/" />
162            <arg value="-Dconfigs=${buildconfigs}" />
163            <arg value="-DforceContextQualifier=${QUALIFIER}" />
164            <classpath>
165                <pathelement location="${equinox.launcher}" />
166            </classpath>
167        </java>
168    </target>
169
170    <target name="clean">
171        <delete dir="${outDir}" />
172        <delete dir="${targetDir}" />
173    </target>
174
175    <!-- Make sure that earlier build results are not present in the repository -->
176    <target name="clean-features">
177        <delete dir="${featureBuildDir}" />
178        <delete dir="${productBuildDir}" />
179        <delete dir="${targetDir}/repos/android-eclipse" />
180        <delete dir="${targetDir}/transformedRepos" />
181    </target>
182
183    <target name="build" depends="clean-features, product-build" />
184</project>
185