Home | History | Annotate | Download | only in eclipse-build
      1 <!--
      2 /*
      3 *******************************************************************************
      4 * Copyright (C) 2010-2014, International Business Machines Corporation and    *
      5 * others. All Rights Reserved.                                                *
      6 *******************************************************************************
      7 */
      8 -->
      9 
     10 <project name="icu4j-eclipse" default="build" basedir=".">
     11   <property file="build-local.properties"/>
     12   <property file="build.properties"/>
     13 
     14   <property name="out.dir" value="out"/>
     15   <property name="eclipse.projects.dir" value="${out.dir}/projects"/>
     16 
     17   <property name="main.dir" value="../main"/>
     18   <property name="shared.dir" value="${main.dir}/shared"/>
     19 
     20   <import file="${shared.dir}/build/common-targets.xml"/>
     21   <property file="${shared.dir}/build/common.properties"/>
     22   <property file="${shared.dir}/build/locations.properties"/>
     23 
     24   <property environment="env"/>
     25 
     26   <target name="clean" description="Delete all build outputs">
     27     <delete dir="${out.dir}"/>
     28   </target>
     29 
     30   <target name="build"
     31           depends="checkProps,initEnv,icuProjectFiles,icuTestsProjectFiles,icuBaseProjectFiles,icuBaseTestsProjectFiles"
     32           description="Build icu4j plug-ins">
     33 
     34     <!-- copy OSGi jar file to baseLocation -->
     35     <mkdir dir="${eclipse.projects.dir}/baseLocation/features"/>
     36     <mkdir dir="${eclipse.projects.dir}/baseLocation/plugins"/>
     37     <copy toDir="${eclipse.projects.dir}/baseLocation/plugins" file="${eclipse.osgi.jar}"/>
     38 
     39     <!-- copy PDE build script files and run the build -->
     40     <pathconvert property="eclipse.projects.dir.full" dirsep="/">
     41       <path location="${basedir}/${eclipse.projects.dir}"/>
     42     </pathconvert>
     43 
     44     <antcall target="runEclipsePDEBuild">
     45       <param name="icu.plugin.id" value="com.ibm.icu"/>
     46     </antcall>
     47 
     48     <antcall target="runEclipsePDEBuild">
     49       <param name="icu.plugin.id" value="com.ibm.icu.base"/>
     50     </antcall>
     51 
     52   </target>
     53 
     54   <target name="initEclipseHome"
     55           if="env.ECLIPSE_HOME"
     56           unless="eclipse.home"
     57           description="Initialize the property eclipse.home from the environment variable ECLIPSE_HOME">
     58     <property name="eclipse.home" value="${env.ECLIPSE_HOME}"/>
     59   </target>
     60 
     61   <target name="checkProps" depends="initEclipseHome">
     62       <fail message="Eclipse home (eclipse.home or env.ECLIPSE_HOME) is not set">
     63         <condition>
     64           <or>
     65             <equals arg1="${eclipse.home}" arg2=""/>
     66             <not>
     67               <isset property="eclipse.home"/>
     68             </not>
     69           </or>
     70         </condition>
     71       </fail>
     72       <fail message="Java runtime jar path (java.rt) is not set">
     73         <condition>
     74           <or>
     75             <equals arg1="${java.rt}" arg2=""/>
     76             <not>
     77               <isset property="java.rt"/>
     78             </not>
     79           </or>
     80         </condition>
     81       </fail>
     82   </target>
     83 
     84   <target name="initPluginVersion">
     85     <tstamp>
     86       <format property="build.date" pattern="yyyyMMdd"/>
     87     </tstamp>
     88     <property name="icu4j.eclipse.build.version.string" value="${icu4j.plugin.impl.version.string}.v${build.date}"/>
     89   </target>
     90 
     91   <target name="initEnv"
     92           depends="checkProps,initEclipseLauncher,initEclipseOSGiJar,initEclipsePDE"
     93           description="Initialize eclipse PDE build environment">
     94     <echo message="[PDE build configuration properties]"/>
     95     <echo message="    Ant version:     ${ant.version}"/>
     96     <echo message="    Eclipse home:    ${eclipse.home}"/>
     97     <echo message="    Launcher jar:    ${eclipse.launcher}"/>
     98     <echo message="    OSGi bundle jar: ${eclipse.osgi.jar}"/>
     99     <echo message="    Base OS:         ${eclipse.baseos}"/>
    100     <echo message="    Base WS:         ${eclipse.basews}"/>
    101     <echo message="    Base ARCH:       ${eclipse.basearch}"/>
    102     <echo message="    java.rt:         ${java.rt}"/>
    103       
    104     <!-- try and detect use of backslashes  -->
    105     <condition property="java-rt-has-noSlashes">
    106         <matches pattern="/" string="${java.rt}"/>
    107     </condition>      
    108     <fail message="java.rt variable has no slashes!" unless="java-rt-has-noSlashes"/>
    109 
    110   </target>
    111     
    112   <target name="initEclipseLauncher"
    113           if="eclipse.home"
    114           description="Locate org.eclipse.equinox.launcher jar file for eclipse 3.3 and beyond">
    115     <first id="equinox.launcher">
    116       <fileset dir="${eclipse.home}/plugins">
    117         <include name="org.eclipse.equinox.launcher_*.jar"/>
    118       </fileset>
    119     </first>
    120     <pathconvert property="eclipse.launcher" dirsep="/" refid="equinox.launcher"/>
    121   </target>
    122 
    123   <target name="initEclipseOSGiJar"
    124           if="eclipse.home"
    125           description="Locate org.eclipse.osgi plugin jar file">
    126     <first id="osgi.bundle">
    127       <fileset dir="${eclipse.home}/plugins">
    128         <include name="org.eclipse.osgi_*.jar"/>
    129       </fileset>
    130     </first>
    131     <pathconvert property="eclipse.osgi.jar" dirsep="/" refid="osgi.bundle"/>
    132   </target>
    133 
    134   <target name="initEclipsePDE"
    135           depends="locateEclipsePDE"
    136           if="eclipse.pde.dir"
    137           description="Set up PDE runtime arguments">
    138     <property file="${eclipse.pde.dir}/templates/headless-build/build.properties" prefix="pde.template"/>
    139     <property name="eclipse.baseos" value="${pde.template.baseos}"/>
    140     <property name="eclipse.basews" value="${pde.template.basews}"/>
    141     <property name="eclipse.basearch" value="${pde.template.basearch}"/>
    142   </target>
    143 
    144   <target name="locateEclipsePDE"
    145           if="eclipse.home"
    146           description="Locate org.eclipse.pde.build plug-in and set the property 'eclipse.pde.dir'">
    147     <first id="eclipse.pde.plugin.dir">
    148       <dirset dir="${eclipse.home}/plugins">
    149         <include name="org.eclipse.pde.build_*"/>
    150       </dirset>
    151     </first>
    152     <pathconvert property="eclipse.pde.dir" dirsep="/" refid="eclipse.pde.plugin.dir"/>
    153   </target>
    154 
    155   <target name="runEclipsePDEBuild">
    156     <mkdir dir="${eclipse.projects.dir}/buildScripts/${icu.plugin.id}"/>
    157       <copy toDir="${eclipse.projects.dir}/buildScripts/${icu.plugin.id}">
    158         <fileset dir="pdebuild" includes="**/*"/>
    159           <filterset>
    160             <filter token="PLUGIN_ID" value="${icu.plugin.id}"/>
    161             <filter token="BUILD_DIR" value="${eclipse.projects.dir.full}"/>
    162             <filter token="BUILD_TYPE" value="ICU4J"/>
    163             <filter token="BUILD_ID" value="${icu.plugin.id}"/>
    164             <filter token="BASE_LOCATION" value="${eclipse.projects.dir.full}/baseLocation"/>
    165             <filter token="BASE_OS" value="${eclipse.baseos}"/>
    166             <filter token="BASE_WS" value="${eclipse.basews}"/>
    167             <filter token="BASE_ARCH" value="${eclipse.basearch}"/>
    168             <filter token="JAVA_RT" value="${java.rt}"/>
    169           </filterset>
    170       </copy>
    171 
    172       <java jar="${eclipse.launcher}" fork="true" failonerror="true">
    173         <arg value="-application"/>
    174         <arg value="org.eclipse.ant.core.antRunner"/>
    175         <arg value="-buildfile"/>
    176         <arg value="${eclipse.pde.dir}/scripts/build.xml"/>
    177         <arg value="-Dbuilder=${eclipse.projects.dir.full}/buildScripts/${icu.plugin.id}"/>
    178       </java>
    179   </target>
    180 
    181   <target name="icuProjectFiles"
    182         depends="initPluginVersion"
    183         description="Copy com.ibm.icu plug-in project files">
    184 
    185     <delete failonerror="no">
    186       <fileset dir="${eclipse.projects.dir}/plugins/com.ibm.icu" />
    187       <fileset dir="${eclipse.projects.dir}/features/com.ibm.icu" />
    188     </delete>
    189 
    190     <!-- icu source -->
    191     <copy toDir="${eclipse.projects.dir}/plugins/com.ibm.icu/src">
    192       <fileset dir="${icu4j.collate.dir}/src"/>
    193       <fileset dir="${icu4j.core.dir}/src"/>
    194       <fileset dir="${icu4j.currdata.dir}/src"/>
    195       <fileset dir="${icu4j.langdata.dir}/src"/>
    196       <fileset dir="${icu4j.regiondata.dir}/src"/>
    197       <fileset dir="${icu4j.translit.dir}/src"/>
    198     </copy>
    199 
    200     <!-- overwriting the ICU runtime configuration file for forcing ICU4J plugin to use JDK time zone rules -->
    201     <copy file="misc/ICUConfig.properties"
    202       toDir="${eclipse.projects.dir}/plugins/com.ibm.icu/src/com/ibm/icu"
    203       overwrite="true"/>
    204 
    205     <!-- icu data -->
    206     <unjar src="${icu4j.data.jar}" dest="${eclipse.projects.dir}/plugins/com.ibm.icu/src">
    207       <patternset>
    208         <exclude name="META-INF"/>
    209         <exclude name="META-INF/**/*"/>
    210         <exclude name="**/*.cnv"/>
    211         <exclude name="**/cnvalias.icu"/>
    212       </patternset>
    213     </unjar>
    214 
    215     <!-- icu tz data -->
    216     <unjar src="${icu4j.tzdata.jar}" dest="${eclipse.projects.dir}/plugins/com.ibm.icu/src">
    217       <patternset>
    218         <exclude name="META-INF"/>
    219         <exclude name="META-INF/**/*"/>
    220       </patternset>
    221     </unjar>
    222 
    223     <!-- full locale names lists -->
    224     <antcall target="@full-locale-names">
    225         <param name="res.dir" value="${eclipse.projects.dir}/plugins/com.ibm.icu/src/${icu4j.data.path}"/>
    226     </antcall>
    227 
    228     <antcall target="@full-locale-names">
    229         <param name="res.dir" value="${eclipse.projects.dir}/plugins/com.ibm.icu/src/${icu4j.data.path}/brkitr"/>
    230     </antcall>
    231 
    232     <antcall target="@full-locale-names">
    233         <param name="res.dir" value="${eclipse.projects.dir}/plugins/com.ibm.icu/src/${icu4j.data.path}/coll"/>
    234     </antcall>
    235 
    236     <antcall target="@full-locale-names">
    237         <param name="res.dir" value="${eclipse.projects.dir}/plugins/com.ibm.icu/src/${icu4j.data.path}/curr"/>
    238     </antcall>
    239 
    240     <antcall target="@full-locale-names">
    241         <param name="res.dir" value="${eclipse.projects.dir}/plugins/com.ibm.icu/src/${icu4j.data.path}/lang"/>
    242     </antcall>
    243 
    244     <antcall target="@full-locale-names">
    245         <param name="res.dir" value="${eclipse.projects.dir}/plugins/com.ibm.icu/src/${icu4j.data.path}/rbnf"/>
    246     </antcall>
    247 
    248     <antcall target="@full-locale-names">
    249         <param name="res.dir" value="${eclipse.projects.dir}/plugins/com.ibm.icu/src/${icu4j.data.path}/region"/>
    250     </antcall>
    251 
    252     <antcall target="@full-locale-names">
    253         <param name="res.dir" value="${eclipse.projects.dir}/plugins/com.ibm.icu/src/${icu4j.data.path}/translit"/>
    254     </antcall>
    255 
    256     <antcall target="@full-locale-names">
    257         <param name="res.dir" value="${eclipse.projects.dir}/plugins/com.ibm.icu/src/${icu4j.data.path}/zone"/>
    258     </antcall>
    259 
    260     <!-- plugin project -->
    261     <copy todir="${eclipse.projects.dir}/plugins/com.ibm.icu">
    262       <fileset dir="plugins.template/com.ibm.icu"/>
    263       <filterset>
    264         <filter token="BUILD_VERSION" value="${icu4j.eclipse.build.version.string}" />
    265         <filter token="COPYRIGHT" value="${copyright.eclipse}" />
    266         <filter token="IMPL_VERSION" value="${icu4j.impl.version}" />
    267         <filter token="DATA_VERSION_NUMBER" value="${icu4j.data.version.number}" />
    268       </filterset>
    269     </copy>
    270 
    271     <!-- license -->
    272     <copy file="${shared.dir}/licenses/license.html"
    273           todir="${eclipse.projects.dir}/plugins/com.ibm.icu/about_files" />
    274 
    275     <!-- about -->
    276     <copy file="misc/about_icu.html"
    277           tofile="${eclipse.projects.dir}/plugins/com.ibm.icu/about.html" />
    278 
    279     <!-- FEATURE FILES -->
    280     <copy todir="${eclipse.projects.dir}/features/com.ibm.icu">
    281       <fileset dir="features.template/com.ibm.icu"/>
    282       <filterset>
    283         <filter token="BUILD_VERSION" value="${icu4j.eclipse.build.version.string}" />
    284         <filter token="COPYRIGHT" value="${copyright.eclipse}" />
    285         <filter token="DATA_VERSION_NUMBER" value="${icu4j.data.version.number}" />
    286       </filterset>
    287     </copy>
    288 
    289   </target>
    290 
    291   <target name="icuTestsProjectFiles"
    292         depends="initPluginVersion"
    293         description="Copy com.ibm.icu.tests plug-in project files">
    294 
    295     <delete failonerror="no">
    296       <fileset dir="${eclipse.projects.dir}/plugins/com.ibm.icu.tests" />
    297     </delete>
    298 
    299     <!-- icu test source -->
    300     <copy toDir="${eclipse.projects.dir}/plugins/com.ibm.icu.tests/src">
    301       <fileset dir="${icu4j.test-framework.dir}/src"/>
    302       <fileset dir="${icu4j.core-tests.dir}/src"/>
    303       <fileset dir="${icu4j.collate-tests.dir}/src"/>
    304       <fileset dir="${icu4j.translit-tests.dir}/src"/>
    305       <fileset dir="${icu4j.testall.dir}/src"/>
    306     </copy>
    307 
    308     <!-- icu test data -->
    309     <unjar src="${icu4j.testdata.jar}" dest="${eclipse.projects.dir}/plugins/com.ibm.icu.tests/src">
    310       <patternset>
    311         <exclude name="**/*.cnv"/>
    312         <exclude name="**/cnvalias.icu"/>
    313         <exclude name="META-INF"/>
    314         <exclude name="META-INF/**/*"/>
    315       </patternset>
    316     </unjar>
    317 
    318     <!-- plugin project -->
    319     <copy todir="${eclipse.projects.dir}/plugins/com.ibm.icu.tests">
    320       <fileset dir="plugins.template/com.ibm.icu.tests"/>
    321       <filterset>
    322         <filter token="BUILD_VERSION" value="${icu4j.eclipse.build.version.string}" />
    323         <filter token="COPYRIGHT" value="${copyright.eclipse}" />
    324         <filter token="IMPL_VERSION" value="${icu4j.impl.version}" />
    325         <filter token="DATA_VERSION_NUMBER" value="${icu4j.data.version.number}" />
    326       </filterset>
    327     </copy>
    328 
    329     <!-- license -->
    330     <copy file="${shared.dir}/licenses/license.html"
    331           todir="${eclipse.projects.dir}/plugins/com.ibm.icu.tests/about_files" />
    332 
    333     <!-- about -->
    334     <copy file="misc/about_icu.html"
    335           tofile="${eclipse.projects.dir}/plugins/com.ibm.icu.tests/about.html" />
    336 
    337   </target>
    338 
    339   <target name="icuBaseProjectFiles"
    340         depends="initPluginVersion"
    341         description="Copy com.ibm.icu.base plug-in project files">
    342 
    343     <delete failonerror="no">
    344       <fileset dir="${eclipse.projects.dir}/plugins/com.ibm.icu.base" />
    345       <fileset dir="${eclipse.projects.dir}/features/com.ibm.icu.base" />
    346     </delete>
    347 
    348     <!-- plugin project -->
    349     <copy todir="${eclipse.projects.dir}/plugins/com.ibm.icu.base">
    350       <fileset dir="plugins.template/com.ibm.icu.base"/>
    351       <filterset>
    352         <filter token="BUILD_VERSION" value="${icu4j.eclipse.build.version.string}" />
    353         <filter token="COPYRIGHT" value="${copyright.eclipse}" />
    354         <filter token="IMPL_VERSION" value="${icu4j.impl.version}" />
    355         <filter token="DATA_VERSION_NUMBER" value="${icu4j.data.version.number}" />
    356       </filterset>
    357     </copy>
    358 
    359     <!-- license -->
    360     <copy file="${shared.dir}/licenses/license.html"
    361           todir="${eclipse.projects.dir}/plugins/com.ibm.icu.base/about_files" />
    362 
    363     <!-- about -->
    364     <copy file="misc/about_icu.html"
    365           tofile="${eclipse.projects.dir}/plugins/com.ibm.icu.base/about.html" />
    366 
    367     <!-- FEATURE FILES -->
    368     <copy todir="${eclipse.projects.dir}/features/com.ibm.icu.base">
    369       <fileset dir="features.template/com.ibm.icu.base"/>
    370       <filterset>
    371         <filter token="BUILD_VERSION" value="${icu4j.eclipse.build.version.string}" />
    372         <filter token="COPYRIGHT" value="${copyright.eclipse}" />
    373         <filter token="DATA_VERSION_NUMBER" value="${icu4j.data.version.number}" />
    374       </filterset>
    375     </copy>
    376 
    377   </target>
    378 
    379   <target name="icuBaseTestsProjectFiles"
    380         depends="initPluginVersion"
    381         description="Copy com.ibm.icu.base.tests plug-in project files">
    382 
    383     <delete failonerror="no">
    384       <fileset dir="${eclipse.projects.dir}/plugins/com.ibm.icu.base.tests" />
    385     </delete>
    386 
    387     <!-- plugin project -->
    388     <copy todir="${eclipse.projects.dir}/plugins/com.ibm.icu.base.tests">
    389       <fileset dir="plugins.template/com.ibm.icu.base.tests"/>
    390       <filterset>
    391         <filter token="BUILD_VERSION" value="${icu4j.eclipse.build.version.string}" />
    392         <filter token="COPYRIGHT" value="${copyright.eclipse}" />
    393         <filter token="IMPL_VERSION" value="${icu4j.impl.version}" />
    394         <filter token="DATA_VERSION_NUMBER" value="${icu4j.data.version.number}" />
    395       </filterset>
    396     </copy>
    397 
    398     <!-- license -->
    399     <copy file="${shared.dir}/licenses/license.html"
    400           todir="${eclipse.projects.dir}/plugins/com.ibm.icu.base.tests/about_files" />
    401 
    402     <!-- about -->
    403     <copy file="misc/about_icu.html"
    404           tofile="${eclipse.projects.dir}/plugins/com.ibm.icu.base.tests/about.html" />
    405 
    406   </target>
    407 
    408 </project>