Coder Social home page Coder Social logo

external-chromium_org-third_party-icu's Introduction

Name: icu
URL: http://site.icu-project.org/
Version: 4.6
License: MIT
Security Critical: yes

Description:
This directory contains the source code of ICU 4.6 for C/C++

1. It was obtained with the following:

    $ svn export --native-eol LF http://source.icu-project.org/repos/icu/icu/tags/release-4-6 icu46

2. Platform header files for Linux, FreeBSD, OpenBSD, Android and Mac OS X:

   - Apply platform.patch in patches directory. : It applies the upstream
     patch to platform.h.in (see http://bugs.icu-project.org/trac/ticket/8248)
     and change source/common/unicode/ptypes.h to refer to plinux.h and
     pmac.h generated below.

   - 'runConfigureICU Linux', 'runConfigureICU FreeBSD', and
     'runConfigureICU MacOSX' are run to generate
     source/common/unicode/platform.h.

   - On OpenBSD, source/common/unicode/platform.h is being generated
     by the icu4c port in the ports directory and not by runConfigureICU.
     In case the file has to be updated you can do:
     cd /home/ports/textproc/icu4c && make configure

   - Rename it to 'plinux.h', 'pfreebsd.h', 'popenbsd.h' and 'pmac.h'

   - Apply patches/pmach.h.patch on Mac to pmac.h

   - On Android, the pandroid.h was generated by copying plinux.h to
     pandroid.h and applying the patches/pandroid.h.patch.

   - Apply the CL at https://codereview.chromium.org/15973007/ to plinux.h

3. The following directories were removed because they're not used by Chromium
   at the moment:
   as_is
   packaging
   source/extra
   source/sample
   source/layout
   source/layoutex


4. The word breaking for Chinese and Japanese were modified to use a word
   frequency list with the following patch and cjdict.txt.
  
   - patches/segmentation.patch :
       Adds a dictionary (word-frequency)-based word breaking for CJK
       (Korean is supported in the code, but it does not do anything
        because we don't have a Korean word-list.)

   - source/data/brkitr/cjdict.txt :
       Chinese and Japanese word frequency list.
       See the file for license/copyright notice

   - source/data/brkitr/cc_edict.txt :
       the list of words derived from CC-Edict.)

   - patches/brkitr.patch
     * word.txt : Chinese/Japanese segmentation rules, Hebrew-script-specific
                  handling of U+0022, and splitting of FQDN into labels at '.'.
		  For Hebrew, see http://unicode.org/cldr/track/ticket/3120
     * line.txt : Incorporated line_he and minor changes in CL, OP and ID
                  definitions.
		  For Hebrew, see http://unicode.org/cldr/track/ticket/4004
		  For others, see http://unicode.org/cldr/track/ticket/3974
		                  http://unicode.org/cldr/track/ticket/4200
		                  http://unicode.org/cldr/track/ticket/
     * brklocal.mk : build file changes to drop unnecessary brkitr rule
                     files (e.g. word_ja.txt, line_he.txt)

   - android/brkitr.patch (to be applied for Android build only) :
       Reverts some changes about Chinese/Japanese segmentation rules in
       patches/brkitr.patch to reduce binary size for Android.

   If you want to run ICU tests, you have to copy source/data/brkitr/cjdict.txt
   to source/test/testdata/cjdict-truncated.txt to pass TestTrieWithValue test.

5. Converter changes : converters.patch
  - Include what we really need. See source/data/mappings/ucmlocal.txt
  - Alias and mapping changes : source/data/mappings/convrtrs.txt
  - Changes several tables and add six new tables, three of which
    are 'fake' tables for ISO-2022-CN(-Ext).
  - ucnv2022.c is modified to use 3 'fake' tables added above for
    ISO-2022-CN(-Ext).

6. Locale changes
  - patches/locale1.patch :
      Filipino, Amharic, and Swahili locales
      exemplar character set changes for CJK + 9 Indian locales
      Minor fixes for Danish, , Turkish, and Korean.

  - patches/locale2.patch :
      The minimum locale data Chrome needs for 47 languages Chrome is
      not localized to. Each locale data file has ExemplarCharacters,
      LocaleScript, layout, and the name of the language for a locale
      in its native language.

  - patches/locale3.patch : Locale build configuration files. They
    add reslocal.mk or {trns,sprep,rbnf,coll}local.mk files to
    source/data/{coll,curr,lang.locale,curr,region,translit,zone,rbnf,sprep}.

  - In source/data/region, run the following command to get rid of numeric region
    display names we don't use (everything other than 419).
     $ sed -i  '/[0-35-9][0-9][0-9]{/ d' *.txt

  - android/patch_locale.sh (to be run for Android build only):
      Makes changes to source/data/{curr,region,lang} to exclude these data
      except the language and script names of zh_Hans and zh_Hant.

7. Removal of unihan collation tables from data/coll/{zh,ja,ko}.txt

  - patches/unihan.patch:
    unihan collation tables are never used in Chrome/Webkit, but it takes
    about 1MB in the uncompressed ICU data file in ICU 4.2.1.

8. Timezone data update
  - Grab the latest version of the following timezone data files and
    put them in source/data/misc.

     metaZones.txt
     timezoneTypes.txt
     windowsZones.txt
     zoneinfo64.txt

   As of Nov, 2011, the latest version is 2011n and the above files
   are available at
   http://source.icu-project.org/repos/icu/data/trunk/tzdata/icunew/2011n/44/

9. Build-related changes

  - patches/wpo.patch
  - patches/vscomp.patch
    (see http://bugs.icu-project.org/trac/ticket/8355 and
         http://bugs.icu-project.org/trac/ticket/8356 )
  - patches/rtti.patch : Make RTTI work without exception handling on Windows
    (see http://bugs.icu-project.org/trac/ticket/8343)
  - patches/data.build.patch :
      To remove some data files we don't use and cut down the data size.
  - patches/data.build.win.patch :
      Windows-only data build patch. Add a new target DATALIB to makedata.mak
  - patches/clang.patch: To build with Clang.
    (see http://bugs.icu-project.org/trac/ticket/8954 Two other chunks in
    the patch have already been fixed in the ICU trunk.)
  - add an empty file (stubdatabuilt.txt) to source/stubdata

10. Pre-built data libraries are checked in.

    Before building data file on Linux, re-run runConfigureICU Linux again
    if it's run without data.build.patch in #8 above.

    'make' will fail in the 1st pass. Copy source/data/in/coll/invuca.icu
    to {BUILD_DIR_ROOT}/data/out/build/icudt46l/coll and re-run 'make'
    in {BUILD_DIR_ROOT}/data.

    - source/data/in/icudt46l.dat : Built on Linux with all the patches
      above applied,

    - windows/icudt.dll : With icudt46l.dat in place, all the patches applied
      and header files moved (#11 below), generated by building icudt_build
      project of build/icudt_build.sln on Windows. icudt46.dll is
      generated in bin/{Release,Debug} and copied to windows/icudt.dll
      and checked in. Note that we drop the version number ('46') from the
      dll name to avoind having to update our build scripts/configuration
      files everytime ICU is upgraded to a new version.

    - {mac,linux}/icudt46l_dat.S : Built on Mac and Linux with all the
      patches above (except android/brkitr.patch) applied and checked in.

    - android/icudt46l_dat.S : Built on Linux with all the patches above and
      android/brkitr.patch applied and android/patch_locale.sh executed, and
      checked in.

11. The header files were moved as shown below:

   source/common/unicode ==> public/common/unicode
   source/i18n/unicode   ==> public/i18n/unicode

12. Apply the fix found with static analysis tools such as PSV and coverity

  - patches/static.analysis.patch
  - upstream trunk/4.8 do not have this code any more.

13. Fix for msvs2010 applied:
--- D:/src/ent/src/third_party/icu/source/common/stringpiece.cpp
 (revision 78292)
+++ D:/src/ent/src/third_party/icu/source/common/stringpiece.cpp
 (working copy)
@@ -75,7 +75,7 @@
 * Visual Studios 9.0.
 * Cygwin with MSVC 9.0 also complains here about redefinition.
 */
-#if (!defined(_MSC_VER) || (_MSC_VER > 1500)) && !defined(CYGWINMSVC)
+#if (!defined(_MSC_VER) || (_MSC_VER > 1600)) && !defined(CYGWINMSVC)
 const int32_t StringPiece::npos;
 #endif

14. Fix for locales that don't use '.' as decimal separator: patches/nan.patch
  - upstream bug: http://bugs.icu-project.org/trac/ticket/8561
  - Handle other chars besides the dot. This is required because decNumber's
    parser expects the dot as a decimal separator.
  - Locales that don't use dot were producing "NaN" values.

15. Fix a bug in the regex engine.
  - patches/regex.patch
  - upstream bug: http://bugs.icu-project.org/trac/ticket/8666 (fixed in the upstream)

16. Apply the upstream patch for Korean search collator support (ICU 4.6.1).
   - patches/search_collation.patch
   - upstream bug: http://bugs.icu-project.org/trac/ticket/8290

17. Fix a use of uninitialized memory bug in regular expression matching
   - patches/rematch.patch
   - upstream bug: http://bugs.icu-project.org/trac/ticket/8824

18. Make it compile with -Werror on gcc 4.6
   - patches/gcc46.patch (ToT upstream does not have this code any more).

19. Fix four out of bounds memory access error in common/uloc.c
    and common/uresbund.c 
   - patches/uloc.patch
   - upstream bug: 
     1. http://bugs.icu-project.org/trac/ticket/8984 (_canonicalize)
     2. http://bugs.icu-project.org/trac/ticket/9114 (_getKeywords)
     3. http://bugs.icu-project.org/trac/ticket/8812 (uresbund)
        http://bugs.icu-project.org/trac/ticket/8813 (uresbund)
     4. http://bugs.icu-project.org/trac/ticket/10250 (_getKeywords)

20. Fix a null pointer error in ubrk_setText in ubrk.cpp.
    - patches/ubrk.patch
    - upstream bug : http://bugs.icu-project.org/trac/ticket/9115

21. Fix a clang warning in rbbi.cpp by merging in an upstream change.
    - patches/changeset_30255.patch
    - upstream change : http://bugs.icu-project.org/trac/changeset/30255

22. Fix time zone handling and compilation on iOS.
    - patches/ios_timezone.patch
    - upstream bugs : http://bugs.icu-project.org/trac/ticket/9051
    -                 http://bugs.icu-project.org/trac/ticket/8661

23. Fix a buffer overflow in utext
    - patches/utext.patch
    - upstream change : http://bugs.icu-project.org/trac/changeset/29356

24. Fix compilation errors on VS2012.
    - patches/vs2012.patch

25. Fix a buffer overflow in UTF-16/32 detection.
    - patches/csetdet.patch
    - upstream bug: http://bugs.icu-project.org/trac/ticket/10318



external-chromium_org-third_party-icu's People

Contributors

tornewuff avatar chadj-at-google avatar

Watchers

 avatar Raghu Gandham avatar  avatar Reed Kotler avatar James Cloos avatar Graham Whaley avatar  avatar Miodrag Dinic avatar

external-chromium_org-third_party-icu's Issues

AOSP build fail using external-chromium_org-third_party-icu

Hello,

I have this same library in AOSP v5.0.1, but the build fails on Mac 10.13 because of that it cannot compile icu/Mac/icudt46l_dat.S, and just before this error I get this error too: "clang: unsupported option --gdwarf2"
Any idea to how I can resolve this problem ?
thank you

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.