Difference between revisions of "ICU"

From Apache OpenOffice Wiki
Jump to: navigation, search
(mention the *.def file dependencies more clearly and explicitly state commands to touch/remove files)
 
(17 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
The '''International Components for Unicode''' or '''ICU''' is an external
 
The '''International Components for Unicode''' or '''ICU''' is an external
 
library originally developed by ''IBM'', available at
 
library originally developed by ''IBM'', available at
http://icu.sourceforge.net/. OOo uses the C libraries ''ICU4C'' (there is also
+
http://www.icu-project.org/. OOo uses the C libraries ''ICU4C'' (there is also
 
a set of Java libraries ''ICU4J'' available) for glyph layout in
 
a set of Java libraries ''ICU4J'' available) for glyph layout in
 
[[wikipedia:Complex_Text_Layout|CTL]] languages, [[wikipedia:Unicode|Unicode]]
 
[[wikipedia:Complex_Text_Layout|CTL]] languages, [[wikipedia:Unicode|Unicode]]
Line 7: Line 7:
 
boundaries, and calendar systems.
 
boundaries, and calendar systems.
  
OOo up to version 2.0.4 uses ICU 2.6, which is quite old by now and is heavily
+
ICU is located in module '''icu''' of the [[source code directories]] in the OOo build tree.
patched to suit OOo's needs. Most patches are available later in one of the
+
 
