blob: 4161e540bb0d8baad50e96aed56c1076633d076a [file] [log] [blame]
Richard S. Hall6fe36b42009-07-13 13:25:46 +00001<?xml version="1.0"?>
2<!--
3 Licensed to the Apache Software Foundation (ASF) under one
4 or more contributor license agreements. See the NOTICE file
5 distributed with this work for additional information
6 regarding copyright ownership. The ASF licenses this file
7 to you under the Apache License, Version 2.0 (the
8 "License"); you may not use this file except in compliance
9 with the License. You may obtain a copy of the License at
10
11 http://www.apache.org/licenses/LICENSE-2.0
12
13 Unless required by applicable law or agreed to in writing,
14 software distributed under the License is distributed on an
15 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 KIND, either express or implied. See the License for the
17 specific language governing permissions and limitations
18 under the License.
19-->
20<project name="sigil-builder" default="build">
21 <property name="user.props" value="user.properties" />
22 <property file="${user.props}"/>
23 <property file="project.properties"/>
24 <property file="download.properties"/>
25
26 <property name="error.internal.target" value="Do not call this target directly"/>
27
28 <property name="eclipse.sdk" value="${eclipse.install.dir}"/>
29 <property name="extras.sdk" value="build-libs/target-platform-extras"/>
30
31 <condition property="isUnix">
32 <os family="unix"/>
33 </condition>
34
35 <!-- PUBLIC TARGETS -->
36
37 <target name="build"
38 depends="clean-tmp, target-platform, pdebuild"/>
39
40 <target name="clean-tmp">
41 <delete dir="target/tmp" />
42 </target>
43
44 <target name="clean">
45 <delete dir="target"/>
46 <delete dir="build-libs/classes"/>
47 </target>
48
49 <!-- create target platform -->
50 <target name="target-platform" depends="rsync-platform, copy-platform"/>
51
52 <target name="rsync-platform" if="isUnix">
53 <mkdir dir="${target.platform}/eclipse" />
54 <exec executable="rsync" append="true"
55 output="${target.platform}/rsync.log" >
56 <arg line="-av --delete ${eclipse.sdk}/ ${extras.sdk}/ ${target.platform}/eclipse" />
57 </exec>
58 </target>
59
60 <target name="copy-platform" unless="isUnix">
61 <mkdir dir="${target.platform}/eclipse" />
62 <copy todir="${target.platform}/eclipse">
63 <fileset dir="${eclipse.sdk}"/>
64 <fileset dir="${extras.sdk}" />
65 </copy>
66 </target>
67
68 <target name="init">
69 <mkdir dir="target"/>
70 <mkdir dir="target/features"/>
71 <mkdir dir="target/plugins"/>
72 </target>
73
74 <target name="custom.tasks">
75 <mkdir dir="build-libs/classes"/>
76 <javac srcdir="src" destdir="build-libs/classes" debug="on">
77 <classpath>
78 <fileset dir="build-libs">
79 <include name="osgi.core.jar"/>
80 </fileset>
81 </classpath>
82 </javac>
83 <taskdef name="findbundle" classname="org.cauldron.sigil.build.FindBundlesTask">
84 <classpath>
85 <pathelement location="build-libs/osgi.core.jar"/>
86 <pathelement location="build-libs/classes"/>
87 </classpath>
88 </taskdef>
89 <taskdef name="siteInsertFeatures" classname="org.cauldron.sigil.build.SiteInsertFeatures">
90 <classpath>
91 <pathelement location="build-libs/classes"/>
92 </classpath>
93 </taskdef>
94 </target>
95
96 <target name="findbundles" depends="custom.tasks">
97 <!-- Find the Equinox launcher JAR -->
98 <echo>${eclipse.install.dir}</echo>
99 <findbundle dir="${eclipse.install.dir}/plugins" symbolicname="org.eclipse.equinox.launcher" property="eclipse.launcher.version"/>
100 <property name="eclipse.launcher.jar" location="${eclipse.install.dir}/plugins/org.eclipse.equinox.launcher_${eclipse.launcher.version}.jar"/>
101
102 <!-- Find the PDE Build scripts -->
103 <findbundle dir="${eclipse.install.dir}/plugins" symbolicname="org.eclipse.pde.build" property="eclipse.pdebuild.version"/>
104 <property name="eclipse.productBuild.xml" location="${eclipse.install.dir}/plugins/org.eclipse.pde.build_${eclipse.pdebuild.version}/scripts/productBuild/productBuild.xml"/>
105 <property name="eclipse.featureBuild.xml" location="${eclipse.install.dir}/plugins/org.eclipse.pde.build_${eclipse.pdebuild.version}/scripts/build.xml"/>
106 </target>
107
108 <!-- Unused
109 <target name="download" depends="init">
110 <mkdir dir="${target.platform}"/>
111
112 <echo message="Downloading platform runtime"/>
113 <get dest="${target.platform}/platform-runtime.zip"
114 src="${download.base}/${download.dir}/${download.platform.runtime}" verbose="true"/>
115
116 <echo message="Downloading RCP delta pack"/>
117 <get dest="${target.platform}/deltapack.zip"
118 src="${download.base}/${download.dir}/${download.deltapack}" verbose="true"/>
119
120 <echo message="Downloading CVS client"/>
121 <get dest="${target.platform}/cvsclient.zip"
122 src="${download.base}/${download.dir}/${download.cvsclient}" verbose="true"/>
123
124 <unzip src="${target.platform}/platform-runtime.zip" dest="${target.platform}" overwrite="true"/>
125 <unzip src="${target.platform}/deltapack.zip" dest="${target.platform}" overwrite="true"/>
126 <unzip src="${target.platform}/cvsclient.zip" dest="${target.platform}" overwrite="true"/>
127 </target>
128 -->
129
130 <target name="copy.projects" depends="init">
131 <foreach list="${plugins}" param="plugin.id" target="__copy.plugin"/>
132 <foreach list="${features}" param="feature.id" target="__copy.feature"/>
133 </target>
134
135 <target name="copy.properties" depends="init">
136 <copy file="builder/template.build.properties" tofile="builder/build.properties" overwrite="true"/>
137 <pathconvert property="basedir.unix" targetos="unix">
138 <path location="${basedir}"/>
139 </pathconvert>
140 <replace file="builder/build.properties">
141 <replacefilter token="@@WARNING_TEXT" value="Warning! This file is auto-generated. Changes will be overwritten!"/>
142 <replacefilter token="@@BUILD_PROJECT_DIR" value="${basedir.unix}"/>
143 <replacefilter token="@@TARGET_PLATFORM" value="${target.platform}"/>
144 </replace>
145 </target>
146
147 <!-- Unused
148 <target name="copy.deps">
149 <copy todir="${target.platform}/eclipse/plugins">
150 <fileset dir="target-libs" includes="*.jar"/>
151 </copy>
152 </target>
153 -->
154
155 <target name="pdebuild" depends="findbundles,copy.projects,copy.properties">
156 <java jar="${eclipse.launcher.jar}" fork="true" failonerror="true">
157 <sysproperty key="builder" path="${basedir}/builder"/>
158 <arg line="-application org.eclipse.ant.core.antRunner"/>
159 <arg line="-buildfile ${eclipse.featureBuild.xml}"/>
160 </java>
161 </target>
162
163 <target name="new.updateSite">
164 <copy file="site.xml" todir="${updateSiteDir}"/>
165 <antcall target="copy.updateSite" />
166 </target>
167
168 <target name="copy.updateSite" depends="custom.tasks">
169 <copy todir="${updateSiteDir}">
170 <fileset dir="target/tmp/eclipse" includes="**/*.jar"/>
171 </copy>
172 <property file="target/finalFeaturesVersions.properties" prefix="featureVersions"/>
173 <siteInsertFeatures sitexmlfile="${updateSiteDir}/site.xml"
174 features="${features}"
175 versionPropPrefix="featureVersions"
176 categoryPropPrefix="category"/>
177 </target>
178
179 <!-- INTERNAL TARGETS -->
180 <target name="__copy.plugin">
181 <fail unless="plugin.id" message="${error.internal.target}"/>
182 <echo message="Copying plugin ${plugin.id}"/>
183 <antcall target="__copy.artifact">
184 <param name="artifact.id" value="${plugin.id}"/>
185 <param name="artifact.type" value="plugin"/>
186 </antcall>
187 </target>
188
189 <target name="__copy.feature">
190 <fail unless="feature.id" message="${error.internal.target}"/>
191 <antcall target="__copy.artifact">
192 <param name="artifact.id" value="${feature.id}"/>
193 <param name="artifact.type" value="feature"/>
194 </antcall>
195
196 <replace file="target/features/${feature.id}/feature.xml">
197 <replacefilter token="http://replace.with.real.url" value="${updateUrl}"/>
198 </replace>
199 </target>
200
201 <target name="__copy.artifact">
202 <fail unless="artifact.id" message="${error.internal.target}"/>
203 <fail unless="artifact.type" message="${error.internal.target}"/>
204
205 <echo message="Copying from ${source.dir}/${artifact.id} to target/${artifact.type}s"/>
206 <copy todir="target/${artifact.type}s">
207 <fileset dir="${source.dir}">
208 <exclude name="${artifact.id}/bin/**"/>
209 <exclude name="${artifact.id}/build/**"/>
210 <exclude name="${artifact.id}/**/*.class"/>
211 <include name="${artifact.id}/**"/>
212 </fileset>
213 </copy>
214 </target>
215
216 <target name="__nodefault">
217 <fail message="There is no default target"/>
218 </target>
219
220 <!-- TASK DEFINITIONS -->
221 <taskdef resource="net/sf/antcontrib/antlib.xml">
222 <classpath>
223 <pathelement location="build-libs/ant-contrib/ant-contrib-1.0b3.jar"/>
224 </classpath>
225 </taskdef>
226
227</project>