<!-- © 2019 and later: Unicode, Inc. and others.
     License & terms of use: http://www.unicode.org/copyright.html -->

<!--================================================================================
    To build ICU data files:
    1: Determine the CLDR base directory and set the CLDR_DIR environment variable.
    2: Determine the flags required (see the list of properties below).
    3: Run: ant -f build-icu-data.xml -D<flag-name>=<flag-value>...
    ================================================================================-->
<!-- TODO: Add things like copying of a template directory and deleting previous files
     (perhaps always generate into a temporary directory and copy back to avoid having
      inconsistent state when the conversion is cancelled). -->
<project name="Convert" default="all" basedir=".">

    <target name="all" depends="init-args, prepare-jar, clean, convert"/>

    <!-- Initialize the properties which were not already set on the command line. -->
    <target name="init-args">
        <property environment="env"/>
        <condition property="hascldrdir" >
            <isset property="env.CLDR_DIR" />
        </condition>
        <fail unless="hascldrdir"
              message="Please set the CLDR_DIR environment variable to the top level CLDR source dir (containing 'common')."/>

        <!-- The base directory of the CLDR release from which CLDR data is obtained. For
             legacy reasons, this must also match an environment variable called CLDR_DIR,
             which is read here, so it is best to set this via the environment variable for
             now. -->
        <!-- TODO: Update this when the CLDR_DIR environment variable is no longer needed. -->
        <property name="cldrDir" value="${env.CLDR_DIR}"/>

        <!-- The output directory into which to write the converted ICU data. By default
             this will overwrite (without deletion) the ICU data files in this ICU release,
             so it is recommended that for testing, it be set to another value.  -->
        <property name="outDir" value="${basedir}/../../../icu4c/source/data/"/>

        <!-- The directory in which the additional ICU XML data is stored. -->
        <property name="specialsDir" value="${basedir}/../../../icu4c/source/data/xml"/>

        <!-- An override for the CLDR version string to be used in generated data. -->
        <property name="cldrVersion" value=""/>

        <!-- The minimum draft status for CLDR data to be used in the conversion. See
             CldrDraftStatus for more details. -->
        <property name="minDraftStatus" value="contributed"/>

        <!-- A regular expression to match the locale IDs to be generated (useful for
             debugging specific regions). This is applied after locale ID specifications
             have been expanded into full locale IDs, so the value "en" will NOT match
             "en_GB" or "en_001" etc. -->
        <property name="localeIdFilter" value=""/>

        <!-- Whether to synthetically generate "pseudo locale" data ("en_XA" and "ar_XB"). -->
        <property name="includePseudoLocales" value="false"/>

        <!-- Whether to emit a debug report containing some possibly useful information after
             the conversion has finished. -->
        <!-- TODO: Currently this isn't hugely useful, so find out what people want. -->
        <property name="emitReport" value="false"/>

        <!-- List of output "types" to be generated (e.g. "rbnf,plurals,locales"); an empty
             list means "build everything".

             Note that the grouping of types is based on the legacy converter behaviour and
             is not always directly associated with an output directory (e.g. "locales"
             produces locale data for curr/, lang/, main/, region/, unit/, zone/ but NOT
             coll/, brkitr/ or rbnf/).

             Pass in the value "HELP" (or any invalid value) to see the full list of types. -->
        <!-- TODO: Find out what common use cases are and use them. -->
        <property name="outputTypes" value=""/>

        <!-- Override to force the 'clean' task to delete files it cannot determine to be
             auto-generated by this tool. This is useful if the file header changes since
             the heading is what's used to recognize auto-generated files. -->
        <property name="forceDelete" value="false"/>
    </target>

    <!-- Build a standalone JAR which is called by Ant (and which avoids needing to mess
         about making Ant know the Maven class-path). -->
    <target name="prepare-jar" depends="init-args">
        <exec executable="mvn" searchpath="true">
            <arg value="compile"/>
        </exec>
    </target>

    <!-- Do the actual CLDR data conversion, based on the command line arguments, built in
         default properties and the configuration in the "<convert>" element below. -->
    <target name="convert" depends="init-args, prepare-jar">
        <taskdef name="convert" classname="org.unicode.icu.tool.cldrtoicu.ant.ConvertIcuDataTask">
            <classpath>
                <pathelement path="target/cldr-to-icu-1.0-SNAPSHOT-jar-with-dependencies.jar"/>
            </classpath>
        </taskdef>
        <convert cldrDir="${cldrDir}" outputDir="${outDir}" specialsDir="${specialsDir}"
                 outputTypes="${outputTypes}" cldrVersion="${cldrVersion}"
                 minimalDraftStatus="${minDraftStatus}" localeIdFilter="${localeIdFilter}"
                 includePseudoLocales="${includePseudoLocales}" emitReport="${emitReport}">

            <!-- The primary set of locale IDs to be generated by default. The IDs in this list are
                 automatically expanded to include default scripts and all available regions. The
                 rules are:

                 1) Base languages are expanded to include default scripts (e.g. "en" -> "en_Latn").
                 2) All region and variant subtags are added for any base language or language+script
                    (e.g. "en" -> "en_GB" or "shi_Latn" -> "shi_Latn_MA").

                 If a non-default script is desired it should be listed explicitly (e.g. "sr_Latn").

                 Locale IDs with deprecated subtags (which become aliases) must still be listed in
                 full (e.g. "en_RH" or "sr_Latn_YU").
            -->
            <localeIds>
                // A
                af, agq, agq_CM, ak, am, ar, ars, as, asa, asa_TZ, ast, ast_ES, az, az_AZ, az_Cyrl

                // B
                bas, bas_CM, be, bem, bem_ZM, bez, bez_TZ, bg, bm, bn, bo, br, brx, brx_IN, bs, bs_BA
                bs_Cyrl

                // C
                ca, ccp, ccp_BD, ccp_IN, ce, ceb, ceb_PH, cgg, cgg_UG, chr, chr_US, ckb, ckb_IQ, ckb_IR, cs, cy

                // D
                da, dav, dav_KE, de, dje, dje_NE, dsb, dsb_DE, dua, dua_CM, dyo, dyo_SN, dz

                // E
                ebu, ebu_KE, ee, el, en, en_NH, en_RH, eo, es, et, eu, ewo, ewo_CM

                // F
                fa, ff, ff_CM, ff_GN, ff_MR, ff_SN, fi, fil, fil_PH, fo, fr, fur, fur_IT, fy

                // G
                ga, gd, gl, gsw, gsw_CH, gsw_FR, gsw_LI, gu, guz, guz_KE, gv

                // H
                ha, haw, haw_US, he, hi, hr, hsb, hsb_DE, hu, hy

                // I
                ia, id, ig, ii, in, in_ID, is, it, iw, iw_IL

                // J
                ja, jgo, jgo_CM, jmc, jmc_TZ, jv

                // K
                ka, kab, kab_DZ, kam, kam_KE, kde, kde_TZ, kea, kea_CV, khq, khq_ML, ki, kk, kkj, kkj_CM, kl
                kln, kln_KE, km, kn, ko, kok, kok_IN, ks, ksb, ksb_TZ, ksf, ksf_CM, ksh, ksh_DE, ku, kw
                ky

                // L
                lag, lag_TZ, lb, lg, lkt, lkt_US, ln, lo, lrc, lrc_IQ, lrc_IR, lt, lu, luo, luo_KE, luy
                luy_KE, lv

                // M
                mas, mas_KE, mas_TZ, mer, mer_KE, mfe, mfe_MU, mg, mgh, mgh_MZ, mgo, mgo_CM, mi, mk, ml, mn
                mo, mr, ms, mt, mua, mua_CM, my, mzn, mzn_IR

                // N
                naq, naq_NA, nb, nd, nds, nds_DE, nds_NL, ne, nl, nmg, nmg_CM, nn, nnh, nnh_CM, no, no_NO
                no_NO_NY, nus, nus_SS, nyn, nyn_UG

                // O
                om, or, os

                // P
                pa, pa_Arab, pa_IN, pa_PK, pl, ps, pt

                // Q
                qu

                // R
                rm, rn, ro, rof, rof_TZ, ru, rw, rwk, rwk_TZ

                // S
                sah, sah_RU, saq, saq_KE, sbp, sbp_TZ, sd, se, seh, seh_MZ, ses, ses_ML, sg, sh, sh_BA, sh_CS
                sh_YU, shi, shi_Latn, shi_Latn_MA, shi_MA, shi_Tfng, shi_Tfng_MA, si, sk, sl, smn, smn_FI, sn, so, sq, sr
                sr_BA, sr_CS, sr_Cyrl_CS, sr_Cyrl_YU, sr_Latn, sr_Latn_CS, sr_Latn_YU, sr_ME, sr_RS, sr_XK, sr_YU, sv, sw

                // T
                ta, te, teo, teo_KE, teo_UG, tg, th, ti, tk, tl, tl_PH, to, tr, tt, twq, twq_NE
                tzm, tzm_MA

                // U
                ug, uk, ur, uz, uz_AF, uz_Arab, uz_Cyrl, uz_UZ

                // V
                vai, vai_LR, vai_Latn, vai_Latn_LR, vai_Vaii, vai_Vaii_LR, vi, vun, vun_TZ

                // W
                wae, wae_CH, wo

                // X
                xh, xog, xog_UG

                // Y
                yav, yav_CM, yi, yo, yue, yue_CN, yue_HK, yue_Hans, yue_Hans_CN, yue_Hant, yue_Hant_HK

                // Z
                zgh, zgh_MA, zh, zh_CN, zh_HK, zh_Hant, zh_MO, zh_SG, zh_TW, zu
            </localeIds>

            <!-- The following elements configure directories in which a subset of the available
                 locales IDs should be generated. Unlike the main <localeId> element, these
                 filters must specify all locale IDs in full (but since they mostly select base
                 languages, this isn't a big deal).

                 As well as allowing some data directories to have a subset of available data (via
                 the <localeIds> element) there are also mechanisms for controlling aliasing and
                 the locale parent relation which allows the sharing of some ICU data in cases
                 where it would otherwise need to be copied. The two mechanisms are:

                 1: inheritLanguageSubtag: Used to rewrite the parent of a locale ID from "root" to
                    its language subtag (e.g. "zh_Hant" has a natural parent of "root", but to allow
                    some base language data to be shared it can be made to have a parent of "zh").

                 2: forcedAlias: Used to add aliases for specific directories in order to affect the
                    ICU behaviour in special cases.

                 Between them these mechanisms are known as "tailorings" of the affected locales. -->
            <!-- TODO: Explain why these special cases are needed/different. -->

            <!-- Collation data is large, but also more sharable than other data, which is why there
                 are a number of aliases and parent remappings for this directory. -->
            <directory dir="coll" inheritLanguageSubtag="bs_Cyrl, sr_Latn, zh_Hant">
                <!-- These aliases are to avoid needing to copy and maintain the same collation data
                     for "zh" and "yue". The maximized versions of "yue_Hans" is "yue_Hans_CN" (vs
                     "zh_Hans_CN"), and for "yue" it's "yue_Hant_HK" (vs "zh_Hant_HK"), so the
                     aliases are effectively just rewriting the base language. -->
                <forcedAlias source="yue" target="zh_Hant"/>
                <forcedAlias source="yue_Hant" target="zh_Hant"/>
                <forcedAlias source="yue_CN" target="zh_Hans"/>
                <forcedAlias source="yue_Hans" target="zh_Hans"/>
                <forcedAlias source="yue_Hans_CN" target="zh_Hans"/>

                <!-- TODO: Find out and document this properly. -->
                <forcedAlias source="sr_ME" target="sr_Cyrl_ME"/>

                <localeIds>
                    root,

                    // A-B
                    af, am, ars, ar, as, az, be, bg, bn, bo, bs_Cyrl, bs,

                    // C-F
                    ca, ceb, chr, cs, cy, da, de_AT, de, dsb, dz, ee, el, en,
                    en_US_POSIX, en_US, eo, es, et, fa_AF, fa, fil, fi, fo, fr_CA, fr,

                    // G-J
                    ga, gl, gu, ha, haw, he, hi, hr, hsb, hu, hy,
                    id_ID, id, ig, in, in_ID, is, it, iw_IL, iw, ja,

                    // K-P
                    ka, kk, kl, km, kn, kok, ko, ku, ky, lb, lkt, ln, lo, lt, lv,
                    mk, ml, mn, mo, mr, ms, mt, my, nb, ne, nl, nn, no_NO, no,
                    om, or, pa_IN, pa, pa_Guru, pl, ps, pt,

                    // R-T
                    ro, ru, se, sh_BA, sh_CS, sh, sh_YU, si, sk, sl, smn, sq,
                    sr_BA, sr_Cyrl_ME, sr_Latn, sr_ME, sr_RS, sr, sv, sw,
                    ta, te, th, tk, to, tr,

                    // U-Z
                    ug, uk, ur, uz, vi, wae, wo, xh, yi, yo, yue_CN, yue_Hans_CN, yue_Hans
                    yue_Hant, yue, zh_CN, zh_Hans, zh_Hant, zh_HK, zh_MO, zh_SG, zh_TW, zh, zu
                </localeIds>
            </directory>

            <directory dir="rbnf">
                <!-- It is not at all clear why this is being done. It's certainly not exactly the
                     same as above, since (a) the alias is reversed (b) "zh_Hant" does exist, with
                     different data than "yue", so this alias is not just rewriting the base
                     language. -->
                <!-- TODO: Find out and document this properly. -->
                <forcedAlias source="zh_Hant_HK" target="yue"/>

                <localeIds>
                    root,

                    // A-E
                    af, ak, am, ars, ar, az, be, bg, bs, ca, ccp, chr, cs, cy,
                    da, de_CH, de, ee, el, en_001, en_IN, en, eo, es_419, es_DO,
                    es_GT, es_HN, es_MX, es_NI, es_PA, es_PR, es_SV, es, es_US, et,

                    // F-P
                    fa_AF, fa, ff, fil, fi, fo, fr_BE, fr_CH, fr, ga, he, hi, hr,
                    hu, hy, id, in, is, it, iw, ja, ka, kl, km, ko, ky, lb,
                    lo, lrc, lt, lv, mk, ms, mt, my, nb, nl, nn, no, pl, pt_PT, pt,

                    // Q-Z
                    qu, ro, ru, se, sh, sk, sl, sq, sr_Latn, sr, sv, sw, ta, th, tr,
                    uk, vi, yue_Hans, yue, zh_Hant_HK, zh_Hant, zh_HK, zh_MO, zh_TW, zh
                </localeIds>
            </directory>

            <directory dir="brkitr" inheritLanguageSubtag="zh_Hant">
                <localeIds>
                    root,
                    de, el, en, en_US_POSIX, en_US, es, fr, it, ja, pt, ru, zh_Hant, zh
                </localeIds>
            </directory>

            <!-- GLOBAL ALIASES -->

            <!-- Some spoken languages (e.g. "ars") inherit all their data from a written language
                 (e.g. "ar_SA"). However CLDR doesn't currently support a way to represent that
                 relationship. Unlike deprecated languages for which an alias can be inferred from
                 the "languageAlias" CLDR data, there's no way in CLDR to represent the fact that
                 we want "ars" (a non-deprecated language) to inherit the data of "ar_SA".

                 This alias is the first example of potentially many cases where ICU needs to
                 generate an alias in order to affect "sideways inheritance" for spoken languages,
                 and at some stage it should probably be supported properly in the CLDR data. -->
            <forcedAlias source="ars" target="ar_SA"/>

            <!-- A legacy global alias (note that "no_NO_NY" is not even structurally valid). -->
            <forcedAlias source="no_NO_NY" target="nn_NO"/>

            <!-- ALTERNATE VALUES -->

            <!-- The following elements configure alternate values for some special case paths.
                 The target path will only be replaced if both it, and the source path, exist in
                 the CLDR data (new paths will not be added if only the source path exists).

                 Since the paths must represent the same semantic type of data, they must be in the
                 same "namespace" (same element names) and must not contain value attributes. Thus
                 they can only differ by distinguishing attributes (either added or modified).

                 This feature is typically used to select alternate translations (e.g. short forms)
                 for certain paths. -->
            <!-- <altPath target="//path/to/value[@attr='foo']"
                          source="//path/to/value[@attr='bar']"
                          locales="xx,yy_ZZ"/> -->
        </convert>
    </target>

    <target name="clean" depends="init-args, prepare-jar">
        <taskdef name="outputDirectories" classname="org.unicode.icu.tool.cldrtoicu.ant.CleanOutputDirectoryTask">
            <classpath>
                <pathelement path="target/cldr-to-icu-1.0-SNAPSHOT-jar-with-dependencies.jar"/>
            </classpath>
        </taskdef>

        <outputDirectories root="${outDir}" forceDelete="${forceDelete}">
            <dir name="brkitr">
                <retain path="dictionaries"/>
                <retain path="rules"/>
            </dir>
            <dir name="coll">
                <retain path="de__PHONEBOOK.txt"/>
                <retain path="de_.txt"/>
                <retain path="es__TRADITIONAL.txt"/>
                <retain path="es_.txt"/>
            </dir>
            <dir name="curr"/>
            <dir name="lang"/>
            <dir name="locales"/>
            <dir name="misc">
                <retain path="currencyNumericCodes.txt"/>
                <retain path="icudata.rc"/>
                <retain path="icustd.txt"/>
                <retain path="icuver.txt"/>
                <retain path="langInfo.txt"/>
                <retain path="zoneinfo64.txt"/>
                <!-- This file should be removed before the next release. -->
                <retain path="miscfiles.mk"/>
            </dir>
            <dir name="rbnf"/>
            <dir name="region"/>
            <dir name="translit">
                <retain path="en.txt"/>
                <retain path="el.txt"/>
                <!-- This file should be removed before the next release. -->
                <retain path="trnsfiles.mk"/>
            </dir>
            <dir name="unit"/>
            <dir name="zone">
                <retain path="tzdbNames.txt"/>
            </dir>
        </outputDirectories>
    </target>
</project>

