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