upstream versions. Some patches are only relevant in the OOo environment and
+
There's a '''[[/bugs and patches| list of patches]]''' applied to the version currently in use.
won't make it upstream. ICU 3.6 beta includes most of the patches OOo applied.
+
 
Upgrade to ICU 3.6 is ongoing in [[CWS]]
+
 
''[http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Id=3595&Path=SRC680%2Ficuupgrade icuupgrade]''
+
__TOC__
 +
 
 +
== Versions used ==
 +
 
 +
* ICU 4.0.1 introduced with {{CWS|icuooo32|OOO320}} for OOo3.2
 +
* ICU 4.0 introduced with {{CWS|i18n42|DEV300}} for OOo3.1
 +
* ICU 3.6 introduced with {{CWS|icuupgrade|SRC680}} for OOo2.2
 +
* ICU 2.6 for OOo1.x to OOo2.1.x
 +
 
 +
== Modules and source code using ICU ==
  
 
Most functionality is encapsulated in the [[i18npool]] module and should be
 
Most functionality is encapsulated in the [[i18npool]] module and should be
 
accessed using the <code>::com::sun::star::i18n::*</code> UNO API only, just
 
accessed using the <code>::com::sun::star::i18n::*</code> UNO API only, just
 
little source code uses ICU functionality directly for glyph layout, where
 
little source code uses ICU functionality directly for glyph layout, where
necessary. Please do not add further dependencies, if possible. As of CWS
+
necessary. Please do not add further dependencies, if possible.
''icuupgrade'' resynced to ''SRC680_m181'' the dependent source files that
+
have to be touched and built when upgrading to a newer ICU version, apart from
+
the entire module module i18npool, were:
+
  
Note the two '''NOTE'''s interspersed, or Windows won't build!
+
Instead of having to rebuild the entire suite you may get away with a partial
 +
rebuild if you carefully touch some files and remove Windows' *.def files in
 +
affected modules.
  
<pre>
+
=== Commands to obtain the lists ===
# 2006-08-11T15:22+0200 as of CWS 'icuupgrade' resynced to SRC680_m181
+
 
#
+
The lists below may be obtained by invoking the following commands in the
# Dependencies on ICU.
+
$SRC_ROOT directory:
# Plus, of course, i18npool.
+
 
# The scp2 files depend on icuversion.mk.
+
<pre class="code">
#
+
# Look for ICU...LIB in makefiles to get modules
# Module 'proximity' may use ICU if enabled PROX_PUNI_USE_ICU or REQUIRE_ICU_LIBRARY in
+
# Note that the Solaris grep doesn't know option -H, use GNU grep!
# proximity/inc/punicfg.h
+
find -L $SRC_ROOT -name makefile.mk -exec grep -H 'ICU[A-Z]*LIB' {} \; | sort -u
# or (makefile) environment, which currently is not the case.
+
 
#
+
# Using a global GNU ID-utils database, look for include unicode/*.{h,hpp} and
# Touch these files, assuming this list is in ~/devbase/icu/these_use_icu.txt:
+
# layout/*.{h,hpp} in source files.
# touch `grep -v '^#' ~/devbase/icu/these_use_icu.txt | sed -e 's/\([^:]*\):.*/\1/'`
+
lid --separator newline --result=grep --regexp 'unicode|layout' | egrep -v '(/build/icu/|com/sun/star/)' | egrep ':[0-9]+:[[:space:]]*#[[:space:]]*include[[:space:]]+[<"](unicode|layout)/[^/]+\.(h|hpp)[">]' | sort -u
#
+
forms/source/xforms/warnings_guard_unicode_regex.h:51:#include <unicode/regex.h>
+
linguistic/source/hhconvdic.cxx:37:#include <external/unicode/uscript.h>
+
svtools/source/edit/texteng.cxx:96:#include <unicode/ubidi.h>
+
svx/source/editeng/impedit2.cxx:115:#include <unicode/ubidi.h>
+
svx/source/outliner/outliner.cxx:107:#include <unicode/ubidi.h>
+
sw/source/core/text/frmcrsr.cxx:74:#include <unicode/ubidi.h>
+
sw/source/core/text/porfld.cxx:119:#include <unicode/ubidi.h>
+
sw/source/core/text/porlay.cxx:113:#include <unicode/ubidi.h>
+
sw/source/filter/ww8/writerwordglue.cxx:55:#include <unicode/ubidi.h>          //ubidi_getLogicalRun
+
sw/source/filter/ww8/writerwordglue.cxx:55:#include <unicode/ubidi.h>          //ubidi_getLogicalRun
+
vcl/source/gdi/sallayout.cxx:74:#include <unicode/ubidi.h>
+
vcl/source/gdi/sallayout.cxx:75:#include <unicode/uchar.h>
+
vcl/source/glyphs/gcach_layout.cxx:176:#include <layout/LayoutEngine.h>
+
vcl/source/glyphs/gcach_layout.cxx:177:#include <layout/LEFontInstance.h>
+
vcl/source/glyphs/gcach_layout.cxx:178:#include <layout/LEScripts.h>
+
vcl/source/glyphs/gcach_layout.cxx:185:#include <unicode/uscript.h>
+
vcl/source/glyphs/gcach_layout.cxx:186:#include <unicode/ubidi.h>
+
#
+
binfilter/bf_svx/source/editeng/svx_impedit2.cxx:149:#include <unicode/ubidi.h>
+
binfilter/bf_svx/source/outliner/svx_outliner.cxx:107:#include <unicode/ubidi.h>
+
binfilter/bf_sw/source/core/text/sw_frmcrsr.cxx:78:#include <unicode/ubidi.h>
+
binfilter/bf_sw/source/core/text/sw_porlay.cxx:94:#include <unicode/ubidi.h>
+
binfilter/bf_sw/source/filter/ww8/sw_wrtw8nds.cxx:60:#include <unicode/ubidi.h>
+
#
+
#proximity.lnk/source/proximity/icudbg.c:33:#include "unicode/ustring.h"
+
#proximity.lnk/source/proximity/icudbg.c:34:#include "unicode/ucnv.h"
+
#proximity.lnk/source/proximity/icudbg.c:35:#include "unicode/unorm.h"
+
#proximity.lnk/source/proximity/icudbg.c:36:#include "unicode/uchar.h"
+
#proximity.lnk/source/proximity/icufun.c:29:#include <unicode/ustring.h>
+
#proximity.lnk/source/proximity/icufun.c:30:#include <unicode/ucnv.h>
+
#proximity.lnk/source/proximity/icufun.c:31:#include <unicode/unorm.h>
+
#
+
#
+
# Modules linking against ICU[A-Z]*LIB
+
#
+
# NOTE: under Windows you'll have to remove those painful *.def files in these
+
# modules, or you will get unresolved externals! e.g.
+
# rm {linguistic,svx,sw,vcl,forms,i18npool,binfilter,svtools}/wntmsci10*/misc/*.def
+
#
+
# NOTE: due to the nature of how Windows searches for DLLs, executable's path
+
# first, if upgrading to a newer ICU version it may be necessary to
+
# copy solver\wntmsci10.pro\bin.m181\regcomp.exe binfilter\wntmsci10.pro\bin
+
# or otherwise the build will break in binfilter/util !
+
#
+
#./linguistic/source/makefile.mk:        $(ICUUCLIB)
+
#./svx/util/makefile.mk:            $(ICUUCLIB)
+
#./svx/util/makefile.mk:            $(ICUUCLIB)
+
#./sw/util/makefile.mk:    $(ICUUCLIB) \
+
#./vcl/util/makefile.mk:           $(ICUUCLIB)        \
+
#./vcl/util/makefile.mk:           $(ICULELIB)        \
+
#./forms/util/makefile.mk:       $(ICUUCLIB) \
+
#./forms/util/makefile.mk:       $(ICUINLIB)
+
#./i18npool/source/collator/makefile.mk:       $(ICUINLIB) \
+
#./i18npool/source/collator/makefile.mk:       $(ICUUCLIB)
+
#./i18npool/source/indexentry/makefile.mk:       $(ICUINLIB) \
+
#./i18npool/source/indexentry/makefile.mk:       $(ICUUCLIB)
+
#./i18npool/util/makefile.mk:      $(ICUINLIB) \
+
#./i18npool/util/makefile.mk:      $(ICUUCLIB)
+
#./binfilter/bf_sw/util/makefile.mk:    $(ICUUCLIB)
+
#./binfilter/bf_svx/util/makefile.mk:            $(ICUUCLIB)\
+
#./svtools/util/makefile.mk:        $(ICUUCLIB)    \
+
 
</pre>
 
</pre>
  
In case you missed it from the comments above, repeating the commands here to
+
For how to create a global GNU ID-utils database see [[Little_Helpers#mkid-script| mkid-script]], <code>mkid-script $SRC_ROOT/'*'</code>
'''touch''' and '''remove''' files:
+
 
 +
=== The lists ===
 +
 
 +
{{Warn|The following lists of modules and source code using ICU directly may be outdated and need to be refreshed!}}
 +
 
 +
==== Dependent source files ====
 +
 
 +
As of milestone '''OOO320_m4''' the dependent source files that have to be
 +
touched and built when upgrading to a newer ICU version, apart from the entire
 +
module ''i18npool'' and the '''''scp2''''' files that depend on
 +
<tt>icuversion.mk</tt>, were as follows.
 +
 
 +
You may touch these files, assuming this list is in
 +
<tt>~/devbase/icu/these_use_icu.txt</tt>, with the following command:
  
 
<pre class="code">
 
<pre class="code">
# Touch these files, assuming the above list is in ~/devbase/icu/these_use_icu.txt:
 
 
touch `grep -v '^#' ~/devbase/icu/these_use_icu.txt | sed -e 's/\([^:]*\):.*/\1/'`
 
touch `grep -v '^#' ~/devbase/icu/these_use_icu.txt | sed -e 's/\([^:]*\):.*/\1/'`
rm {linguistic,svx,sw,vcl,forms,i18npool,binfilter,svtools}/wntmsci10*/misc/*.def
 
 
</pre>
 
</pre>
 
The above lists may be obtained by invoking the following script in the
 
$SRC_ROOT directory:
 
  
 
<pre class="code">
 
<pre class="code">
# Look for ICU...LIB in makefiles to get modules
+
binfilter/bf_svx/source/editeng/svx_impedit2.cxx:103:#include <unicode/ubidi.h>
# Note that the Solaris grep doesn't know option -H, use GNU grep!
+
binfilter/bf_svx/source/outliner/svx_outliner.cxx:66:#include <unicode/ubidi.h>
find . -name makefile.mk -exec grep -H 'ICU[A-Z]*LIB' {} \;
+
binfilter/bf_sw/source/core/text/sw_frmcrsr.cxx:53:#include <unicode/ubidi.h>
 +
binfilter/bf_sw/source/core/text/sw_porlay.cxx:80:#include <unicode/ubidi.h>
 +
forms/source/xforms/warnings_guard_unicode_regex.h:46:#include <unicode/regex.h>
 +
i18npool/inc/warnings_guard_unicode_brkiter.h:46:#include <unicode/brkiter.h>
 +
i18npool/inc/warnings_guard_unicode_calendar.h:46:#include <unicode/calendar.h>
 +
i18npool/inc/warnings_guard_unicode_tblcoll.h:46:#include <unicode/tblcoll.h>
 +
i18npool/source/breakiterator/breakiteratorImpl.cxx:35:#include <unicode/uchar.h>
 +
i18npool/source/breakiterator/breakiterator_unicode.cxx:35:#include <unicode/uchar.h>
 +
i18npool/source/breakiterator/breakiterator_unicode.cxx:36:#include <unicode/locid.h>
 +
i18npool/source/breakiterator/breakiterator_unicode.cxx:37:#include <unicode/rbbi.h>
 +
i18npool/source/breakiterator/breakiterator_unicode.cxx:38:#include <unicode/udata.h>
 +
i18npool/source/breakiterator/xdictionary.cxx:43:#include <unicode/uchar.h>
 +
i18npool/source/characterclassification/cclass_unicode.cxx:38:#include <unicode/uchar.h>
 +
i18npool/source/characterclassification/cclass_unicode_parser.cxx:35:#include <unicode/uchar.h>
 +
i18npool/source/textconversion/textconversion_ko.cxx:41:#include <unicode/uchar.h>
 +
linguistic/source/hhconvdic.cxx:33:#include <unicode/uscript.h>
 +
svtools/source/edit/texteng.cxx:77:#include <unicode/ubidi.h>
 +
svx/inc/pch/precompiled_svx.hxx:897:#include "unicode/ubidi.h"
 +
svx/source/dialog/fntctrl.cxx:39:#include <unicode/uchar.h>
 +
svx/source/editeng/impedit2.cxx:83:#include <unicode/ubidi.h>
 +
svx/source/outliner/outliner.cxx:63:#include <unicode/ubidi.h>
 +
sw/inc/pch/precompiled_sw.hxx:888:#include "unicode/ubidi.h"
 +
sw/source/core/bastyp/breakit.cxx:35:#include <unicode/uchar.h>
 +
sw/source/core/text/frmcrsr.cxx:52:#include <unicode/ubidi.h>
 +
sw/source/core/text/porfld.cxx:70:#include <unicode/ubidi.h>
 +
sw/source/core/text/porlay.cxx:45:#include <unicode/uchar.h>
 +
sw/source/core/text/porlay.cxx:75:#include <unicode/ubidi.h>
 +
sw/source/filter/ww8/writerwordglue.cxx:43:#include <unicode/ubidi.h>          //ubidi_getLogicalRun
 +
vcl/source/gdi/sallayout.cxx:58:#include <unicode/ubidi.h>
 +
vcl/source/gdi/sallayout.cxx:59:#include <unicode/uchar.h>
 +
vcl/source/glyphs/gcach_layout.cxx:172:#include <layout/LayoutEngine.h>
 +
vcl/source/glyphs/gcach_layout.cxx:173:#include <layout/LEFontInstance.h>
 +
vcl/source/glyphs/gcach_layout.cxx:174:#include <layout/LEScripts.h>
 +
vcl/source/glyphs/gcach_layout.cxx:181:#include <unicode/uscript.h>
 +
vcl/source/glyphs/gcach_layout.cxx:182:#include <unicode/ubidi.h>
 +
vcl/source/glyphs/graphite_layout.cxx:64:#include <unicode/uchar.h>
 +
vcl/source/glyphs/graphite_layout.cxx:65:#include <unicode/ubidi.h>
 +
vcl/source/glyphs/graphite_layout.cxx:66:#include <unicode/uscript.h>
 +
</pre>
  
# Using a global GNU ID-utils database, look for include unicode/*, layout/*
+
==== Modules linking against ICU[A-Z]*LIB ====
lid --separator newline --result=grep --regexp 'unicode|layout' | egrep -v '(/build/icu/|com/sun/star/)' | egrep 'include.*[<"/](unicode|layout)/'
+
 
 +
As of milestone '''OOO320_m4''' the modules linking against ICU were as
 +
follows.
 +
 
 +
{{Note| For Windows, you need to '''remove''' those painful *.def files in these modules, or you will get unresolved externals!
 +
 
 +
rm {binfilter,desktop,forms,i18npool,lingucomponent,linguistic,svtools,svx,sw,vcl}/wntmsci12*/misc/*.def
 +
}}
 +
 
 +
{{Note| Due to the nature of how Windows searches for DLLs, executable's path first, if upgrading to a newer ICU version or building touched files when having resynced the CWS to a newer milestone it is necessary to
 +
 
 +
copy solver\wntmsci12.pro\bin\regcomp.exe binfilter\wntmsci12.pro\bin
 +
 
 +
or otherwise the build will break in binfilter/util!
 +
}}
 +
 
 +
<pre class="code">
 +
binfilter/bf_svx/util/makefile.mk: $(ICUUCLIB)\
 +
binfilter/bf_sw/util/makefile.mk:    $(ICUUCLIB)
 +
desktop/util/makefile.mk:    $(ICUDATALIB) \
 +
desktop/util/makefile.mk:    $(ICULELIB) \
 +
desktop/util/makefile.mk:    $(ICULIB) \
 +
desktop/util/makefile.mk:    $(ICUUCLIB) \
 +
forms/util/makefile.mk:        $(ICUINLIB)
 +
forms/util/makefile.mk:        $(ICUUCLIB) \
 +
i18npool/source/collator/makefile.mk: $(ICUDATALIB)
 +
i18npool/source/collator/makefile.mk: $(ICUINLIB) \
 +
i18npool/source/collator/makefile.mk: $(ICUUCLIB) \
 +
i18npool/source/indexentry/makefile.mk: $(ICUDATALIB)
 +
i18npool/source/indexentry/makefile.mk:        $(ICUINLIB) \
 +
i18npool/source/indexentry/makefile.mk:        $(ICUUCLIB) \
 +
i18npool/util/makefile.mk: $(ICUDATALIB)
 +
i18npool/util/makefile.mk: $(ICUINLIB) \
 +
i18npool/util/makefile.mk: $(ICUUCLIB) \
 +
lingucomponent/source/spellcheck/spell/makefile.mk: $(ICUUCLIB) \
 +
linguistic/source/makefile.mk:        $(ICUUCLIB)
 +
svtools/util/makefile.mk: $(ICUUCLIB) \
 +
svx/util/makefile.mk:            $(ICUUCLIB)
 +
svx/util/makefile.mk:            $(ICUUCLIB)
 +
sw/util/makefile.mk:    $(ICUUCLIB) \
 +
sw/util/makefile.mk: $(ICUUCLIB) \
 +
vcl/util/makefile.mk: $(ICUDATALIB) \
 +
vcl/util/makefile.mk:            $(ICULELIB) \
 +
vcl/util/makefile.mk:            $(ICUUCLIB) \
 
</pre>
 
</pre>
 +
  
 
[[Category:Source_directories]]
 
[[Category:Source_directories]]
 +
[[Category:I18n]]

Latest revision as of 10:13, 11 July 2018

The International Components for Unicode or ICU is an external library originally developed by IBM, available at http://www.icu-project.org/. OOo uses the C libraries ICU4C (there is also a set of Java libraries ICU4J available) for glyph layout in CTL languages, Unicode algorithms like collation, break iterators for word boundaries, and calendar systems.

ICU is located in module icu of the source code directories in the OOo build tree.

There's a list of patches applied to the version currently in use.


Versions used

Modules and source code using ICU

Most functionality is encapsulated in the i18npool module and should be accessed using the ::com::sun::star::i18n::* UNO API only, just little source code uses ICU functionality directly for glyph layout, where necessary. Please do not add further dependencies, if possible.

Instead of having to rebuild the entire suite you may get away with a partial rebuild if you carefully touch some files and remove Windows' *.def files in affected modules.

Commands to obtain the lists

The lists below may be obtained by invoking the following commands in the $SRC_ROOT directory:

# Look for ICU...LIB in makefiles to get modules
# Note that the Solaris grep doesn't know option -H, use GNU grep!
find -L $SRC_ROOT -name makefile.mk -exec grep -H 'ICU[A-Z]*LIB' {} \; | sort -u

# Using a global GNU ID-utils database, look for include unicode/*.{h,hpp} and
# layout/*.{h,hpp} in source files.
lid --separator newline --result=grep --regexp 'unicode|layout' | egrep -v '(/build/icu/|com/sun/star/)' | egrep ':[0-9]+:[[:space:]]*#[[:space:]]*include[[:space:]]+[<"](unicode|layout)/[^/]+\.(h|hpp)[">]' | sort -u

For how to create a global GNU ID-utils database see mkid-script, mkid-script $SRC_ROOT/'*'

The lists

Documentation caution.png The following lists of modules and source code using ICU directly may be outdated and need to be refreshed!

Dependent source files

As of milestone OOO320_m4 the dependent source files that have to be touched and built when upgrading to a newer ICU version, apart from the entire module i18npool and the scp2 files that depend on icuversion.mk, were as follows.

You may touch these files, assuming this list is in ~/devbase/icu/these_use_icu.txt, with the following command:

touch `grep -v '^#' ~/devbase/icu/these_use_icu.txt | sed -e 's/\([^:]*\):.*/\1/'`
binfilter/bf_svx/source/editeng/svx_impedit2.cxx:103:#include <unicode/ubidi.h>
binfilter/bf_svx/source/outliner/svx_outliner.cxx:66:#include <unicode/ubidi.h>
binfilter/bf_sw/source/core/text/sw_frmcrsr.cxx:53:#include <unicode/ubidi.h>
binfilter/bf_sw/source/core/text/sw_porlay.cxx:80:#include <unicode/ubidi.h>
forms/source/xforms/warnings_guard_unicode_regex.h:46:#include <unicode/regex.h>
i18npool/inc/warnings_guard_unicode_brkiter.h:46:#include <unicode/brkiter.h>
i18npool/inc/warnings_guard_unicode_calendar.h:46:#include <unicode/calendar.h>
i18npool/inc/warnings_guard_unicode_tblcoll.h:46:#include <unicode/tblcoll.h>
i18npool/source/breakiterator/breakiteratorImpl.cxx:35:#include <unicode/uchar.h>
i18npool/source/breakiterator/breakiterator_unicode.cxx:35:#include <unicode/uchar.h>
i18npool/source/breakiterator/breakiterator_unicode.cxx:36:#include <unicode/locid.h>
i18npool/source/breakiterator/breakiterator_unicode.cxx:37:#include <unicode/rbbi.h>
i18npool/source/breakiterator/breakiterator_unicode.cxx:38:#include <unicode/udata.h>
i18npool/source/breakiterator/xdictionary.cxx:43:#include <unicode/uchar.h>
i18npool/source/characterclassification/cclass_unicode.cxx:38:#include <unicode/uchar.h>
i18npool/source/characterclassification/cclass_unicode_parser.cxx:35:#include <unicode/uchar.h>
i18npool/source/textconversion/textconversion_ko.cxx:41:#include <unicode/uchar.h>
linguistic/source/hhconvdic.cxx:33:#include <unicode/uscript.h>
svtools/source/edit/texteng.cxx:77:#include <unicode/ubidi.h>
svx/inc/pch/precompiled_svx.hxx:897:#include "unicode/ubidi.h"
svx/source/dialog/fntctrl.cxx:39:#include <unicode/uchar.h>
svx/source/editeng/impedit2.cxx:83:#include <unicode/ubidi.h>
svx/source/outliner/outliner.cxx:63:#include <unicode/ubidi.h>
sw/inc/pch/precompiled_sw.hxx:888:#include "unicode/ubidi.h"
sw/source/core/bastyp/breakit.cxx:35:#include <unicode/uchar.h>
sw/source/core/text/frmcrsr.cxx:52:#include <unicode/ubidi.h>
sw/source/core/text/porfld.cxx:70:#include <unicode/ubidi.h>
sw/source/core/text/porlay.cxx:45:#include <unicode/uchar.h>
sw/source/core/text/porlay.cxx:75:#include <unicode/ubidi.h>
sw/source/filter/ww8/writerwordglue.cxx:43:#include <unicode/ubidi.h>          //ubidi_getLogicalRun
vcl/source/gdi/sallayout.cxx:58:#include <unicode/ubidi.h>
vcl/source/gdi/sallayout.cxx:59:#include <unicode/uchar.h>
vcl/source/glyphs/gcach_layout.cxx:172:#include <layout/LayoutEngine.h>
vcl/source/glyphs/gcach_layout.cxx:173:#include <layout/LEFontInstance.h>
vcl/source/glyphs/gcach_layout.cxx:174:#include <layout/LEScripts.h>
vcl/source/glyphs/gcach_layout.cxx:181:#include <unicode/uscript.h>
vcl/source/glyphs/gcach_layout.cxx:182:#include <unicode/ubidi.h>
vcl/source/glyphs/graphite_layout.cxx:64:#include <unicode/uchar.h>
vcl/source/glyphs/graphite_layout.cxx:65:#include <unicode/ubidi.h>
vcl/source/glyphs/graphite_layout.cxx:66:#include <unicode/uscript.h>

Modules linking against ICU[A-Z]*LIB

As of milestone OOO320_m4 the modules linking against ICU were as follows.

Documentation note.png For Windows, you need to remove those painful *.def files in these modules, or you will get unresolved externals!
rm {binfilter,desktop,forms,i18npool,lingucomponent,linguistic,svtools,svx,sw,vcl}/wntmsci12*/misc/*.def
Documentation note.png Due to the nature of how Windows searches for DLLs, executable's path first, if upgrading to a newer ICU version or building touched files when having resynced the CWS to a newer milestone it is necessary to
copy solver\wntmsci12.pro\bin\regcomp.exe binfilter\wntmsci12.pro\bin

or otherwise the build will break in binfilter/util!

binfilter/bf_svx/util/makefile.mk:			$(ICUUCLIB)\
binfilter/bf_sw/util/makefile.mk:    $(ICUUCLIB)
desktop/util/makefile.mk:    $(ICUDATALIB) \
desktop/util/makefile.mk:    $(ICULELIB) \
desktop/util/makefile.mk:    $(ICULIB) \
desktop/util/makefile.mk:    $(ICUUCLIB) \
forms/util/makefile.mk:        $(ICUINLIB)
forms/util/makefile.mk:        $(ICUUCLIB) \
i18npool/source/collator/makefile.mk:		$(ICUDATALIB)
i18npool/source/collator/makefile.mk:		$(ICUINLIB) \
i18npool/source/collator/makefile.mk:		$(ICUUCLIB) \
i18npool/source/indexentry/makefile.mk:		$(ICUDATALIB)
i18npool/source/indexentry/makefile.mk:        $(ICUINLIB) \
i18npool/source/indexentry/makefile.mk:        $(ICUUCLIB) \
i18npool/util/makefile.mk:		$(ICUDATALIB)
i18npool/util/makefile.mk:		$(ICUINLIB) \
i18npool/util/makefile.mk:		$(ICUUCLIB) \
lingucomponent/source/spellcheck/spell/makefile.mk:		$(ICUUCLIB) \
linguistic/source/makefile.mk:        $(ICUUCLIB)
svtools/util/makefile.mk:		$(ICUUCLIB)		\
svx/util/makefile.mk:             $(ICUUCLIB)
svx/util/makefile.mk:            $(ICUUCLIB)
sw/util/makefile.mk:    $(ICUUCLIB) \
sw/util/makefile.mk:	$(ICUUCLIB) \
vcl/util/makefile.mk:			$(ICUDATALIB)		\
vcl/util/makefile.mk:            $(ICULELIB)			\
vcl/util/makefile.mk:            $(ICUUCLIB)			\
Personal tools