Difference between revisions of "ICU"
(→Versions used: 4.0.1 for OOo3.2) |
|||
Line 115: | Line 115: | ||
follows. | 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 | 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 | copy solver\wntmsci12.pro\bin\regcomp.exe binfilter\wntmsci12.pro\bin |
Revision as of 20:17, 1 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.
Contents
Versions used
- ICU 4.0.1 introduced with CWS OOO320 icuooo32 for OOo3.2
- ICU 4.0 introduced with CWS DEV300 i18n42 for OOo3.1
- ICU 3.6 introduced with CWS SRC680 icuupgrade 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
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
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.
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) \