[Libreoffice-commits] .: 17 commits - basic/source configure.ac connectivity/workben cppu/source crashrep/source editeng/Library_editeng.mk forms/Library_frm.mk hunspell/StaticLibrary_hunspell.mk i18npool/CppunitTest_i18npool_test_breakiterator.mk i18npool/CppunitTest_i18npool_test_textsearch.mk i18npool/Executable_gencoll_rule.mk i18npool/Library_i18npool.mk i18npool/Library_i18nsearch.mk i18nutil/Library_i18nutil.mk icu/ExternalPackage_icu.mk icu/ExternalProject_icu.mk icu/icu4c-buffer-overflow.patch icu/icu4c-mkdir.patch icu/icu4c-solarisgcc.patch icu/icu4c-warnings.patch icu/Makefile icu/makefile.mk icu/Module_icu.mk icu/prj icu/UnpackedTarball_icu_data.mk icu/UnpackedTarball_icu.mk l10ntools/Executable_helpex.mk l10ntools/Executable_stringex.mk l10ntools/Executable_transex3.mk l10ntools/Executable_treex.mk l10ntools/Executable_uiex.mk l10ntools/Executable_xrmex.mk l10ntools/source l10ntools/StaticLibrary_transex.mk linguistic/Library_lng.mk lotuswordpro/Library_lwpft.mk Makefile.in M odule_tail_build.mk RepositoryExternal.mk RepositoryModule_ooo.mk sdext/source sd/source slideshow/source solenv/gbuild svtools/Library_svt.mk svx/Library_svx.mk sw/Library_msword.mk sw/Library_sw.mk tail_build/prj unotools/source vcl/Library_vcl.mk

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Thu Dec 27 17:56:35 PST 2012


 Makefile.in                                                      |    6 
 Module_tail_build.mk                                             |    1 
 RepositoryExternal.mk                                            |   13 
 RepositoryModule_ooo.mk                                          |    1 
 basic/source/runtime/methods.cxx                                 |    4 
 configure.ac                                                     |    6 
 connectivity/workben/testmoz/main.cxx                            |    1 
 cppu/source/AffineBridge/AffineBridge.cxx                        |    4 
 cppu/source/LogBridge/LogBridge.cxx                              |    7 
 cppu/source/UnsafeBridge/UnsafeBridge.cxx                        |    7 
 crashrep/source/unx/main.cxx                                     |   10 
 editeng/Library_editeng.mk                                       |    5 
 forms/Library_frm.mk                                             |    1 
 hunspell/StaticLibrary_hunspell.mk                               |    2 
 i18npool/CppunitTest_i18npool_test_breakiterator.mk              |    2 
 i18npool/CppunitTest_i18npool_test_textsearch.mk                 |    1 
 i18npool/Executable_gencoll_rule.mk                              |    1 
 i18npool/Library_i18npool.mk                                     |    1 
 i18npool/Library_i18nsearch.mk                                   |    1 
 i18nutil/Library_i18nutil.mk                                     |    2 
 icu/ExternalPackage_icu.mk                                       |   88 ++
 icu/ExternalProject_icu.mk                                       |   85 ++
 icu/Makefile                                                     |    7 
 icu/Module_icu.mk                                                |   21 
 icu/UnpackedTarball_icu.mk                                       |   44 +
 icu/UnpackedTarball_icu_data.mk                                  |   14 
 icu/icu4c-buffer-overflow.patch                                  |    4 
 icu/icu4c-mkdir.patch                                            |    2 
 icu/icu4c-solarisgcc.patch                                       |   18 
 icu/icu4c-warnings.patch                                         |    2 
 icu/makefile.mk                                                  |  352 ----------
 icu/prj/build.lst                                                |    2 
 icu/prj/d.lst                                                    |   49 -
 l10ntools/Executable_helpex.mk                                   |    1 
 l10ntools/Executable_stringex.mk                                 |    1 
 l10ntools/Executable_transex3.mk                                 |    1 
 l10ntools/Executable_treex.mk                                    |    3 
 l10ntools/Executable_uiex.mk                                     |    1 
 l10ntools/Executable_xrmex.mk                                    |    1 
 l10ntools/StaticLibrary_transex.mk                               |    5 
 l10ntools/source/uimerge.cxx                                     |   99 +-
 linguistic/Library_lng.mk                                        |    5 
 lotuswordpro/Library_lwpft.mk                                    |    1 
 sd/source/filter/ppt/propread.cxx                                |    2 
 sd/source/filter/ppt/propread.hxx                                |    2 
 sd/source/ui/remotecontrol/BluetoothServer.cxx                   |    8 
 sdext/source/pdfimport/tree/pdfiprocessor.cxx                    |    2 
 slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionImpl.cxx |    2 
 slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionImpl.hxx |    2 
 slideshow/source/engine/OGLTrans/win/OGLTrans_TransitionImpl.cxx |    2 
 slideshow/source/engine/OGLTrans/win/OGLTrans_TransitionImpl.hxx |    2 
 solenv/gbuild/TargetLocations.mk                                 |    5 
 solenv/gbuild/UI.mk                                              |  154 +---
 svtools/Library_svt.mk                                           |    1 
 svx/Library_svx.mk                                               |    5 
 sw/Library_msword.mk                                             |    1 
 sw/Library_sw.mk                                                 |    1 
 tail_build/prj/build.lst                                         |    2 
 unotools/source/config/configitem.cxx                            |   13 
 unotools/source/config/fltrcfg.cxx                               |   28 
 vcl/Library_vcl.mk                                               |    1 
 61 files changed, 501 insertions(+), 614 deletions(-)

New commits:
commit 45a85b5af82d130bb3eea2b6a168f4ceaff9975d
Author: Jan Holesovsky <kendy at suse.cz>
Date:   Fri Dec 28 02:19:28 2012 +0100

    Get rid of C2U in unotools.
    
    Change-Id: I0ec321e1e4cdf7f20dba31f42ff493b2f3c7e74d

diff --git a/unotools/source/config/configitem.cxx b/unotools/source/config/configitem.cxx
index a3eb762..3e92cee 100644
--- a/unotools/source/config/configitem.cxx
+++ b/unotools/source/config/configitem.cxx
@@ -41,8 +41,6 @@
 #include <rtl/ustrbuf.hxx>
 
 using namespace utl;
-using rtl::OUString;
-using rtl::OString;
 using namespace com::sun::star::uno;
 using namespace com::sun::star::util;
 using namespace com::sun::star::lang;
@@ -50,7 +48,6 @@ using namespace com::sun::star::beans;
 using namespace com::sun::star::container;
 using namespace com::sun::star::configuration;
 
-#define C2U(cChar) OUString(RTL_CONSTASCII_USTRINGPARAM(cChar))
 #include <cppuhelper/implbase1.hxx> // helper for implementations
 
 #ifdef DBG_UTIL
@@ -285,7 +282,7 @@ void ConfigItem::impl_packLocalizedProperties(  const   Sequence< OUString >&
     for( nSourceCounter=0; nSourceCounter<nSourceSize; ++nSourceCounter )
     {
         // If item a special localized one ... convert and pack it ...
-        if( lInValues[nSourceCounter].getValueTypeName() == C2U("com.sun.star.uno.XInterface") )
+        if( lInValues[nSourceCounter].getValueTypeName() == "com.sun.star.uno.XInterface" )
         {
             lInValues[nSourceCounter] >>= xLocalizedNode;
             Reference< XNameContainer > xSetAccess( xLocalizedNode, UNO_QUERY );
@@ -361,10 +358,10 @@ void ConfigItem::impl_unpackLocalizedProperties(    const   Sequence< OUString >
         // If item a special localized one ... split it and insert his parts to output lists ...
         if( lInValues[nSourceCounter].getValueType() == ::getCppuType( (const Sequence< PropertyValue >*)NULL ) )
         {
-            lInValues[nSourceCounter]   >>= lProperties             ;
-            sNodeName               =   lInNames[nSourceCounter]    ;
-            sNodeName               +=  C2U("/")                    ;
-            nPropertiesSize         =   lProperties.getLength()     ;
+            lInValues[nSourceCounter] >>= lProperties;
+            nPropertiesSize = lProperties.getLength();
+
+            sNodeName = lInNames[nSourceCounter] + "/";
 
             if( (nDestinationCounter+nPropertiesSize) > lOutNames.getLength() )
             {
diff --git a/unotools/source/config/fltrcfg.cxx b/unotools/source/config/fltrcfg.cxx
index 834e92c..4a2369f 100644
--- a/unotools/source/config/fltrcfg.cxx
+++ b/unotools/source/config/fltrcfg.cxx
@@ -28,10 +28,6 @@
 using namespace utl;
 using namespace com::sun::star::uno;
 
-using ::rtl::OUString;
-
-#define C2U(cChar) OUString(RTL_CONSTASCII_USTRINGPARAM(cChar))
-
 // -----------------------------------------------------------------------
 #define FILTERCFG_WORD_CODE             0x0001
 #define FILTERCFG_WORD_STORAGE          0x0002
@@ -94,8 +90,8 @@ void    SvtAppFilterOptions_Impl::Commit()
 {
     Sequence<OUString> aNames(2);
     OUString* pNames = aNames.getArray();
-    pNames[0] = C2U("Load");
-    pNames[1] = C2U("Save");
+    pNames[0] = "Load";
+    pNames[1] = "Save";
     Sequence<Any> aValues(aNames.getLength());
     Any* pValues = aValues.getArray();
 
@@ -115,8 +111,8 @@ void    SvtAppFilterOptions_Impl::Load()
 {
     Sequence<OUString> aNames(2);
     OUString* pNames = aNames.getArray();
-    pNames[0] = C2U("Load");
-    pNames[1] = C2U("Save");
+    pNames[0] = "Load";
+    pNames[1] = "Save";
 
     Sequence<Any> aValues = GetProperties(aNames);
     const Any* pValues = aValues.getConstArray();
@@ -153,7 +149,7 @@ void SvtWriterFilterOptions_Impl::Commit()
     SvtAppFilterOptions_Impl::Commit();
 
     Sequence<OUString> aNames(1);
-    aNames[0] = C2U("Executable");
+    aNames[0] = "Executable";
     Sequence<Any> aValues(1);
     aValues[0] <<= bLoadExecutable;
 
@@ -165,7 +161,7 @@ void SvtWriterFilterOptions_Impl::Load()
     SvtAppFilterOptions_Impl::Load();
 
     Sequence<OUString> aNames(1);
-    aNames[0] = C2U("Executable");
+    aNames[0] = "Executable";
 
     Sequence<Any> aValues = GetProperties(aNames);
     const Any* pValues = aValues.getConstArray();
@@ -199,7 +195,7 @@ void SvtCalcFilterOptions_Impl::Commit()
     SvtAppFilterOptions_Impl::Commit();
 
     Sequence<OUString> aNames(1);
-    aNames[0] = C2U("Executable");
+    aNames[0] = "Executable";
     Sequence<Any> aValues(1);
     aValues[0] <<= bLoadExecutable;
 
@@ -211,7 +207,7 @@ void SvtCalcFilterOptions_Impl::Load()
     SvtAppFilterOptions_Impl::Load();
 
     Sequence<OUString> aNames(1);
-    aNames[0] = C2U("Executable");
+    aNames[0] = "Executable";
 
     Sequence<Any> aValues = GetProperties(aNames);
     const Any* pValues = aValues.getConstArray();
@@ -227,9 +223,9 @@ struct SvtFilterOptions_Impl
     SvtAppFilterOptions_Impl aImpressCfg;
 
     SvtFilterOptions_Impl() :
-        aWriterCfg(C2U("Office.Writer/Filter/Import/VBA")),
-        aCalcCfg(C2U("Office.Calc/Filter/Import/VBA")),
-        aImpressCfg(C2U("Office.Impress/Filter/Import/VBA"))
+        aWriterCfg("Office.Writer/Filter/Import/VBA"),
+        aCalcCfg("Office.Calc/Filter/Import/VBA"),
+        aImpressCfg("Office.Impress/Filter/Import/VBA")
     {
         nFlags = FILTERCFG_WORD_CODE |
             FILTERCFG_WORD_STORAGE |
@@ -301,7 +297,7 @@ sal_Bool SvtFilterOptions_Impl::IsFlag( sal_uLong nFlag ) const
 // -----------------------------------------------------------------------
 
 SvtFilterOptions::SvtFilterOptions() :
-    ConfigItem( C2U("Office.Common/Filter/Microsoft") ),
+    ConfigItem( "Office.Common/Filter/Microsoft" ),
     pImp(new SvtFilterOptions_Impl)
 {
     RTL_LOGFILE_CONTEXT(aLog, "unotools SvtFilterOptions::SvtFilterOptions()");
commit 8c3c491d4f419b496ac25f306b4b4ea7966465d7
Author: Julien Nabet <serval2412 at yahoo.fr>
Date:   Thu Dec 27 22:57:31 2012 +0100

    Some cppcheck cleaning
    
    Change-Id: Iac1c26d031e8196ef93cb403dc60f07e0eef6380

diff --git a/connectivity/workben/testmoz/main.cxx b/connectivity/workben/testmoz/main.cxx
index 10e9bc8..b9efa69 100644
--- a/connectivity/workben/testmoz/main.cxx
+++ b/connectivity/workben/testmoz/main.cxx
@@ -410,7 +410,6 @@ Reference< ::com::sun::star::sdbc::XConnection> TestConnected
             break;
         default:
             return pConnection;
-            break;
     }
     pConnection =
         pDriver->connect(url,aValue);
diff --git a/cppu/source/AffineBridge/AffineBridge.cxx b/cppu/source/AffineBridge/AffineBridge.cxx
index 7d62b46..86d79f1 100644
--- a/cppu/source/AffineBridge/AffineBridge.cxx
+++ b/cppu/source/AffineBridge/AffineBridge.cxx
@@ -319,9 +319,7 @@ void AffineBridge::v_leave(void)
 
 int  AffineBridge::v_isValid(rtl::OUString * pReason)
 {
-    int result = 1;
-
-    result = m_enterCount > 0;
+    int result = m_enterCount > 0;
     if (!result)
         *pReason = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("not entered"));
 
diff --git a/cppu/source/LogBridge/LogBridge.cxx b/cppu/source/LogBridge/LogBridge.cxx
index 0d161fb..a1cacf4 100644
--- a/cppu/source/LogBridge/LogBridge.cxx
+++ b/cppu/source/LogBridge/LogBridge.cxx
@@ -109,12 +109,11 @@ void LogBridge::v_leave(void)
 
 int LogBridge::v_isValid(rtl::OUString * pReason)
 {
-    int result = 1;
-
-    result = m_count > 0;
+    int result = m_count > 0;
     if (!result)
+    {
         *pReason = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("not entered"));
-
+    }
     else
     {
         result = m_threadId == osl_getThreadIdentifier(NULL);
diff --git a/cppu/source/UnsafeBridge/UnsafeBridge.cxx b/cppu/source/UnsafeBridge/UnsafeBridge.cxx
index 96a5310..382ed3e 100644
--- a/cppu/source/UnsafeBridge/UnsafeBridge.cxx
+++ b/cppu/source/UnsafeBridge/UnsafeBridge.cxx
@@ -118,12 +118,11 @@ void UnsafeBridge::v_leave(void)
 
 int UnsafeBridge::v_isValid(rtl::OUString * pReason)
 {
-    int result = 1;
-
-    result = m_count > 0;
+    int result = m_count > 0;
     if (!result)
+    {
         *pReason = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("not entered"));
-
+    }
     else
     {
         result = m_threadId == osl_getThreadIdentifier(NULL);
diff --git a/crashrep/source/unx/main.cxx b/crashrep/source/unx/main.cxx
index d70780f..652593d 100644
--- a/crashrep/source/unx/main.cxx
+++ b/crashrep/source/unx/main.cxx
@@ -336,7 +336,7 @@ bool SendHTTPRequest(
 
                 if ( pszProxyServer )
                     sprintf( buffer,
-                    "POST http://%s:%d/soap/servlet/rpcrouter HTTP/1.0\r\n"
+                    "POST http://%s:%u/soap/servlet/rpcrouter HTTP/1.0\r\n"
                         "Content-Type: text/xml; charset=\"utf-8\"\r\n"
                         "Content-Length: %d\r\n"
                         "SOAPAction: \"\"\r\n\r\n",
@@ -525,21 +525,19 @@ bool send_crash_report( const boost::unordered_map< string, string >& rSettings
 
 static bool append_file( const char *filename, string& rString )
 {
-    char buf[1024];
-    bool bSuccess = false;
-
     FILE *fp = fopen( filename, "r" );
     if ( fp )
     {
+        char buf[1024];
         while (fgets(buf, sizeof(buf), fp) != NULL)
         {
             rString.append( buf );
         }
         fclose( fp );
-        bSuccess = true;
+        return true;
     }
 
-    return bSuccess;
+    return false;
 }
 
 string crash_get_details( const boost::unordered_map< string, string >& rSettings )
commit a8fdb0ba4d83e7df5b8c325aabf4ba2fa28e9545
Author: Christopher Copits <ChrisCDev at live.com>
Date:   Wed Dec 19 18:22:17 2012 -0500

    fdo#58222 The BASIC HEX Command now returns uppercase hexadecimal characters
    
    Instead of returning lowercase characters with BASIC's HEX command, uppercase characters are now returned. Digits from 0-9 are not affected. This change utilizes on OUString's toAsciiUpperCase() method.
    
    Change-Id: Id6ea93a7635c1913c8592bf5519bdd7391f4e3bc
    Reviewed-on: https://gerrit.libreoffice.org/1428
    Reviewed-by: Norbert Thiebaud <nthiebaud at gmail.com>
    Tested-by: Norbert Thiebaud <nthiebaud at gmail.com>

diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx
index cbf7bda..20fee90 100644
--- a/basic/source/runtime/methods.cxx
+++ b/basic/source/runtime/methods.cxx
@@ -868,7 +868,9 @@ RTLFUNC(Hex)
         sal_uInt32 nVal = pArg->IsInteger() ?
             static_cast<sal_uInt16>(pArg->GetInteger()) :
             static_cast<sal_uInt32>(pArg->GetLong());
-        rPar.Get(0)->PutString( rtl::OUString::valueOf( sal_Int64(nVal), 16 ) );
+        rtl::OUString aStr(rtl::OUString::valueOf( sal_Int64(nVal), 16 ));
+        aStr = aStr.toAsciiUpperCase();
+        rPar.Get(0)->PutString( aStr );
     }
 }
 
commit a1ff0ec108822d593bb293b6d37a34e6e7c012e5
Author: Julien Nabet <serval2412 at yahoo.fr>
Date:   Thu Dec 27 20:36:21 2012 +0100

    Fix 'Primitive::operator=' should return 'Primitive &
    
    I applied the same for Windows part, hope there won't be any building pb
    
    Change-Id: Id62c8c5f60e7a525d82c36ced944b71cc5c28b78

diff --git a/slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionImpl.cxx b/slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionImpl.cxx
index dda9154..1142f61 100644
--- a/slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionImpl.cxx
+++ b/slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionImpl.cxx
@@ -1011,7 +1011,7 @@ void SEllipseTranslate::interpolate(double t,double /* SlideWidthScale */,double
     glTranslated(x, 0, y);
 }
 
-const Primitive& Primitive::operator=(const Primitive& rvalue)
+Primitive& Primitive::operator=(const Primitive& rvalue)
 {
     Primitive aTmp(rvalue);
     swap(aTmp);
diff --git a/slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionImpl.hxx b/slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionImpl.hxx
index 0724de5..3760683 100644
--- a/slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionImpl.hxx
+++ b/slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionImpl.hxx
@@ -272,7 +272,7 @@ public:
     Primitive() {}
     // making copy constructor explicit makes the class un-suitable for use with stl containers
     Primitive(const Primitive& rvalue);
-    const Primitive& operator=(const Primitive& rvalue);
+    Primitive& operator=(const Primitive& rvalue);
 
     void swap(Primitive& rOther);
 
diff --git a/slideshow/source/engine/OGLTrans/win/OGLTrans_TransitionImpl.cxx b/slideshow/source/engine/OGLTrans/win/OGLTrans_TransitionImpl.cxx
index 66773c4..fdf575d 100644
--- a/slideshow/source/engine/OGLTrans/win/OGLTrans_TransitionImpl.cxx
+++ b/slideshow/source/engine/OGLTrans/win/OGLTrans_TransitionImpl.cxx
@@ -859,7 +859,7 @@ RotateAndScaleDepthByHeight* RotateAndScaleDepthByHeight::clone()
     return new RotateAndScaleDepthByHeight(*this);
 }
 
-const Primitive& Primitive::operator=(const Primitive& rvalue)
+Primitive& Primitive::operator=(const Primitive& rvalue)
 {
     for(unsigned int i( 0 ); i < rvalue.Operations.size(); ++i)
         Operations.push_back(rvalue.Operations[i]->clone());
diff --git a/slideshow/source/engine/OGLTrans/win/OGLTrans_TransitionImpl.hxx b/slideshow/source/engine/OGLTrans/win/OGLTrans_TransitionImpl.hxx
index d9cb6ca..9ad9fb0 100644
--- a/slideshow/source/engine/OGLTrans/win/OGLTrans_TransitionImpl.hxx
+++ b/slideshow/source/engine/OGLTrans/win/OGLTrans_TransitionImpl.hxx
@@ -224,7 +224,7 @@ public:
 
     void applyOperations(double nTime, double SlideWidthScale, double SlideHeightScale);
     void display(double nTime, double SlideWidthScale, double SlideHeightScale);
-    const Primitive& operator=(const Primitive& rvalue);
+    Primitive& operator=(const Primitive& rvalue);
 
     /** PushBack a vertex,normal, and tex coord. Each SlideLocation is where on the slide is mapped to this location ( from (0,0) to (1,1)  ). This will make sure the correct aspect ratio is used, and helps to make slides begin and end at the correct position. (0,0) is the top left of the slide, and (1,1) is the bottom right.
 
commit 8068f50276659058ef02958996d8ef84cd89017f
Author: Julien Nabet <serval2412 at yahoo.fr>
Date:   Thu Dec 27 20:28:15 2012 +0100

    Fix 'PropEntry::operator=' should return 'PropEntry &'
    
    Change-Id: Id9a772771fe1f1694d1e247c20447461175495ff

diff --git a/sd/source/filter/ppt/propread.cxx b/sd/source/filter/ppt/propread.cxx
index 893b730..1e698db 100644
--- a/sd/source/filter/ppt/propread.cxx
+++ b/sd/source/filter/ppt/propread.cxx
@@ -39,7 +39,7 @@ PropEntry::PropEntry( const PropEntry& rProp ) :
     memcpy( (void*)mpBuf, (void*)rProp.mpBuf, mnSize );
 };
 
-const PropEntry& PropEntry::operator=(const PropEntry& rPropEntry)
+PropEntry& PropEntry::operator=(const PropEntry& rPropEntry)
 {
     if ( this != &rPropEntry )
     {
diff --git a/sd/source/filter/ppt/propread.hxx b/sd/source/filter/ppt/propread.hxx
index 9a9077c..c983e62 100644
--- a/sd/source/filter/ppt/propread.hxx
+++ b/sd/source/filter/ppt/propread.hxx
@@ -113,7 +113,7 @@ struct PropEntry
     PropEntry( const PropEntry& rProp );
     ~PropEntry() { delete[] mpBuf; } ;
 
-    const PropEntry& operator=(const PropEntry& rPropEntry);
+    PropEntry& operator=(const PropEntry& rPropEntry);
 };
 
 class PropItem : public SvMemoryStream
commit ac9001b5dcc480942c19d9e06ece70cbc24444e1
Author: Norbert Thiebaud <nthiebaud at gmail.com>
Date:   Thu Dec 27 12:49:46 2012 -0600

    fix UnpackedTarget strip_components snaffu
    
    Change-Id: I002470c2888d6dec876af18c2c016cc789eb399e

diff --git a/icu/UnpackedTarball_icu_data.mk b/icu/UnpackedTarball_icu_data.mk
index 25274f1..bc406a0 100644
--- a/icu/UnpackedTarball_icu_data.mk
+++ b/icu/UnpackedTarball_icu_data.mk
@@ -9,6 +9,6 @@
 
 $(eval $(call gb_UnpackedTarball_UnpackedTarball,icu_data))
 
-$(eval $(call gb_UnpackedTarball_set_tarball,icu_data,$(ICU_DATA_SUBSET_ZIP)))
+$(eval $(call gb_UnpackedTarball_set_tarball,icu_data,$(ICU_DATA_SUBSET_ZIP),0))
 
 # vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/UnpackedTarball.mk b/solenv/gbuild/UnpackedTarball.mk
index f68da67..e6ed638 100644
--- a/solenv/gbuild/UnpackedTarball.mk
+++ b/solenv/gbuild/UnpackedTarball.mk
@@ -21,7 +21,7 @@ gb_UnpackedTarget_STRIP_COMPONENTS_ZIP_DEFAULT := 0
 define gb_UnpackedTarget__get_strip_components
 $(strip $(if $(2),\
 	$(2),\
-	$(if $(filter .zip,$(suffix $(1))),\
+	$(if $(filter zip,$(suffix $(1))),\
 		$(gb_UnpackedTarget_STRIP_COMPONENTS_ZIP_DEFAULT),\
 		$(gb_UnpackedTarget_STRIP_COMPONENTS_TAR_DEFAULT) \
 	) \
commit 879f3aa79f524658f0698717e3eef5c361310531
Author: Tor Lillqvist <tml at iki.fi>
Date:   Thu Dec 27 19:23:04 2012 +0200

    Fix icu cross-compilation
    
    We need to pass the location of the icu build root for the BUILD platform with
    the --with-cross-build option when configuring icu for cross-compilation (to
    the HOST platform). I.e. we always need to build it for the BUILD
    platform. Surely this could be done in a more elegant way, but I got lost in
    the mess, and just hacked it in the cross-toolset rule in Makefile.in.
    
    Change-Id: Ia5e9d13d01067c6dded1fdc86c56f8f39aae6bc8

diff --git a/Makefile.in b/Makefile.in
index d4d4b9f..2a56db0 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -292,7 +292,13 @@ build-nocheck : export SKIP_TESTS := YES
 build-nocheck : build
 
 cross-toolset: bootstrap fetch
+# We need to build icu for the build platform, as building icu for the host
+# platform requires tools built as part of icu that can run on the build
+# platform. see --with-cross-build in icu/ExternalProject_icu.mk
+	$(GNUMAKE) gb_Side=build icu
+#
 	cd cross_toolset && $(GNUMAKE) -j $(PARALLELISM) $(GMAKE_OPTIONS)
+#
 ifneq (,$(filter DESKTOP,$(BUILD_TYPE)))
 ifneq (WNT,$(OS))
 # We need to build nss for nsinstall... See NSINSTALL=... in nss/makefile.mk
diff --git a/icu/ExternalProject_icu.mk b/icu/ExternalProject_icu.mk
index 0758d37..2be2957 100644
--- a/icu/ExternalProject_icu.mk
+++ b/icu/ExternalProject_icu.mk
@@ -37,7 +37,7 @@ $(call gb_ExternalProject_get_state_target,icu,build) :
 	$(if $(filter YES,$(MINGW_SHARED_GCCLIB)),-shared-libgcc)" \
 	./configure
 	$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) \
-	--with-cross-build=$(call gb_UnpackedTarball_get_dir,icu)/source) \
+		--with-cross-build=$(subst $(INPATH),$(INPATH_FOR_BUILD),$(call gb_UnpackedTarball_get_dir,icu))/source) \
 	--enable-layout --disable-static --enable-shared --disable-samples \
 	&& $(GNUMAKE) \
 	&& for lib in icudata icuin icuuc icule icutu; do \
@@ -76,7 +76,7 @@ $(call gb_ExternalProject_get_state_target,icu,build) :
 		$(if $(filter TRUE,$(DISABLE_DYNLOADING)),--enable-static --disable-shared,\
 		--disable-static --enable-shared $(if $(filter ANDROID,$(OS)),--with-library-suffix=lo)) \
 		$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)\
-		--with-cross-build=$(call gb_UnpackedTarball_get_dir,icu)/source)\
+			--with-cross-build=$(subst $(INPATH),$(INPATH_FOR_BUILD),$(call gb_UnpackedTarball_get_dir,icu))/source)\
 	&& $(GNUMAKE) \
 	&& touch $@
 
commit b3c6ae8f5022b5f600043857151c1aff3b6a01ba
Author: Tor Lillqvist <tml at iki.fi>
Date:   Thu Dec 27 18:27:59 2012 +0200

    Surely we want to pass *relative* pathnames to the tar pipe
    
    Change-Id: I874957a399c306bfdb057322edb09c0b56373f10

diff --git a/configure.ac b/configure.ac
index e5b44da..b100aee 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4167,9 +4167,9 @@ if test "$cross_compiling" = "yes"; then
         Makefile.in \
         config/config_*.h.in \
         bin/get_config_variables \
-        $srcdir/solenv/bin/getcompver.awk \
-        $SRC_ROOT/solenv/inc/langlist.mk \
-        $SRC_ROOT/solenv/inc/postset.mk \
+        solenv/bin/getcompver.awk \
+        solenv/inc/langlist.mk \
+        solenv/inc/postset.mk \
     | (cd CONF-FOR-BUILD && tar xf -)
     (
     unset COM GUI GUIBASE OS CPU CPUNAME
commit f45a07d6f4eefc75d983d7aca2b57d075749b4e7
Author: David Tardon <dtardon at redhat.com>
Date:   Thu Dec 27 16:11:29 2012 +0100

    fix delivery of qtz "translations"
    
    Change-Id: I2f0ae1eff5bd009a7cb467b38c1743eff51dc563

diff --git a/solenv/gbuild/UI.mk b/solenv/gbuild/UI.mk
index 08a3851..f46fb1d 100644
--- a/solenv/gbuild/UI.mk
+++ b/solenv/gbuild/UI.mk
@@ -17,6 +17,19 @@ gb_UILocalizeTarget_TARGET := $(call gb_Executable_get_target_for_build,uiex)
 gb_UILocalizeTarget_COMMAND := $(gb_Helper_set_ld_path) $(gb_UILocalizeTarget_TARGET)
 gb_UILocalizeTarget_LANGS := $(filter-out qtz,$(filter-out en-US,$(gb_WITH_LANG)))
 
+# If translatable strings from a .ui file are not merged into the
+# respective .po file yet, the produced translated files are empty (that
+# is, they only contain the root element), but qtz is not created at all
+# which breaks delivery. This hack avoids the problem by creating a
+# dummy translation file.
+define gb_UILocalizeTarget__fix_missing_qtz
+$(if $(filter qtz,$(gb_WITH_LANG)),\
+	&& if [ ! -f $(1)/qtz.ui ]; then \
+		echo '<?xml version="1.0"?><t></t>' > $(1)/qtz.ui; \
+	fi \
+)
+endef
+
 define gb_UILocalizeTarget__command
 $(call gb_Output_announce,$(2),$(true),UIX,1)
 MERGEINPUT=`$(gb_MKTEMP)` && \
@@ -27,6 +40,7 @@ $(call gb_Helper_abbreviate_dirs,\
 		-o $(call gb_UILocalizeTarget_get_workdir,$(2)) \
 		-l all \
 		-m $${MERGEINPUT} \
+	$(call gb_UILocalizeTarget__fix_missing_qtz,$(call gb_UILocalizeTarget_get_workdir,$(2))) \
 	&& touch $(1) \
 ) && \
 rm -rf $${MERGEINPUT}
commit 4faaf5579937e2e2fc91aef28ba4974020d2fa9f
Author: David Tardon <dtardon at redhat.com>
Date:   Thu Dec 27 12:15:08 2012 +0100

    simplify UI packaging
    
    Change-Id: Id829cd4f12cb4d3fc8cb08dc5b297ee3cfc7591b

diff --git a/solenv/gbuild/UI.mk b/solenv/gbuild/UI.mk
index ad569e1..08a3851 100644
--- a/solenv/gbuild/UI.mk
+++ b/solenv/gbuild/UI.mk
@@ -117,24 +117,21 @@ $(call gb_Helper_make_userfriendly_targets,$(1),UI)
 
 endef
 
-# gb_UI__get_outdir_filename target file lang?
-gb_UI__get_outdir_filename = xml/uiconfig/$(1)/ui/$(if $(3),res/$(3)/)$(notdir $(2))$(if $(3),,.ui)
-
-# gb_UI__add_uifile target package destfile srcfile lang?
+# gb_UI__package_uifile target package destfile srcfile
 define gb_UI__package_uifile
-$(call gb_Package_add_file,$(2),$(call gb_UI__get_outdir_filename,$(1),$(3),$(5)),$(4))
+$(call gb_Package_add_file,$(2),xml/uiconfig/$(1)/ui/$(3),$(4))
 
 endef
 
 # gb_UI__add_uifile target file
 define gb_UI__add_uifile
-$(call gb_UI__package_uifile,$(1),$(1)_ui,$(2),$(2).ui)
+$(call gb_UI__package_uifile,$(1),$(1)_ui,$(notdir $(2)).ui,$(2).ui)
 
 endef
 
 # gb_UI__add_uifile_for_lang target file lang
 define gb_UI__add_uifile_for_lang
-$(call gb_UI__package_uifile,$(1),$(1)_ui_localized,$(2),$(2)/$(3).ui,$(3))
+$(call gb_UI__package_uifile,$(1),$(1)_ui_localized,res/$(3)/$(notdir $(2)),$(2)/$(3).ui)
 
 endef
 
commit b209dec8bbc9be5471438837a4da64adfa350298
Author: David Tardon <dtardon at redhat.com>
Date:   Thu Dec 27 10:54:04 2012 +0100

    create all translations for a .ui file in one uiex call
    
    This should help a lot with Windows release build times (i.e., move it
    from "glacially slow" category to just "slow").
    
    Change-Id: I6d397eb5d1ec1779616c3eef8e51f9cf29d5acec

diff --git a/solenv/gbuild/TargetLocations.mk b/solenv/gbuild/TargetLocations.mk
index 50eebd8..09966d2 100644
--- a/solenv/gbuild/TargetLocations.mk
+++ b/solenv/gbuild/TargetLocations.mk
@@ -170,8 +170,8 @@ gb_SrsTemplateTarget_get_include_dir = $(WORKDIR)/SrsTemplatePartTarget/$(firstw
 gb_SrsTemplateTarget_get_target = $(WORKDIR)/SrsTemplateTarget/$(1)
 gb_ThesaurusIndexTarget_get_target = $(WORKDIR)/ThesaurusIndexTarget/$(basename $(1)).idx
 gb_UI_get_target = $(WORKDIR)/UI/$(1).done
-gb_UILocalizeTarget_get_target = $(WORKDIR)/UILocalizeTarget/$(1).ui
-gb_UITarget_get_target = $(WORKDIR)/UITarget/$(1).done
+gb_UILocalizeTarget_get_target = $(WORKDIR)/UILocalizeTarget/$(1).done
+gb_UILocalizeTarget_get_workdir = $(WORKDIR)/UILocalizeTarget/$(1)
 gb_UnoApiTarget_get_external_headers_target = $(WORKDIR)/UnoApiTarget/$(1).external
 gb_UnoApiTarget_get_headers_target = $(WORKDIR)/UnoApiTarget/$(1).headers
 gb_UnoApiTarget_get_target = $(WORKDIR)/UnoApiTarget/$(1).rdb
@@ -275,7 +275,6 @@ $(eval $(call gb_Helper_make_clean_targets,\
 	ExternalProject \
 	UI \
 	UILocalizeTarget \
-	UITarget \
 	UnoApiHeadersTarget \
 	UnoApiTarget \
 	UnpackedTarball \
diff --git a/solenv/gbuild/UI.mk b/solenv/gbuild/UI.mk
index cbf4bbe..ad569e1 100644
--- a/solenv/gbuild/UI.mk
+++ b/solenv/gbuild/UI.mk
@@ -9,11 +9,13 @@
 
 # class UILocalizeTarget
 
+# Produces translations for one .ui file.
+
 gb_UILocalizeTarget_WORKDIR := $(WORKDIR)/UILocalizeTarget
 
 gb_UILocalizeTarget_TARGET := $(call gb_Executable_get_target_for_build,uiex)
 gb_UILocalizeTarget_COMMAND := $(gb_Helper_set_ld_path) $(gb_UILocalizeTarget_TARGET)
-gb_UILocalizeTarge_LANGS := $(filter-out qtz,$(filter-out en-US,$(gb_WITH_LANG)))
+gb_UILocalizeTarget_LANGS := $(filter-out qtz,$(filter-out en-US,$(gb_WITH_LANG)))
 
 define gb_UILocalizeTarget__command
 $(call gb_Output_announce,$(2),$(true),UIX,1)
@@ -22,13 +24,17 @@ echo $(POFILES) > $${MERGEINPUT} && \
 $(call gb_Helper_abbreviate_dirs,\
 	$(gb_UILocalizeTarget_COMMAND) \
 		-i $(UI_FILE) \
-		-o $(dir $(1)) \
-		-l $(UI_LANG) \
-		-m $${MERGEINPUT} ) && \
+		-o $(call gb_UILocalizeTarget_get_workdir,$(2)) \
+		-l all \
+		-m $${MERGEINPUT} \
+	&& touch $(1) \
+) && \
 rm -rf $${MERGEINPUT}
-
 endef
 
+$(dir $(call gb_UILocalizeTarget_get_target,%)).dir :
+	$(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
+
 $(dir $(call gb_UILocalizeTarget_get_target,%))%/.dir :
 	$(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
 
@@ -42,77 +48,26 @@ $(call gb_UILocalizeTarget_get_clean_target,%) :
 		rm -f $(call gb_UILocalizeTarget_get_target,$*) \
 	)
 
-# Translates one .ui file
+# Produce translations for one .ui file
 #
-# gb_UILocalizeTarget_UILocalizeTarget target source lang
+# gb_UILocalizeTarget_UILocalizeTarget target
 define gb_UILocalizeTarget_UILocalizeTarget
-$(call gb_UILocalizeTarget_get_target,$(1)) : POFILES := $(foreach lang,$(gb_UILocalizeTarge_LANGS),$(gb_POLOCATION)/$(lang)/$(patsubst %/,%,$(dir $(2))).po)
-$(call gb_UILocalizeTarget_get_target,$(1)) : UI_FILE := $(SRCDIR)/$(2).ui
-$(call gb_UILocalizeTarget_get_target,$(1)) : UI_LANG := $(3)
-
-$(call gb_UILocalizeTarget_get_target,$(1)) : $(foreach lang,$(gb_UILocalizeTarge_LANGS),$(gb_POLOCATION)/$(lang)/$(patsubst %/,%,$(dir $(2))).po)
-$(call gb_UILocalizeTarget_get_target,$(1)) : $(SRCDIR)/$(2).ui
-$(call gb_UILocalizeTarget_get_target,$(1)) :| $(dir $(call gb_UILocalizeTarget_get_target,$(1))).dir
+$(call gb_UILocalizeTarget__UILocalizeTarget_impl,$(1),$(foreach lang,$(gb_UILocalizeTarget_LANGS),$(gb_POLOCATION)/$(lang)/$(patsubst %/,%,$(dir $(1))).po))
 
-$(foreach lang,$(gb_UILocalizeTarge_LANGS),$(gb_POLOCATION)/$(lang)/$(patsubst %/,%,$(dir $(2))).po) :
 endef
 
-# class UITarget
-
-# en-US is a special case
-gb_UITarget_LANGS := $(filter-out en-US,$(gb_WITH_LANG))
-
-gb_UITarget_LOCALIZED_DIR := $(gb_UILocalizeTarget_WORKDIR)
-
-gb_UITarget_get_uifile_for_lang = $(subst $(gb_UITarget_LOCALIZED_DIR)/,,$(call gb_UILocalizeTarget_get_target,$(1)/$(2)))
-
-$(dir $(call gb_UITarget_get_target,%)).dir :
-	$(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
-
-$(dir $(call gb_UITarget_get_target,%))%/.dir :
-	$(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
-
-$(call gb_UITarget_get_target,%) :
-	$(call gb_Output_announce,$*,$(true),UI ,2)
-	$(call gb_Helper_abbreviate_dirs,\
-		touch $@ \
-	)
-
-.PHONY : $(call gb_UITarget_get_clean_target,%)
-$(call gb_UITarget_get_clean_target,%) :
-	$(call gb_Output_announce,$*,$(false),UI ,2)
-	$(call gb_Helper_abbreviate_dirs,\
-		rm -f $(call gb_UITarget_get_target,$*) \
-	)
+# gb_UILocalizeTarget__UILocalizeTarget_impl target pofiles
+define gb_UILocalizeTarget__UILocalizeTarget_impl
+$(call gb_UILocalizeTarget_get_target,$(1)) : POFILES := $(2)
+$(call gb_UILocalizeTarget_get_target,$(1)) : UI_FILE := $(SRCDIR)/$(1).ui
 
-# Translates a set of .ui files
-#
-# gb_UITarget_UITarget modulename
-define gb_UITarget_UITarget
-$(call gb_UITarget_get_target,$(1)) :| $(dir $(call gb_UITarget_get_target,$(1))).dir
-
-endef
+$(call gb_UILocalizeTarget_get_target,$(1)) : $(2)
+$(call gb_UILocalizeTarget_get_target,$(1)) : $(SRCDIR)/$(1).ui
+$(call gb_UILocalizeTarget_get_target,$(1)) :| \
+	$(dir $(call gb_UILocalizeTarget_get_target,$(1))).dir \
+	$(call gb_UILocalizeTarget_get_workdir,$(1))/.dir
 
-define gb_UITarget__add_uifile_for_lang
-$(call gb_UILocalizeTarget_UILocalizeTarget,$(2)/$(3),$(2),$(3))
-$(call gb_UITarget_get_target,$(1)) : $(call gb_UILocalizeTarget_get_target,$(2)/$(3))
-$(call gb_UITarget_get_clean_target,$(1)) : $(call gb_UILocalizeTarget_get_clean_target,$(2)/$(3))
-
-endef
-
-# Adds an .ui file for translation
-#
-# gb_UITarget_add_uifile target uifile
-define gb_UITarget_add_uifile
-$(foreach lang,$(gb_UITarget_LANGS),$(call gb_UITarget__add_uifile_for_lang,$(1),$(2),$(lang)))
-
-endef
-
-# Adds multiple .ui files for translation
-#
-# gb_UITarget_add_uifiles target uifile(s)
-define gb_UITarget_add_uifiles
-$(foreach uifile,$(2),$(call gb_UITarget_add_uifile,$(1),$(uifile)))
+$(2) :
 
 endef
 
@@ -120,7 +75,8 @@ endef
 
 # Handles UI description files (suffix .ui) for the new layouting mechanism.
 
-gb_UI_LANGS := $(gb_UITarget_LANGS)
+# en-US is the default, so there is no translation for it
+gb_UI_LANGS := $(filter-out en-US,$(gb_WITH_LANG))
 
 $(dir $(call gb_UI_get_target,%)).dir :
 	$(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
@@ -129,12 +85,14 @@ $(dir $(call gb_UI_get_target,%))%/.dir :
 	$(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
 
 $(call gb_UI_get_target,%) :
+	$(call gb_Output_announce,$*,$(true),UI ,2)
 	$(call gb_Helper_abbreviate_dirs,\
 		touch $@ \
 	)
 
 .PHONY : $(call gb_UI_get_clean_target,%)
 $(call gb_UI_get_clean_target,%) :
+	$(call gb_Output_announce,$*,$(false),UI ,2)
 	$(call gb_Helper_abbreviate_dirs,\
 		rm -f $(call gb_UI_get_target,$*) \
 	)
@@ -149,11 +107,8 @@ $(call gb_UI_get_target,$(1)) :| $(call gb_Package_get_target,$(1)_ui)
 $(call gb_UI_get_clean_target,$(1)) : $(call gb_Package_get_clean_target,$(1)_ui)
 
 ifneq ($(gb_UI_LANGS),)
-$(call gb_UITarget_UITarget,$(1))
-$(call gb_Package_Package_internal,$(1)_ui_localized,$(gb_UITarget_LOCALIZED_DIR))
-$(call gb_UI_get_target,$(1)) : $(call gb_UITarget_get_target,$(1))
+$(call gb_Package_Package_internal,$(1)_ui_localized,$(gb_UILocalizeTarget_WORKDIR))
 $(call gb_UI_get_target,$(1)) :| $(call gb_Package_get_target,$(1)_ui_localized)
-$(call gb_UI_get_clean_target,$(1)) : $(call gb_UITarget_get_clean_target,$(1))
 $(call gb_UI_get_clean_target,$(1)) : $(call gb_Package_get_clean_target,$(1)_ui_localized)
 endif
 
@@ -171,25 +126,15 @@ $(call gb_Package_add_file,$(2),$(call gb_UI__get_outdir_filename,$(1),$(3),$(5)
 
 endef
 
-# gb_UI__add_uifile_direct target file
-define gb_UI__add_uifile_direct
+# gb_UI__add_uifile target file
+define gb_UI__add_uifile
 $(call gb_UI__package_uifile,$(1),$(1)_ui,$(2),$(2).ui)
 
 endef
 
 # gb_UI__add_uifile_for_lang target file lang
 define gb_UI__add_uifile_for_lang
-$(call gb_UI__package_uifile,$(1),$(1)_ui_localized,$(2),$(call gb_UITarget_get_uifile_for_lang,$(2),$(3)),$(3))
-
-endef
-
-define gb_UI__add_uifile
-$(call gb_UI__add_uifile_direct,$(1),$(2))
-
-ifneq ($(gb_UI_LANGS),)
-$(call gb_UITarget_add_uifile,$(1),$(2))
-$(foreach lang,$(gb_UI_LANGS),$(call gb_UI__add_uifile_for_lang,$(1),$(2),$(lang)))
-endif
+$(call gb_UI__package_uifile,$(1),$(1)_ui_localized,$(2),$(2)/$(3).ui,$(3))
 
 endef
 
@@ -202,7 +147,11 @@ define gb_UI_add_uifile
 $(call gb_UI__add_uifile,$(1),$(2))
 
 ifneq ($(gb_UI_LANGS),)
-$(call gb_UITarget_add_uifile,$(1),$(2))
+$(call gb_UILocalizeTarget_UILocalizeTarget,$(2))
+$(call gb_UI_get_target,$(1)) : $(call gb_UILocalizeTarget_get_target,$(2))
+$(call gb_UI_get_clean_target,$(1)) : $(call gb_UILocalizeTarget_get_clean_target,$(2))
+$(call gb_Package_get_preparation_target,$(1)_ui_localized) : $(call gb_UILocalizeTarget_get_target,$(2))
+$(foreach lang,$(gb_UI_LANGS),$(call gb_UI__add_uifile_for_lang,$(1),$(2),$(lang)))
 endif
 
 endef
@@ -211,11 +160,7 @@ endef
 #
 # gb_UI_add_uifiles target uifile(s)
 define gb_UI_add_uifiles
-$(foreach uifile,$(2),$(call gb_UI__add_uifile,$(1),$(uifile)))
-
-ifneq ($(gb_UI_LANGS),)
-$(call gb_UITarget_add_uifiles,$(1),$(2))
-endif
+$(foreach uifile,$(2),$(call gb_UI_add_uifile,$(1),$(uifile)))
 
 endef
 
commit c27b2e377f612de2476ff0aa0ddc909ff214fcb2
Author: David Tardon <dtardon at redhat.com>
Date:   Wed Dec 26 15:40:21 2012 +0100

    let uiex produce more translations in one run
    
    uiex differs from the other *ex tools in that translation for every
    language must be in a standalone file, named after the language code. So
    uiex should take an output _directory_ instead of a file.
    
    Change-Id: If3ed966147c6d11d1fe85c484463f1bca4eec172

diff --git a/l10ntools/source/uimerge.cxx b/l10ntools/source/uimerge.cxx
index 4da18b7..7b7d315 100644
--- a/l10ntools/source/uimerge.cxx
+++ b/l10ntools/source/uimerge.cxx
@@ -9,6 +9,8 @@
 
 #include <sal/main.h>
 
+#include <osl/file.hxx>
+
 #include <rtl/strbuf.hxx>
 
 #include <libexslt/exslt.h>
@@ -125,22 +127,76 @@ namespace
         }
         return sReturn.makeStringAndClear();
     }
+
+    bool lcl_MergeLang(
+            const MergeDataHashMap &rMap,
+            const rtl::OString &rLanguage,
+            const rtl::OString &rDestinationFile)
+    {
+        std::ofstream aDestination(
+            rDestinationFile.getStr(), std::ios_base::out | std::ios_base::trunc);
+        if (!aDestination.is_open()) {
+            return false;
+        }
+
+        aDestination << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+        aDestination << "<t>\n";
+
+        for (MergeDataHashMap::const_iterator aI = rMap.begin(), aEnd = rMap.end(); aI != aEnd; ++aI)
+        {
+            if (aI->second->sGID.isEmpty())
+                continue;
+
+            PFormEntrys* pFoo = aI->second->GetPFormEntries();
+            rtl::OString sOut;
+            pFoo->GetText( sOut, STRING_TYP_TEXT, rLanguage );
+
+            if (sOut.isEmpty())
+                continue;
+
+            aDestination << " <e "
+                << "g=\"" << aI->second->sGID.getStr() << "\" "
+                << "i=\"" << aI->second->sLID.getStr() << "\">"
+                << QuotHTML(sOut).getStr() << "</e>\n";
+        }
+
+        aDestination << "</t>";
+        aDestination.close();
+
+        return true;
+    }
+
 }
 
 bool Merge(
     const rtl::OString &rSDFFile,
     const rtl::OString &rSourceFile,
-    const rtl::OString &rDestinationFile)
+    const rtl::OString &rDestinationDir)
 {
-    Export::InitLanguages( true );
-    std::ofstream aDestination(
-        rDestinationFile.getStr(), std::ios_base::out | std::ios_base::trunc);
-    if (!aDestination.is_open()) {
-        return false;
+    {
+        bool bDestinationIsDir(false);
+
+        const rtl::OUString aDestDir(rtl::OStringToOUString(rDestinationDir, RTL_TEXTENCODING_UTF8));
+        rtl::OUString aDestDirUrl;
+        if (osl::FileBase::E_None == osl::FileBase::getFileURLFromSystemPath(aDestDir, aDestDirUrl))
+        {
+            osl::DirectoryItem aTmp;
+            if (osl::DirectoryItem::E_None == osl::DirectoryItem::get(aDestDirUrl, aTmp))
+            {
+                osl::FileStatus aDestinationStatus(osl_FileStatus_Mask_Type);
+                if (osl::DirectoryItem::E_None == aTmp.getFileStatus(aDestinationStatus))
+                    bDestinationIsDir = aDestinationStatus.isDirectory();
+            }
+        }
+
+        if (!bDestinationIsDir)
+        {
+            fprintf(stderr, "%s must be a directory\n", rDestinationDir.getStr());
+            return false;
+        }
     }
 
-    aDestination << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
-    aDestination << "<t>\n";
+    Export::InitLanguages( true );
 
     MergeDataFile aMergeDataFile( rSDFFile, rSourceFile, sal_False );
     rtl::OString sTmp( Export::sLanguages );
@@ -150,34 +206,20 @@ bool Merge(
     std::vector<rtl::OString> aLanguages = Export::GetLanguages();
 
     const MergeDataHashMap& rMap = aMergeDataFile.getMap();
+    const rtl::OString aDestinationDir(rDestinationDir + "/");
 
+    bool bResult = true;
     for(size_t n = 0; n < aLanguages.size(); ++n)
     {
         rtl::OString sCur = aLanguages[ n ];
         if (sCur.isEmpty() || sCur.equalsIgnoreAsciiCaseL(RTL_CONSTASCII_STRINGPARAM("en-US")))
             continue;
-        for (MergeDataHashMap::const_iterator aI = rMap.begin(), aEnd = rMap.end(); aI != aEnd; ++aI)
-        {
-            if (aI->second->sGID.isEmpty())
-                continue;
-
-            PFormEntrys* pFoo = aI->second->GetPFormEntries();
-            rtl::OString sOut;
-            pFoo->GetText( sOut, STRING_TYP_TEXT, sCur);
-
-            if (sOut.isEmpty())
-                continue;
-
-            aDestination << " <e "
-                << "g=\"" << aI->second->sGID.getStr() << "\" "
-                << "i=\"" << aI->second->sLID.getStr() << "\">"
-                << QuotHTML(sOut).getStr() << "</e>\n";
-        }
+        const rtl::OString aDestinationFile(aDestinationDir + sCur + ".ui");
+        if (!lcl_MergeLang(rMap, sCur, aDestinationFile))
+            bResult = false;
     }
 
-    aDestination << "</t>";
-    aDestination.close();
-    return sal_True;
+    return bResult;
 }
 
 SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv)
diff --git a/solenv/gbuild/UI.mk b/solenv/gbuild/UI.mk
index e29fd1a..cbf4bbe 100644
--- a/solenv/gbuild/UI.mk
+++ b/solenv/gbuild/UI.mk
@@ -22,7 +22,7 @@ echo $(POFILES) > $${MERGEINPUT} && \
 $(call gb_Helper_abbreviate_dirs,\
 	$(gb_UILocalizeTarget_COMMAND) \
 		-i $(UI_FILE) \
-		-o $(1) \
+		-o $(dir $(1)) \
 		-l $(UI_LANG) \
 		-m $${MERGEINPUT} ) && \
 rm -rf $${MERGEINPUT}
commit 58aca95aab6a4023468c14078aad771e49d0c103
Author: David Tardon <dtardon at redhat.com>
Date:   Wed Dec 26 10:58:03 2012 +0100

    drop unused include
    
    Change-Id: If62a89dc2f442f94cd0e36f4447ebc4899ee0ab3

diff --git a/l10ntools/source/uimerge.cxx b/l10ntools/source/uimerge.cxx
index 4192ed7..4da18b7 100644
--- a/l10ntools/source/uimerge.cxx
+++ b/l10ntools/source/uimerge.cxx
@@ -20,7 +20,6 @@
 
 #include "common.hxx"
 #include "export.hxx"
-#include "xrmmerge.hxx"
 #include "tokens.h"
 #include <iostream>
 #include <fstream>
commit c047ef2bf7b89fd4d6d0c8dfdfcfb4fe636735b2
Author: Julien Nabet <serval2412 at yahoo.fr>
Date:   Thu Dec 27 17:12:57 2012 +0100

    Fix Possible inefficient checking for 'm_GlyphsList' emptiness
    
    Change-Id: I65c30e751fc01b63a54aa9c31b4b2a792b795a79

diff --git a/sdext/source/pdfimport/tree/pdfiprocessor.cxx b/sdext/source/pdfimport/tree/pdfiprocessor.cxx
index 378619e..b166a37 100644
--- a/sdext/source/pdfimport/tree/pdfiprocessor.cxx
+++ b/sdext/source/pdfimport/tree/pdfiprocessor.cxx
@@ -210,7 +210,7 @@ sal_Int32 PDFIProcessor::getFontId( const FontAttributes& rAttr ) const
 // line diagnose block - start
 void PDFIProcessor::processGlyphLine()
 {
-    if( m_GlyphsList.size()<1 )
+    if( m_GlyphsList.empty() )
         return;
 
     double fPreAvarageSpaceValue= 0.0;
commit f172cd7f0aac39be1296f6f34a1f9c915db90655
Author: Tor Lillqvist <tml at iki.fi>
Date:   Thu Dec 27 17:59:52 2012 +0200

    gb_Library_DLLEXT already contains the full-stop
    
    Change-Id: Idfea805082acaf4afa3fc198226379345ceda726

diff --git a/icu/ExternalPackage_icu.mk b/icu/ExternalPackage_icu.mk
index 8c4f252..51544b2 100644
--- a/icu/ExternalPackage_icu.mk
+++ b/icu/ExternalPackage_icu.mk
@@ -62,21 +62,21 @@ $(eval $(call gb_ExternalPackage_add_files,icu,lib,\
 ))
 else
 $(eval $(call gb_ExternalPackage_add_files,icu,lib,\
-	source/lib/libicudata.$(gb_Library_DLLEXT).$(ICU_MAJOR).$(ICU_MINOR).$(ICU_MICRO) \
-	source/lib/libicudata.$(gb_Library_DLLEXT).$(ICU_MAJOR) \
-	source/lib/libicudata.$(gb_Library_DLLEXT) \
-	source/lib/libicuuc.$(gb_Library_DLLEXT).$(ICU_MAJOR).$(ICU_MINOR).$(ICU_MICRO) \
-	source/lib/libicuuc.$(gb_Library_DLLEXT).$(ICU_MAJOR) \
-	source/lib/libicuuc.$(gb_Library_DLLEXT) \
-	source/lib/libicui18n.$(gb_Library_DLLEXT).$(ICU_MAJOR).$(ICU_MINOR).$(ICU_MICRO) \
-	source/lib/libicui18n.$(gb_Library_DLLEXT).$(ICU_MAJOR) \
-	source/lib/libicui18n.$(gb_Library_DLLEXT) \
-	source/lib/libicule.$(gb_Library_DLLEXT).$(ICU_MAJOR).$(ICU_MINOR).$(ICU_MICRO) \
-	source/lib/libicule.$(gb_Library_DLLEXT).$(ICU_MAJOR) \
-	source/lib/libicule.$(gb_Library_DLLEXT) \
-	source/lib/libicutu.$(gb_Library_DLLEXT).$(ICU_MAJOR).$(ICU_MINOR).$(ICU_MICRO) \
-	source/lib/libicutu.$(gb_Library_DLLEXT).$(ICU_MAJOR) \
-	source/lib/libicutu.$(gb_Library_DLLEXT) \
+	source/lib/libicudata$(gb_Library_DLLEXT).$(ICU_MAJOR).$(ICU_MINOR).$(ICU_MICRO) \
+	source/lib/libicudata$(gb_Library_DLLEXT).$(ICU_MAJOR) \
+	source/lib/libicudata$(gb_Library_DLLEXT) \
+	source/lib/libicuuc$(gb_Library_DLLEXT).$(ICU_MAJOR).$(ICU_MINOR).$(ICU_MICRO) \
+	source/lib/libicuuc$(gb_Library_DLLEXT).$(ICU_MAJOR) \
+	source/lib/libicuuc$(gb_Library_DLLEXT) \
+	source/lib/libicui18n$(gb_Library_DLLEXT).$(ICU_MAJOR).$(ICU_MINOR).$(ICU_MICRO) \
+	source/lib/libicui18n$(gb_Library_DLLEXT).$(ICU_MAJOR) \
+	source/lib/libicui18n$(gb_Library_DLLEXT) \
+	source/lib/libicule$(gb_Library_DLLEXT).$(ICU_MAJOR).$(ICU_MINOR).$(ICU_MICRO) \
+	source/lib/libicule$(gb_Library_DLLEXT).$(ICU_MAJOR) \
+	source/lib/libicule$(gb_Library_DLLEXT) \
+	source/lib/libicutu$(gb_Library_DLLEXT).$(ICU_MAJOR).$(ICU_MINOR).$(ICU_MICRO) \
+	source/lib/libicutu$(gb_Library_DLLEXT).$(ICU_MAJOR) \
+	source/lib/libicutu$(gb_Library_DLLEXT) \
 ))
 $(eval $(call gb_ExternalPackage_add_files,icu,bin,\
 	source/bin/genccode \
commit b92a0d9208e1b1a33818a3c451e9952963295f6c
Author: Peter Foley <pefoley2 at verizon.net>
Date:   Tue Dec 25 17:39:43 2012 -0500

    convert icu to gbuild and add to tail_build
    
    Change-Id: Id7d8bc05b1393cc2bae4a531c8a47f62df24b1d6
    Reviewed-on: https://gerrit.libreoffice.org/1488
    Reviewed-by: Tor Lillqvist <tml at iki.fi>
    Tested-by: Tor Lillqvist <tml at iki.fi>

diff --git a/Module_tail_build.mk b/Module_tail_build.mk
index b8c21ac..5aab2bd 100644
--- a/Module_tail_build.mk
+++ b/Module_tail_build.mk
@@ -86,6 +86,7 @@ $(eval $(call gb_Module_add_moduledirs,tail_build,\
 	$(call gb_Helper_optional,HYPHEN,hyphen) \
 	i18npool \
 	i18nutil \
+	$(call gb_Helper_optional,ICU,icu) \
 	idl \
 	$(call gb_Helper_optional,DESKTOP,idlc) \
 	io \
diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index 7798c79..57884e8 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -873,6 +873,8 @@ endif # SYSTEM_GRAPHITE
 
 ifeq ($(SYSTEM_ICU),YES)
 
+gb_LinkTarget__use_icu_headers:=
+
 define gb_LinkTarget__use_icudata
 $(call gb_LinkTarget_add_libs,$(1),-licudata)
 
@@ -902,6 +904,17 @@ else
 gb_ICU_suffix:=
 endif
 
+define gb_LinkTarget__use_icu_headers
+$(call gb_LinkTarget_use_unpacked,$(1),icu)
+$(call gb_LinkTarget_set_include,$(1),\
+	-I$(call gb_UnpackedTarball_get_dir,icu)/source \
+	-I$(call gb_UnpackedTarball_get_dir,icu)/source/common \
+	-I$(call gb_UnpackedTarball_get_dir,icu)/source/i18n \
+	$$(INCLUDE) \
+)
+
+endef
+
 # icudata and icui18n is called icudt and icuin when built with MSVC :-/
 ifeq ($(OS)$(COM),WNTMSC)
 $(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \
diff --git a/RepositoryModule_ooo.mk b/RepositoryModule_ooo.mk
index 4ddde55..c09aa34 100644
--- a/RepositoryModule_ooo.mk
+++ b/RepositoryModule_ooo.mk
@@ -94,6 +94,7 @@ $(eval $(call gb_Module_add_moduledirs,ooo,\
 	$(call gb_Helper_optional,HYPHEN,hyphen) \
 	i18npool \
 	i18nutil \
+	$(call gb_Helper_optional,ICU,icu) \
 	idl \
 	$(call gb_Helper_optional,DESKTOP,idlc) \
 	io \
diff --git a/editeng/Library_editeng.mk b/editeng/Library_editeng.mk
index 22a0196..3391ed9 100644
--- a/editeng/Library_editeng.mk
+++ b/editeng/Library_editeng.mk
@@ -144,7 +144,10 @@ $(eval $(call gb_Library_use_libraries,editeng,\
 	$(gb_UWINAPI) \
 ))
 
-$(eval $(call gb_Library_use_external,editeng,icuuc))
+$(eval $(call gb_Library_use_externals,editeng,\
+	icuuc \
+	icu_headers \
+))
 
 # Runtime dependency for unit-tests
 $(call gb_LinkTarget_get_target,$(call gb_Library_get_linktargetname,editeng)) :| \
diff --git a/forms/Library_frm.mk b/forms/Library_frm.mk
index 4f60e8f..88e1c0e 100644
--- a/forms/Library_frm.mk
+++ b/forms/Library_frm.mk
@@ -63,6 +63,7 @@ $(eval $(call gb_Library_use_libraries,frm,\
 $(eval $(call gb_Library_use_externals,frm,\
     icui18n \
     icuuc \
+	icu_headers \
     libxml2 \
 ))
 
diff --git a/hunspell/StaticLibrary_hunspell.mk b/hunspell/StaticLibrary_hunspell.mk
index dba2299..29fe624 100644
--- a/hunspell/StaticLibrary_hunspell.mk
+++ b/hunspell/StaticLibrary_hunspell.mk
@@ -11,6 +11,8 @@ $(eval $(call gb_StaticLibrary_StaticLibrary,hunspell))
 
 $(eval $(call gb_StaticLibrary_use_unpacked,hunspell,hunspell))
 
+$(eval $(call gb_StaticLibrary_use_external,hunspell,icu_headers))
+
 $(eval $(call gb_StaticLibrary_set_warnings_not_errors,hunspell))
 
 $(eval $(call gb_StaticLibrary_add_defs,hunspell,\
diff --git a/i18npool/CppunitTest_i18npool_test_breakiterator.mk b/i18npool/CppunitTest_i18npool_test_breakiterator.mk
index 24f6762..d94cf3d 100644
--- a/i18npool/CppunitTest_i18npool_test_breakiterator.mk
+++ b/i18npool/CppunitTest_i18npool_test_breakiterator.mk
@@ -28,6 +28,8 @@
 
 $(eval $(call gb_CppunitTest_CppunitTest,i18npool_test_breakiterator))
 
+$(eval $(call gb_CppunitTest_use_external,i18npool_test_breakiterator,icu_headers))
+
 $(eval $(call gb_CppunitTest_use_api,i18npool_test_breakiterator,\
 	udkapi \
 	offapi \
diff --git a/i18npool/CppunitTest_i18npool_test_textsearch.mk b/i18npool/CppunitTest_i18npool_test_textsearch.mk
index 2f6998f..d6ef88e 100644
--- a/i18npool/CppunitTest_i18npool_test_textsearch.mk
+++ b/i18npool/CppunitTest_i18npool_test_textsearch.mk
@@ -28,6 +28,7 @@ $(eval $(call gb_CppunitTest_use_components,i18npool_test_textsearch,\
 $(eval $(call gb_CppunitTest_use_externals,i18npool_test_textsearch,\
 	icui18n \
 	icuuc \
+	icu_headers \
 ))
 
 $(eval $(call gb_CppunitTest_use_libraries,i18npool_test_textsearch,\
diff --git a/i18npool/Executable_gencoll_rule.mk b/i18npool/Executable_gencoll_rule.mk
index 4974c63..e9b67fa 100644
--- a/i18npool/Executable_gencoll_rule.mk
+++ b/i18npool/Executable_gencoll_rule.mk
@@ -42,6 +42,7 @@ $(eval $(call gb_Executable_use_externals,gencoll_rule,\
 	icudata \
 	icui18n \
 	icuuc \
+	icu_headers \
 ))
 
 $(eval $(call gb_Executable_add_exception_objects,gencoll_rule,\
diff --git a/i18npool/Library_i18npool.mk b/i18npool/Library_i18npool.mk
index 183ea54..0c23f47 100644
--- a/i18npool/Library_i18npool.mk
+++ b/i18npool/Library_i18npool.mk
@@ -50,6 +50,7 @@ $(eval $(call gb_Library_use_libraries,i18npool,\
 $(eval $(call gb_Library_use_externals,i18npool,\
 	icui18n \
 	icuuc \
+	icu_headers \
 ))
 
 $(eval $(call gb_Library_add_exception_objects,i18npool,\
diff --git a/i18npool/Library_i18nsearch.mk b/i18npool/Library_i18nsearch.mk
index 7778077..f7cd5fc 100644
--- a/i18npool/Library_i18nsearch.mk
+++ b/i18npool/Library_i18nsearch.mk
@@ -41,6 +41,7 @@ $(eval $(call gb_Library_use_sdk_api,i18nsearch))
 $(eval $(call gb_Library_use_externals,i18nsearch,\
 	icui18n \
 	icuuc \
+	icu_headers \
 ))
 
 $(eval $(call gb_Library_use_libraries,i18nsearch,\
diff --git a/i18nutil/Library_i18nutil.mk b/i18nutil/Library_i18nutil.mk
index 94f5e20..da469d5 100644
--- a/i18nutil/Library_i18nutil.mk
+++ b/i18nutil/Library_i18nutil.mk
@@ -20,6 +20,8 @@ $(eval $(call gb_Library_Library,i18nutil))
 
 $(eval $(call gb_Library_use_package,i18nutil,i18nutil_inc))
 
+$(eval $(call gb_Library_use_external,i18nutil,icu_headers))
+
 $(eval $(call gb_Library_use_sdk_api,i18nutil))
 
 $(eval $(call gb_Library_add_defs,i18nutil,\
diff --git a/icu/ExternalPackage_icu.mk b/icu/ExternalPackage_icu.mk
new file mode 100644
index 0000000..8c4f252
--- /dev/null
+++ b/icu/ExternalPackage_icu.mk
@@ -0,0 +1,88 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,icu,icu))
+
+$(eval $(call gb_ExternalPackage_use_external_project,icu,icu))
+ifeq ($(OS),WNT)
+ifeq ($(COM),GCC)
+
+$(eval $(call gb_ExternalPackage_add_files,icu,bin,\
+	source/lib/libicudt$(ICU_MAJOR)$(ICU_MINOR).dll \
+	source/lib/libicuuc$(ICU_MAJOR)$(ICU_MINOR).dll \
+	source/lib/libicuin$(ICU_MAJOR)$(ICU_MINOR).dll \
+	source/lib/libicule$(ICU_MAJOR)$(ICU_MINOR).dll \
+	source/lib/libicutu$(ICU_MAJOR)$(ICU_MINOR).dll \
+	source/bin/genccode.exe \
+	source/bin/genbrk.exe \
+	source/bin/gencmn.exe \
+))
+
+else
+$(eval $(call gb_ExternalPackage_add_files,icu,lib,\
+	source/lib/icudt.lib \
+	source/lib/icuuc.lib \
+	source/lib/icuin.lib \
+	source/lib/icule.lib \
+	source/lib/icutu.lib\
+))
+$(eval $(call gb_ExternalPackage_add_files,icu,bin,\
+	source/lib/icudt$(ICU_MAJOR).dll \
+	source/lib/icuuc$(ICU_MAJOR).dll \
+	source/lib/icuin$(ICU_MAJOR).dll \
+	source/lib/icule$(ICU_MAJOR).dll \
+	source/lib/icutu$(ICU_MAJOR).dll \
+	source/bin/genccode.exe \
+	source/bin/genbrk.exe \
+	source/bin/gencmn.exe \
+))
+endif
+else # $(OS)
+ifeq ($(DISABLE_DYNLOADING),TRUE)
+$(eval $(call gb_ExternalPackage_add_files,icu,lib,\
+	source/lib/libicudata.a \
+	source/lib/libicuuc.a \
+	source/lib/libicui18n.a \
+	source/lib/libicule.a \
+	source/lib/libicutu.a \
+))
+else ifeq ($(OS),ANDROID)
+$(eval $(call gb_ExternalPackage_add_files,icu,lib,\
+	source/lib/libicudatalo.so \
+	source/lib/libicuuclo.so \
+	source/lib/libicui18nlo.so \
+	source/lib/libiculelo.so \
+	source/lib/libicutulo.so \
+))
+else
+$(eval $(call gb_ExternalPackage_add_files,icu,lib,\
+	source/lib/libicudata.$(gb_Library_DLLEXT).$(ICU_MAJOR).$(ICU_MINOR).$(ICU_MICRO) \
+	source/lib/libicudata.$(gb_Library_DLLEXT).$(ICU_MAJOR) \
+	source/lib/libicudata.$(gb_Library_DLLEXT) \
+	source/lib/libicuuc.$(gb_Library_DLLEXT).$(ICU_MAJOR).$(ICU_MINOR).$(ICU_MICRO) \
+	source/lib/libicuuc.$(gb_Library_DLLEXT).$(ICU_MAJOR) \
+	source/lib/libicuuc.$(gb_Library_DLLEXT) \
+	source/lib/libicui18n.$(gb_Library_DLLEXT).$(ICU_MAJOR).$(ICU_MINOR).$(ICU_MICRO) \
+	source/lib/libicui18n.$(gb_Library_DLLEXT).$(ICU_MAJOR) \
+	source/lib/libicui18n.$(gb_Library_DLLEXT) \
+	source/lib/libicule.$(gb_Library_DLLEXT).$(ICU_MAJOR).$(ICU_MINOR).$(ICU_MICRO) \
+	source/lib/libicule.$(gb_Library_DLLEXT).$(ICU_MAJOR) \
+	source/lib/libicule.$(gb_Library_DLLEXT) \
+	source/lib/libicutu.$(gb_Library_DLLEXT).$(ICU_MAJOR).$(ICU_MINOR).$(ICU_MICRO) \
+	source/lib/libicutu.$(gb_Library_DLLEXT).$(ICU_MAJOR) \
+	source/lib/libicutu.$(gb_Library_DLLEXT) \
+))
+$(eval $(call gb_ExternalPackage_add_files,icu,bin,\
+	source/bin/genccode \
+	source/bin/genbrk \
+	source/bin/gencmn \
+))
+endif
+endif
+# vim: set noet sw=4 ts=4:
diff --git a/icu/ExternalProject_icu.mk b/icu/ExternalProject_icu.mk
new file mode 100644
index 0000000..0758d37
--- /dev/null
+++ b/icu/ExternalProject_icu.mk
@@ -0,0 +1,85 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_ExternalProject_ExternalProject,icu))
+
+$(eval $(call gb_ExternalProject_use_unpacked,icu,icu))
+
+$(eval $(call gb_ExternalProject_use_package,icu,icu_data))
+
+$(eval $(call gb_ExternalProject_register_targets,icu,\
+	build \
+))
+
+icu_CPPFLAGS:="-DHAVE_GCC_ATOMICS=$(if $(filter TRUE,$(GCC_HAVE_BUILTIN_ATOMIC)),1,0)"
+
+ifeq ($(OS),WNT)
+
+ifeq ($(COM),MSC)
+$(call gb_ExternalProject_get_state_target,icu,build) :
+	cd $(EXTERNAL_WORKDIR)/source \
+	&& export LIB="$(ILIB)" \
+	&& CFLAGS="$(SOLARINC)" CPPFLAGS="$(SOLARINC)" CXXFLAGS="$(SOLARINC)" ./runConfigureICU Cygwin/MSVC \
+	&& $(GNUMAKE) \
+	&& touch $@
+else
+$(call gb_ExternalProject_get_state_target,icu,build) :
+	cd $(EXTERNAL_WORKDIR)/source \
+	&& CPPFLAGS=$(icu_CPPFLAGS) CFLAGS="-O -D_MT" CXXFLAGS="-O -D_MT" \
+	LIBS="$(if $(filter YES,$(MINGW_SHARED_GXXLIB)),$(MINGW_SHARED_LIBSTDCPP))" \
+	LDFLAGS="-L$(COMPATH)/lib -Wl,--enable-runtime-pseudo-reloc-v2 \
+	$(if $(filter YES,$(MINGW_SHARED_GCCLIB)),-shared-libgcc)" \
+	./configure
+	$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) \
+	--with-cross-build=$(call gb_UnpackedTarball_get_dir,icu)/source) \
+	--enable-layout --disable-static --enable-shared --disable-samples \
+	&& $(GNUMAKE) \
+	&& for lib in icudata icuin icuuc icule icutu; do \
+	@touch $$lib; \
+	done \
+	&& touch $@
+endif
+
+else # $(OS)
+
+icu_CFLAGS:="$(if $(filter ANDROID,$(OS)),-fvisibility=hidden -fno-omit-frame-pointer) \
+	$(if $(filter IOS,$(OS)),-DUCONFIG_NO_FILE_IO) \
+	$(if $(SYSBASE),-I$(SYSBASE)/usr/include) \
+	$(if $(debug),-g,\
+	$(if $(filter GCC,$(COM)),-O2 -fno-strict-aliasing,-O))"
+icu_CXXFLAGS:="$(if $(filter ANDROID,$(OS)),-fvisibility=hidden -fno-omit-frame-pointer) \
+	$(if $(filter IOS,$(OS)),-DUCONFIG_NO_FILE_IO) \
+	$(if $(debug),-g,\
+	$(if $(filter GCC,$(COM)),-O2 -fno-strict-aliasing,-O))"
+icu_LDFLAGS:="$(if $(filter TRUE,$(HAVE_LD_HASH_STYLE)),-Wl$(COMMA)--hash-style=$(WITH_LINKER_HASH_STYLE)) \
+	    $(if $(SYSBASE),-L../lib -L../../lib -L../stubdata -L../../stubdata -L$(SYSBASE)/usr/lib) \
+	    $(if $(filter TRUE,$(HAVE_LD_BSYMBOLIC_FUNCTIONS)),\
+	    -Wl$(COMMA)-Bsymbolic-functions -Wl$(COMMA)--dynamic-list-cpp-new -Wl$(COMMA)--dynamic-list-cpp-typeinfo) \
+	    $(if $(filter ANDROID,$(OS)),-lgnustl_shared -lm)"
+
+$(call gb_ExternalProject_get_state_target,icu,build) :
+	cd $(EXTERNAL_WORKDIR)/source \
+	&& CPPFLAGS=$(icu_CPPFLAGS) CFLAGS=$(icu_CFLAGS) \
+	CXXFLAGS=$(icu_CXXFLAGS) LDFLAGS=$(icu_LDFLAGS) \
+	./configure \
+		--enable-layout --disable-samples \
+		$(if $(filter IOS ANDROID,$(OS)),--disable-dyload) \
+		$(if $(filter ANDROID,$(OS)),--disable-strict) \
+		$(if $(filter SOLARIS AIX,$(OS)),--disable-64bit-libs) \
+		$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
+		$(if $(filter TRUE,$(DISABLE_DYNLOADING)),--enable-static --disable-shared,\
+		--disable-static --enable-shared $(if $(filter ANDROID,$(OS)),--with-library-suffix=lo)) \
+		$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)\
+		--with-cross-build=$(call gb_UnpackedTarball_get_dir,icu)/source)\
+	&& $(GNUMAKE) \
+	&& touch $@
+
+endif
+
+# vim: set noet sw=4 ts=4:
diff --git a/icu/Makefile b/icu/Makefile
new file mode 100644
index 0000000..ccb1c85
--- /dev/null
+++ b/icu/Makefile
@@ -0,0 +1,7 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+
+module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
+
+include $(module_directory)/../solenv/gbuild/partial_build.mk
+
+# vim: set noet sw=4 ts=4:
diff --git a/icu/Module_icu.mk b/icu/Module_icu.mk
new file mode 100644
index 0000000..524147b
--- /dev/null
+++ b/icu/Module_icu.mk
@@ -0,0 +1,21 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_Module_Module,icu))
+
+ifeq ($(SYSTEM_ICU),NO)
+$(eval $(call gb_Module_add_targets,icu,\
+	UnpackedTarball_icu \
+	UnpackedTarball_icu_data \
+	ExternalPackage_icu \
+	ExternalProject_icu \
+))
+endif
+
+# vim: set noet sw=4 ts=4:
diff --git a/icu/UnpackedTarball_icu.mk b/icu/UnpackedTarball_icu.mk
new file mode 100644
index 0000000..ed58c32
--- /dev/null
+++ b/icu/UnpackedTarball_icu.mk
@@ -0,0 +1,44 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,icu))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,icu,$(ICU_TARBALL)))
+
+# Save space when using a bundled ICU by leaving out unneeded parts of the ICU data. Generated by
+# the interactive web tool at http://apps.icu-project.org/datacustom/ICUData49.html by dropping
+# the "Charset Mapping Tables". Probably we could carefully cherry-pick other items in the data to
+# be dropped, too. A bit tedious using that web tool, though.
+
+# If you do that, upload a new subset data zip file with just the MD5 part of the name changed
+# appropriately. Let's not bother trying to list what stuff has been removed in the file name.
+# Describe it in the comment above instead.
+$(call gb_UnpackedTarball_get_target,icu): $(call gb_UnpackedTarball_get_target,icu_data)
+$(eval $(call gb_UnpackedTarball_set_post_action,icu,\
+	cp $(call gb_UnpackedTarball_get_dir,icu_data)/icudt49l.dat \
+	$(call gb_UnpackedTarball_get_dir,icu)/source/data/in/ \
+))
+
+$(eval $(call gb_UnpackedTarball_add_patches,icu,\
+	icu/icu4c-bsd.patch \
+	icu/icu4c-build.patch \
+	icu/icu4c.8198.revert.icu5431.patch \
+	icu/icu4c.7601.Indic-ccmp.patch \
+	icu/icu4c-aix.patch \
+	icu/icu4c-wchar_t.patch \
+	icu/icu4c-warnings.patch \
+	icu/icu4c.9313.cygwin.patch \
+	icu/icu4c-macosx.patch \
+	icu/icu4c-solarisgcc.patch \
+	icu/icu4c-mkdir.patch \
+	icu/icu4c-buffer-overflow.patch \
+	icu/icu4c-$(if $(filter ANDROID,$(OS)),android,rpath).patch \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/icu/UnpackedTarball_icu_data.mk b/icu/UnpackedTarball_icu_data.mk
new file mode 100644
index 0000000..25274f1
--- /dev/null
+++ b/icu/UnpackedTarball_icu_data.mk
@@ -0,0 +1,14 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,icu_data))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,icu_data,$(ICU_DATA_SUBSET_ZIP)))
+
+# vim: set noet sw=4 ts=4:
diff --git a/icu/icu4c-buffer-overflow.patch b/icu/icu4c-buffer-overflow.patch
index 8966be8..7385d3b 100644
--- a/icu/icu4c-buffer-overflow.patch
+++ b/icu/icu4c-buffer-overflow.patch
@@ -9,8 +9,8 @@ E: icu bufferoverflowstrncat pkgdata.cpp:299:87
 
 Index: icu/source/tools/pkgdata/pkgdata.cpp
 ===================================================================
---- misc/build/icu.orig/source/tools/pkgdata/pkgdata.cpp
-+++ misc/build/icu/source/tools/pkgdata/pkgdata.cpp
+--- build/icu.orig/source/tools/pkgdata/pkgdata.cpp
++++ build/icu/source/tools/pkgdata/pkgdata.cpp
 @@ -1914,12 +1914,12 @@ static void loadLists(UPKGOptions *o, UE
      const char cmd[] = "icu-config --incpkgdatafile";
  
diff --git a/icu/icu4c-mkdir.patch b/icu/icu4c-mkdir.patch
index 89249ea..859220c 100644
--- a/icu/icu4c-mkdir.patch
+++ b/icu/icu4c-mkdir.patch
@@ -1,5 +1,5 @@
 --- misc/icu/source/dataMakefile.in.sav	2012-04-05 22:49:20.000000000 +0200
-+++ misc/build/icu/source/data/Makefile.in	2012-12-04 14:24:40.548026700 +0100
++++ build/icu/source/data/Makefile.in	2012-12-04 14:24:40.548026700 +0100
 @@ -346,6 +346,7 @@
  ifeq ($(PKGDATA_MODE),dll)
  SO_VERSION_DATA = $(OUTTMPDIR)/icudata.res
diff --git a/icu/icu4c-solarisgcc.patch b/icu/icu4c-solarisgcc.patch
index d61ad32..11b13cf 100644
--- a/icu/icu4c-solarisgcc.patch
+++ b/icu/icu4c-solarisgcc.patch
@@ -1,6 +1,6 @@
-diff -uriwb misc/build/icu.old/source/aclocal.m4 misc/build/icu/source/aclocal.m4
---- misc/build/icu.old/source/aclocal.m4	2012-04-05 21:49:28.000000000 +0100
-+++ misc/build/icu/source/aclocal.m4	2012-06-21 15:44:57.299256932 +0100
+diff -uriwb build/icu.old/source/aclocal.m4 misc/build/icu/source/aclocal.m4
+--- build/icu.old/source/aclocal.m4	2012-04-05 21:49:28.000000000 +0100
++++ build/icu/source/aclocal.m4	2012-06-21 15:44:57.299256932 +0100
 @@ -455,7 +455,7 @@
              case "${host}" in
              *-*-solaris*)
@@ -21,9 +21,9 @@ diff -uriwb misc/build/icu.old/source/aclocal.m4 misc/build/icu/source/aclocal.m
          else
              case "${host}" in
              *-*-cygwin)
-diff -uriwb misc/build/icu.old/source/common/uposixdefs.h misc/build/icu/source/common/uposixdefs.h
---- misc/build/icu.old/source/common/uposixdefs.h	2012-04-05 21:46:18.000000000 +0100
-+++ misc/build/icu/source/common/uposixdefs.h	2012-06-21 15:45:17.613369477 +0100
+diff -uriwb build/icu.old/source/common/uposixdefs.h misc/build/icu/source/common/uposixdefs.h
+--- build/icu.old/source/common/uposixdefs.h	2012-04-05 21:46:18.000000000 +0100
++++ build/icu/source/common/uposixdefs.h	2012-06-21 15:45:17.613369477 +0100
 @@ -52,7 +52,7 @@
   *
   * z/OS needs this definition for timeval and to get usleep.
@@ -33,9 +33,9 @@ diff -uriwb misc/build/icu.old/source/common/uposixdefs.h misc/build/icu/source/
  #   define _XOPEN_SOURCE_EXTENDED 1
  #endif
  
-diff -uriwb misc/build/icu.old/source/configure misc/build/icu/source/configure
---- misc/build/icu.old/source/configure	2012-04-05 21:49:28.000000000 +0100
-+++ misc/build/icu/source/configure	2012-06-21 15:44:42.817030445 +0100
+diff -uriwb build/icu.old/source/configure misc/build/icu/source/configure
+--- build/icu.old/source/configure	2012-04-05 21:49:28.000000000 +0100
++++ build/icu/source/configure	2012-06-21 15:44:42.817030445 +0100
 @@ -4264,7 +4264,7 @@
              case "${host}" in
              *-*-solaris*)
diff --git a/icu/icu4c-warnings.patch b/icu/icu4c-warnings.patch
index 8ac632c..72566bc 100644
--- a/icu/icu4c-warnings.patch
+++ b/icu/icu4c-warnings.patch
@@ -1,4 +1,4 @@
---- misc/icu/source/common/unicode/
+--- misc/icu/source/common/unicode/utf16.h
 +++ misc/build/icu/source/common/unicode/utf16.h
 @@ -316,6 +316,7 @@
          (s)[(i)++]=(uint16_t)(((c)&0x3ff)|0xdc00); \
diff --git a/icu/makefile.mk b/icu/makefile.mk
deleted file mode 100644
index f20d9b5..0000000
--- a/icu/makefile.mk
+++ /dev/null
@@ -1,352 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-# 
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org.  If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-PRJ=.
-
-PRJNAME=icu
-TARGET=so_icu
-
-# --- Settings -----------------------------------------------------
-
-.INCLUDE :	settings.mk
-
-# --- Files --------------------------------------------------------
-
-TARFILE_NAME=icu4c-49_1_1-src
-TARFILE_MD5=7c53f83e0327343f4060c0eb83842daf
-TARFILE_ROOTDIR=icu
-
-#icu4c.7601.Indic-ccmp.patch
-#http://bugs.icu-project.org/trac/ticket/7601 ccmp feature for Indic Languages
-
-#icu4c.8198.revert.icu5431.patch
-#http://bugs.icu-project.org/trac/ticket/8198 rendering with 0D30 and 0D31
-
-PATCH_FILES=\
-    icu4c-bsd.patch \
-    icu4c-build.patch \
-    icu4c.8198.revert.icu5431.patch \
-    icu4c.7601.Indic-ccmp.patch \
-    icu4c-aix.patch \
-    icu4c-wchar_t.patch \
-    icu4c-warnings.patch \
-    icu4c.9313.cygwin.patch \
-    icu4c-macosx.patch \
-    icu4c-solarisgcc.patch \
-    icu4c-mkdir.patch \
-    icu4c-buffer-overflow.patch \
-
-.IF "$(OS)"=="ANDROID"
-PATCH_FILES+=\
-    icu4c-android.patch
-icu_CFLAGS+=-fvisibility=hidden
-icu_CXXFLAGS+=-fvisibility=hidden
-.ELSE
-PATCH_FILES+=\
-    icu4c-rpath.patch
-.ENDIF
-
-.IF "$(HAVE_GCC_BUILTIN_ATOMIC)"=="TRUE"
-EXTRA_CDEFS+=-DU_HAVE_GCC_ATOMICS=1
-.ELSE
-EXTRA_CDEFS+=-DU_HAVE_GCC_ATOMICS=0
-.ENDIF
-
-# Save space when using a bundled ICU by leaving out unneeded parts of the ICU data. Generated by
-# the interactive web tool at http://apps.icu-project.org/datacustom/ICUData49.html by dropping
-# the "Charset Mapping Tables". Probably we could carefully cherry-pick other items in the data to
-# be dropped, too. A bit tedious using that web tool, though.
-
-# If you do that, upload a new subset data zip file with just the MD5 part of the name changed
-# appropriately. Let's not bother trying to list what stuff has been removed in the file name.
-# Describe it in the comment above instead.
-CONFIGURE_ACTION=unzip $(TARFILE_LOCATION)/$(ICU_DATA_SUBSET_ZIP) && mv icudt49l.dat data/in && 
-
-.IF "$(OS)"!="WNT"
-
-.IF "$(SYSBASE)"!=""
-icu_CFLAGS+=-I$(SYSBASE)$/usr$/include
-.IF "$(COMNAME)"=="sunpro5"
-icu_CFLAGS+=$(C_RESTRICTIONFLAGS)
-.ENDIF			# "$(COMNAME)"=="sunpro5"
-# add SYSBASE libraries and make certain that they are found *after* the
-# icu build internal libraries - in case that icu is available in SYSBASE
-# as well
-icu_LDFLAGS+= -L../lib  -L../../lib -L../stubdata -L../../stubdata  -L$(SYSBASE)$/usr$/lib
-.ENDIF			# "$(SYSBASE)"!=""
-
-.IF "$(OS)"=="MACOSX"
-.IF "$(EXTRA_CFLAGS)"!=""
-CPP:=gcc -E $(EXTRA_CFLAGS)
-CXX:=g++ $(EXTRA_CFLAGS)
-CC:=gcc $(EXTRA_CFLAGS)
-.EXPORT : CPP
-.ENDIF # "$(EXTRA_CFLAGS)"!=""
-.ENDIF # "$(OS)"=="MACOSX"
-
-.IF "$(debug)" != ""
-icu_CFLAGS+=-g $(ARCH_FLAGS)
-icu_CXXFLAGS+=-g $(ARCH_FLAGS)
-.ELIF "$(COM)"=="GCC"
-icu_CFLAGS+=-O2 -fno-strict-aliasing $(ARCH_FLAGS)
-icu_CXXFLAGS+=-O2 -fno-strict-aliasing $(ARCH_FLAGS)
-.ELSE
-icu_CFLAGS+=-O $(ARCH_FLAGS)
-icu_CXXFLAGS+=-O $(ARCH_FLAGS)
-.ENDIF
-icu_LDFLAGS+=$(EXTRA_LINKFLAGS)
-
-# until someone introduces SOLARIS 64-bit builds
-.IF "$(OS)"=="SOLARIS"
-DISABLE_64BIT=--enable-64bit-libs=no
-.ENDIF			# "$(OS)"=="SOLARIS"
-
-.IF "$(OS)"=="AIX"
-DISABLE_64BIT=--enable-64bit-libs=no
-LDFLAGSADD+=$(LINKFLAGS) $(LINKFLAGSRUNPATH_OOO)
-.ENDIF                  # "$(OS)"=="AIX"
-
-.IF "$(HAVE_LD_HASH_STYLE)"  == "TRUE"
-LDFLAGSADD += -Wl,--hash-style=$(WITH_LINKER_HASH_STYLE)
-.ENDIF
-
-.IF "$(OS)"=="IOS"
-# Let's try this...
-icu_CFLAGS+=-DUCONFIG_NO_FILE_IO
-icu_CXXFLAGS+=-DUCONFIG_NO_FILE_IO
-.ENDIF
-
-.IF "$(OS)"=="ANDROID"
-# Problems with uint64_t on Android unless disabling strictness
-DISABLE_STRICT=--disable-strict
-icu_CFLAGS+=-fno-omit-frame-pointer
-icu_CXXFLAGS+=-fno-omit-frame-pointer
-.ENDIF
-
-.IF "$(OS)"=="IOS" || "$(OS)"=="ANDROID"
-# Problems on Android unless disabling dynamic loading
-DISABLE_DYLOAD=--disable-dyload
-.ENDIF
-
-.IF "$(HAVE_LD_BSYMBOLIC_FUNCTIONS)"  == "TRUE"
-LDFLAGSADD += -Wl,-Bsymbolic-functions -Wl,--dynamic-list-cpp-new -Wl,--dynamic-list-cpp-typeinfo
-.ENDIF
-
-CONFIGURE_DIR=source
-
-.IF "$(DISABLE_DYNLOADING)" == "TRUE"
-STATIC_OR_SHARED=--enable-static --disable-shared
-.ELSE
-STATIC_OR_SHARED=--disable-static --enable-shared
-.ENDIF
-
-.IF "$(CROSS_COMPILING)"=="YES"
-# We require that the cross-build-toolset target from the top Makefile(.in) has bee built
-BUILD_AND_HOST=--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) --with-cross-build=$(posix_PWD)/$(INPATH_FOR_BUILD)/misc/build/icu/source
-.ENDIF
-
-.IF "$(OS)"=="ANDROID"
-.IF "$(DISABLE_DYNLOADING)" != "TRUE"
-LIBRARY_SUFFIX= --with-library-suffix=lo
-.ENDIF
-# Just so that some executables that nobody will run anyway get built...
-icu_LDFLAGS+=-lgnustl_shared -lm
-.ENDIF
-
-CONFIGURE_ACTION+=sh -c 'CPPFLAGS="$(EXTRA_CDEFS)" CFLAGS="$(icu_CFLAGS)" CXXFLAGS="$(icu_CXXFLAGS)" LDFLAGS="$(icu_LDFLAGS) $(LDFLAGSADD)" \
-./configure --enable-layout --disable-samples $(STATIC_OR_SHARED) $(BUILD_AND_HOST) $(DISABLE_64BIT) $(DISABLE_STRICT) $(DISABLE_DYLOAD) $(LIBRARY_SUFFIX)'
-
-.IF "$(OS)" == "MACOSX"
-CONFIGURE_ACTION += \
-    --prefix=/@.__________________________________________________$(EXTRPATH)
-.END
-
-CONFIGURE_FLAGS=
-
-# Use of
-# CONFIGURE_ACTION=sh -c 'CFLAGS=-O CXXFLAGS=-O ./configure'
-# CONFIGURE_FLAGS=--enable-layout --enable-static --enable-shared=yes --enable-64bit-libs=no
-# doesn't work as it would result in
-# sh -c 'CFLAGS=-O CXXFLAGS=-O ./configure' --enable-layout ...
-# note the position of the single quotes.
-
-BUILD_DIR=$(CONFIGURE_DIR)
-BUILD_ACTION=$(AUGMENT_LIBRARY_PATH) $(GNUMAKE) -j$(EXTMAXPROCESS)
-.IF "$(DISABLE_DYNLOADING)" == "TRUE"
-OUT2LIB= \
-    $(BUILD_DIR)$/lib$/libicudata.a \
-    $(BUILD_DIR)$/lib$/libicuuc.a \
-    $(BUILD_DIR)$/lib$/libicui18n.a \
-    $(BUILD_DIR)$/lib$/libicule.a \
-    $(BUILD_DIR)$/lib$/libicutu.a
-.ELIF "$(OS)"=="ANDROID" # The no longer normal, non-DISABLE_DYNLOADING case for Android
-BUILD_ACTION+= && cat uconfig.h.prepend common/unicode/uconfig.h >common/unicode/uconfig.h.new && mv common/unicode/uconfig.h.new common/unicode/uconfig.h
-OUT2LIB= \
-    $(BUILD_DIR)$/lib$/libicudatalo.so \
-    $(BUILD_DIR)$/lib$/libicuuclo.so \
-    $(BUILD_DIR)$/lib$/libicui18nlo.so \
-    $(BUILD_DIR)$/lib$/libiculelo.so \
-    $(BUILD_DIR)$/lib$/libicutulo.so
-.ELSE
-OUT2LIB= \
-    $(BUILD_DIR)$/lib$/libicudata$(DLLPOST).$(ICU_MAJOR).$(ICU_MINOR).$(ICU_MICRO) \
-    $(BUILD_DIR)$/lib$/libicudata$(DLLPOST).$(ICU_MAJOR) \
-    $(BUILD_DIR)$/lib$/libicudata$(DLLPOST) \
-    $(BUILD_DIR)$/lib$/libicuuc$(DLLPOST).$(ICU_MAJOR).$(ICU_MINOR).$(ICU_MICRO) \
-    $(BUILD_DIR)$/lib$/libicuuc$(DLLPOST).$(ICU_MAJOR) \
-    $(BUILD_DIR)$/lib$/libicuuc$(DLLPOST) \
-    $(BUILD_DIR)$/lib$/libicui18n$(DLLPOST).$(ICU_MAJOR).$(ICU_MINOR).$(ICU_MICRO) \
-    $(BUILD_DIR)$/lib$/libicui18n$(DLLPOST).$(ICU_MAJOR) \
-    $(BUILD_DIR)$/lib$/libicui18n$(DLLPOST) \
-    $(BUILD_DIR)$/lib$/libicule$(DLLPOST).$(ICU_MAJOR).$(ICU_MINOR).$(ICU_MICRO) \
-    $(BUILD_DIR)$/lib$/libicule$(DLLPOST).$(ICU_MAJOR) \
-    $(BUILD_DIR)$/lib$/libicule$(DLLPOST) \
-    $(BUILD_DIR)$/lib$/libicutu$(DLLPOST).$(ICU_MAJOR).$(ICU_MINOR).$(ICU_MICRO) \
-    $(BUILD_DIR)$/lib$/libicutu$(DLLPOST).$(ICU_MAJOR) \
-    $(BUILD_DIR)$/lib$/libicutu$(DLLPOST)
-
-OUT2BIN_NONE= \
-    $(BUILD_DIR)$/bin$/genccode \
-    $(BUILD_DIR)$/bin$/genbrk \
-    $(BUILD_DIR)$/bin$/gencmn
-.ENDIF
-
-.ENDIF
-
-.IF "$(OS)"=="WNT"
-CONFIGURE_DIR=source
-.IF "$(COM)"=="GCC"
-.IF "$(MINGW_SHARED_GCCLIB)"=="YES"
-icu_LDFLAGS+=-shared-libgcc
-.ENDIF
-icu_LDFLAGS+=-L$(COMPATH)$/lib
-icu_LIBS=
-.IF "$(MINGW_SHARED_GXXLIB)"=="YES"
-icu_LIBS+=$(MINGW_SHARED_LIBSTDCPP)
-.ENDIF
-icu_LDFLAGS+=-Wl,--enable-runtime-pseudo-reloc-v2
-
-.IF "$(CROSS_COMPILING)"=="YES"
-# We require that the cross-build-toolset target from the top Makefile(.in) has bee built
-BUILD_AND_HOST=--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) --with-cross-build=$(posix_PWD)/$(INPATH_FOR_BUILD)/misc/build/icu/source
-.ELSE
-BUILD_AND_HOST=--build=i586-pc-mingw32 --enable-64bit-libs=no
-.ENDIF
-
-CONFIGURE_ACTION+=sh -c 'CPPFLAGS="$(EXTRA_CDEFS)" CFLAGS="-O -D_MT" CXXFLAGS="-O -D_MT" LDFLAGS="$(icu_LDFLAGS)" LIBS="$(icu_LIBS)" \
-./configure $(BUILD_AND_HOST) --enable-layout --disable-static --enable-shared --disable-samples'
-
-CONFIGURE_FLAGS=
-
-# Use of
-# CONFIGURE_ACTION=sh -c 'CFLAGS=-O CXXFLAGS=-O ./configure'
-# CONFIGURE_FLAGS=--enable-layout --enable-static --enable-shared=yes --enable-64bit-libs=no
-# doesn't work as it would result in
-# sh -c 'CFLAGS=-O CXXFLAGS=-O ./configure' --enable-layout ...
-# note the position of the single quotes.
-
-BUILD_DIR=$(CONFIGURE_DIR)
-BUILD_ACTION=$(GNUMAKE) -j$(EXTMAXPROCESS)
-OUT2LIB=
-
-OUT2BIN= \
-    $(BUILD_DIR)$/lib$/icudt$(ICU_MAJOR)$(ICU_MINOR)$(DLLPOST) \
-    $(BUILD_DIR)$/lib$/icuuc$(ICU_MAJOR)$(ICU_MINOR)$(DLLPOST) \
-    $(BUILD_DIR)$/lib$/icuin$(ICU_MAJOR)$(ICU_MINOR)$(DLLPOST) \
-    $(BUILD_DIR)$/lib$/icule$(ICU_MAJOR)$(ICU_MINOR)$(DLLPOST) \
-    $(BUILD_DIR)$/lib$/icutu$(ICU_MAJOR)$(ICU_MINOR)$(DLLPOST) \
-    $(BUILD_DIR)$/bin$/genccode.exe \
-    $(BUILD_DIR)$/bin$/genbrk.exe \
-    $(BUILD_DIR)$/bin$/gencmn.exe
-
-.ELSE
-BUILD_DIR=source
-CONFIGURE_ACTION+=bash ./runConfigureICU Cygwin/MSVC
-BUILD_ACTION=$(GNUMAKE) -j$(EXTMAXPROCESS)
-
-OUT2LIB= \
-    $(BUILD_DIR)$/lib$/icudt.lib \
-    $(BUILD_DIR)$/lib$/icuin$(ICU_BUILD_LIBPOST).lib \
-    $(BUILD_DIR)$/lib$/icuuc$(ICU_BUILD_LIBPOST).lib \
-    $(BUILD_DIR)$/lib$/icule$(ICU_BUILD_LIBPOST).lib \
-    $(BUILD_DIR)$/lib$/icutu$(ICU_BUILD_LIBPOST).lib
-
-OUT2BIN= \
-    $(BUILD_DIR)$/lib$/icudt$(ICU_MAJOR).dll \
-    $(BUILD_DIR)$/lib$/icuin$(ICU_MAJOR)$(ICU_BUILD_LIBPOST).dll \
-    $(BUILD_DIR)$/lib$/icuuc$(ICU_MAJOR)$(ICU_BUILD_LIBPOST).dll \
-    $(BUILD_DIR)$/lib$/icule$(ICU_MAJOR)$(ICU_BUILD_LIBPOST).dll \
-    $(BUILD_DIR)$/lib$/icutu$(ICU_MAJOR)$(ICU_BUILD_LIBPOST).dll \
-    $(BUILD_DIR)$/bin$/genccode.exe \
-    $(BUILD_DIR)$/bin$/genbrk.exe \
-    $(BUILD_DIR)$/bin$/gencmn.exe
-
-.ENDIF
-.ENDIF		# "$(OS)"=="WNT"
-
-#make sure that when we deliver the headers of a new icu that the timestamps
-#are newer than the last icu to ensure dependencies are correctly rebuilt
-INSTALL_ACTION=find . -name "*.h" -print0 | xargs -0 touch
-
-# --- Targets ------------------------------------------------------
-
-.INCLUDE : set_ext.mk
-.INCLUDE :	target.mk
-.INCLUDE :	tg_ext.mk
-
-.IF "$(BINARY_PATCH_FILES)"!=""
-
-$(PACKAGE_DIR)$/so_add_binary :  $(PACKAGE_DIR)$/$(ADD_FILES_FLAG_FILE)
-    cd $(PACKAGE_DIR) && gunzip -c $(BACK_PATH)$(BINARY_PATCH_FILES) | tar -xvf -
-    $(TOUCH) $(PACKAGE_DIR)$/so_add_binary
-
-$(PACKAGE_DIR)$/$(CONFIGURE_FLAG_FILE) : $(PACKAGE_DIR)$/so_add_binary
-
-.ENDIF
-
-.IF "$(OS)$(COM)"=="WNTGCC"
-ALLTAR : \
-    $(LB)$/icudata.lib \
-    $(LB)$/icuin$(ICU_BUILD_LIBPOST).lib \
-    $(LB)$/icuuc$(ICU_BUILD_LIBPOST).lib \
-    $(LB)$/icule$(ICU_BUILD_LIBPOST).lib \
-    $(LB)$/icutu$(ICU_BUILD_LIBPOST).lib
-
-$(LB)$/icudata.lib : $(PACKAGE_DIR)$/$(PREDELIVER_FLAG_FILE)
-    $(TOUCH) $@
-
-$(LB)$/icuin$(ICU_BUILD_LIBPOST).lib : $(PACKAGE_DIR)$/$(PREDELIVER_FLAG_FILE)
-    $(TOUCH) $@
-
-$(LB)$/icuuc$(ICU_BUILD_LIBPOST).lib : $(PACKAGE_DIR)$/$(PREDELIVER_FLAG_FILE)
-    $(TOUCH) $@
-
-$(LB)$/icule$(ICU_BUILD_LIBPOST).lib : $(PACKAGE_DIR)$/$(PREDELIVER_FLAG_FILE)
-    $(TOUCH) $@
-
-$(LB)$/icutu$(ICU_BUILD_LIBPOST).lib : $(PACKAGE_DIR)$/$(PREDELIVER_FLAG_FILE)
-    $(TOUCH) $@
-.ENDIF
diff --git a/icu/prj/build.lst b/icu/prj/build.lst
index c633589..3a1f86b 100644
--- a/icu/prj/build.lst
+++ b/icu/prj/build.lst
@@ -1,4 +1,2 @@
 ic  icu :	solenv external NULL
 ic	icu		usr1	-	all	ic_mkout NULL
-ic	icu		nmake	-	u	ic_icu	NULL
-ic	icu		nmake	-	w,vc7	ic_icu	NULL
diff --git a/icu/prj/d.lst b/icu/prj/d.lst
index d5fc11a..e69de29 100644
--- a/icu/prj/d.lst
+++ b/icu/prj/d.lst
@@ -1,49 +0,0 @@
-mkdir: %_DEST%\inc\icu
-mkdir: %_DEST%\inc\external\layout
-mkdir: %_DEST%\inc\external\unicode
-..\%__SRC%\misc\build\icu\source\layout\*.h %_DEST%\inc\external\layout\*.h
-..\%__SRC%\misc\build\icu\source\common\unicode\*.h %_DEST%\inc\external\unicode\*.h
-..\%__SRC%\misc\build\icu\source\i18n\unicode\*.h %_DEST%\inc\external\unicode\*.h
-
-..\%__SRC%\lib\*.a %_DEST%\lib\*.a
-..\%__SRC%\lib\*.lib %_DEST%\lib\*.lib
-..\%__SRC%\lib\*.lib %_DEST%\lib
-
-..\%__SRC%\bin\*.dll %_DEST%\bin\*.dll
-
-..\%__SRC%\bin\genccode     %_DEST%\bin\genccode
-..\%__SRC%\bin\genccode.exe %_DEST%\bin\genccode.exe
-..\%__SRC%\bin\genbrk       %_DEST%\bin\genbrk
-..\%__SRC%\bin\genbrk.exe   %_DEST%\bin\genbrk.exe
-..\%__SRC%\bin\gencmn       %_DEST%\bin\gencmn
-..\%__SRC%\bin\gencmn.exe   %_DEST%\bin\gencmn.exe
-
-..\%__SRC%\lib\libicudata.*.*.*     %_DEST%\lib\
-..\%__SRC%\lib\libicui18n.*.*.*     %_DEST%\lib\
-..\%__SRC%\lib\libicule.*.*.*       %_DEST%\lib\
-..\%__SRC%\lib\libicuuc.*.*.*       %_DEST%\lib\
-..\%__SRC%\lib\libicutu.*.*.*       %_DEST%\lib\
-
-..\%__SRC%\lib\libicudata.so    %_DEST%\lib\
-..\%__SRC%\lib\libicui18n.so    %_DEST%\lib\
-..\%__SRC%\lib\libicule.so      %_DEST%\lib\
-..\%__SRC%\lib\libicuuc.so      %_DEST%\lib\
-..\%__SRC%\lib\libicutu.so      %_DEST%\lib\
-
-..\%__SRC%\lib\libicudatalo.so    %_DEST%\lib\
-..\%__SRC%\lib\libicui18nlo.so    %_DEST%\lib\
-..\%__SRC%\lib\libiculelo.so      %_DEST%\lib\
-..\%__SRC%\lib\libicuuclo.so      %_DEST%\lib\
-..\%__SRC%\lib\libicutulo.so      %_DEST%\lib\
-
-..\%__SRC%\lib\libicudata.a     %_DEST%\lib\
-..\%__SRC%\lib\libicui18n.a     %_DEST%\lib\
-..\%__SRC%\lib\libicule.a       %_DEST%\lib\
-..\%__SRC%\lib\libicuuc.a       %_DEST%\lib\
-..\%__SRC%\lib\libicutu.a       %_DEST%\lib\
-
-linklib: libicudata.*.*.*
-linklib: libicui18n.*.*.*
-linklib: libicule.*.*.*
-linklib: libicuuc.*.*.*
-linklib: libicutu.*.*.*
diff --git a/icu/prj/dmake b/icu/prj/dmake
deleted file mode 100644
index e69de29..0000000
diff --git a/l10ntools/Executable_helpex.mk b/l10ntools/Executable_helpex.mk
index 4826176..0652b64 100644
--- a/l10ntools/Executable_helpex.mk
+++ b/l10ntools/Executable_helpex.mk
@@ -38,6 +38,7 @@ $(eval $(call gb_Executable_use_libraries,helpex,\
 $(eval $(call gb_Executable_use_externals,helpex,\
 	expat_utf8 \
 	boost_headers \
+	icu_headers \
 ))
 
 $(eval $(call gb_Executable_use_static_libraries,helpex,\
diff --git a/l10ntools/Executable_stringex.mk b/l10ntools/Executable_stringex.mk
index b053412..f20a9f8 100644
--- a/l10ntools/Executable_stringex.mk
+++ b/l10ntools/Executable_stringex.mk
@@ -32,6 +32,7 @@ $(eval $(call gb_Executable_use_externals,stringex,\
     libxml2 \
     icuuc \
     icui18n \
+    icu_headers \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/l10ntools/Executable_transex3.mk b/l10ntools/Executable_transex3.mk
index baba40e..132e8a1 100644
--- a/l10ntools/Executable_transex3.mk
+++ b/l10ntools/Executable_transex3.mk
@@ -52,6 +52,7 @@ $(eval $(call gb_Executable_add_exception_objects,transex3,\
 $(eval $(call gb_Executable_use_externals,transex3,\
     icuuc \
     icui18n \
+    icu_headers \
     libxml2 \
 ))
 
diff --git a/l10ntools/Executable_treex.mk b/l10ntools/Executable_treex.mk
index 2cdb1b2..988e780 100644
--- a/l10ntools/Executable_treex.mk
+++ b/l10ntools/Executable_treex.mk
@@ -30,8 +30,9 @@ $(eval $(call gb_Executable_add_exception_objects,treex,\
 
 $(eval $(call gb_Executable_use_externals,treex,\
     libxml2 \
-	icuuc \
+    icuuc \
     icui18n \
+    icu_headers \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/l10ntools/Executable_uiex.mk b/l10ntools/Executable_uiex.mk
index 5a8f23c..0c142c0 100644
--- a/l10ntools/Executable_uiex.mk
+++ b/l10ntools/Executable_uiex.mk
@@ -33,6 +33,7 @@ $(eval $(call gb_Executable_use_externals,uiex,\
     boost_headers \
     icuuc \
     icui18n \
+    icu_headers \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/l10ntools/Executable_xrmex.mk b/l10ntools/Executable_xrmex.mk
index bcad1b9..f11f33d 100644
--- a/l10ntools/Executable_xrmex.mk
+++ b/l10ntools/Executable_xrmex.mk
@@ -53,6 +53,7 @@ $(eval $(call gb_Executable_use_externals,xrmex,\
     libxml2 \
     icuuc \
     icui18n \
+    icu_headers \
 ))
 
 # vim:set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/l10ntools/StaticLibrary_transex.mk b/l10ntools/StaticLibrary_transex.mk
index 79a7a20..e5cad80 100644
--- a/l10ntools/StaticLibrary_transex.mk
+++ b/l10ntools/StaticLibrary_transex.mk
@@ -37,7 +37,10 @@ $(eval $(call gb_StaticLibrary_set_include,transex,\
     $$(INCLUDE) \
 ))
 
-$(eval $(call gb_StaticLibrary_use_external,transex,boost_headers))
+$(eval $(call gb_StaticLibrary_use_externals,transex,\
+	boost_headers \
+	icu_headers \
+))
 
 $(eval $(call gb_StaticLibrary_add_exception_objects,transex,\
     l10ntools/source/export2 \
diff --git a/linguistic/Library_lng.mk b/linguistic/Library_lng.mk
index a7fad43..3658062 100644
--- a/linguistic/Library_lng.mk
+++ b/linguistic/Library_lng.mk
@@ -58,7 +58,10 @@ $(eval $(call gb_Library_use_libraries,lng,\
 	$(gb_UWINAPI) \
 ))
 
-$(eval $(call gb_Library_use_external,lng,icuuc))
+$(eval $(call gb_Library_use_externals,lng,\
+	icuuc \
+	icu_headers \
+))
 
 $(eval $(call gb_Library_add_exception_objects,lng,\
 	linguistic/source/convdic \
diff --git a/lotuswordpro/Library_lwpft.mk b/lotuswordpro/Library_lwpft.mk
index d528c63..361cf7d 100644
--- a/lotuswordpro/Library_lwpft.mk
+++ b/lotuswordpro/Library_lwpft.mk
@@ -53,6 +53,7 @@ $(eval $(call gb_Library_use_libraries,lwpft,\
 $(eval $(call gb_Library_use_externals,lwpft,\
     icui18n \
     icuuc \
+    icu_headers \
 ))
 
 $(eval $(call gb_Library_set_componentfile,lwpft,lotuswordpro/util/lwpfilter))
diff --git a/solenv/gbuild/UnpackedTarball.mk b/solenv/gbuild/UnpackedTarball.mk
index e6ed638..f68da67 100644
--- a/solenv/gbuild/UnpackedTarball.mk
+++ b/solenv/gbuild/UnpackedTarball.mk
@@ -21,7 +21,7 @@ gb_UnpackedTarget_STRIP_COMPONENTS_ZIP_DEFAULT := 0
 define gb_UnpackedTarget__get_strip_components
 $(strip $(if $(2),\
 	$(2),\
-	$(if $(filter zip,$(suffix $(1))),\
+	$(if $(filter .zip,$(suffix $(1))),\
 		$(gb_UnpackedTarget_STRIP_COMPONENTS_ZIP_DEFAULT),\
 		$(gb_UnpackedTarget_STRIP_COMPONENTS_TAR_DEFAULT) \
 	) \
diff --git a/svtools/Library_svt.mk b/svtools/Library_svt.mk
index aec304b..fa01405 100644
--- a/svtools/Library_svt.mk
+++ b/svtools/Library_svt.mk
@@ -60,6 +60,7 @@ $(eval $(call gb_Library_use_libraries,svt,\
 
 $(eval $(call gb_Library_use_externals,svt,\
     icuuc \
+    icu_headers \
     jpeg \
 ))
 
diff --git a/svx/Library_svx.mk b/svx/Library_svx.mk
index 6837af4..b331a26 100644
--- a/svx/Library_svx.mk
+++ b/svx/Library_svx.mk
@@ -61,7 +61,10 @@ $(eval $(call gb_Library_use_libraries,svx,\
 	$(gb_UWINAPI) \
 ))
 
-$(eval $(call gb_Library_use_external,svx,icuuc))
+$(eval $(call gb_Library_use_externals,svx,\
+	icuuc \
+	icu_headers \
+))
 
 $(eval $(call gb_Library_add_exception_objects,svx,\
     svx/source/accessibility/AccessibleControlShape \
diff --git a/sw/Library_msword.mk b/sw/Library_msword.mk
index 0219888..23c5e7a 100644
--- a/sw/Library_msword.mk
+++ b/sw/Library_msword.mk
@@ -65,6 +65,7 @@ $(eval $(call gb_Library_use_libraries,msword,\
 
 $(eval $(call gb_Library_use_externals,msword,\
 	icuuc \
+	icu_headers \
 	libxml2 \
 ))
 
diff --git a/sw/Library_sw.mk b/sw/Library_sw.mk
index c66cb26..47e55be 100644
--- a/sw/Library_sw.mk
+++ b/sw/Library_sw.mk
@@ -74,6 +74,7 @@ $(eval $(call gb_Library_use_libraries,sw,\
 
 $(eval $(call gb_Library_use_externals,sw,\
 	icuuc \
+	icu_headers \
 	libxml2 \
 ))
 
diff --git a/tail_build/prj/build.lst b/tail_build/prj/build.lst
index 19db532..9423882 100644
--- a/tail_build/prj/build.lst
+++ b/tail_build/prj/build.lst
@@ -1,2 +1,2 @@
-tb      tail_build : EXPAT:expat FONTCONFIG:fontconfig ICU:icu LIBXML2:libxml2 LIBXSLT:libxslt MOZ:moz NSS:nss OPENSSL:openssl PYTHON:python3 REDLAND:redland XPDF:xpdf external solenv soltools NULL
+tb      tail_build : EXPAT:expat FONTCONFIG:fontconfig LIBXML2:libxml2 LIBXSLT:libxslt MOZ:moz NSS:nss OPENSSL:openssl PYTHON:python3 REDLAND:redland XPDF:xpdf external solenv soltools NULL
 tb tail_build\prj nmake - all tb_prj   NULL
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index 66e18c4..5c1b267 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -98,6 +98,7 @@ endif
 $(eval $(call gb_Library_use_externals,vcl,\
 	icule \
 	icuuc \
+	icu_headers \
 	lcms2 \
 ))
 
commit e7f7053b227cf109c3cf733d0c698e51aed159a3
Author: Luboš Luňák <l.lunak at suse.cz>
Date:   Thu Dec 27 16:14:27 2012 +0100

    remove no longer needed hack

diff --git a/sd/source/ui/remotecontrol/BluetoothServer.cxx b/sd/source/ui/remotecontrol/BluetoothServer.cxx
index 16b1b15..beca8eb 100644
--- a/sd/source/ui/remotecontrol/BluetoothServer.cxx
+++ b/sd/source/ui/remotecontrol/BluetoothServer.cxx
@@ -33,15 +33,7 @@
   #undef WB_LEFT
   #undef WB_RIGHT
   #include <winsock2.h>
-  // HACK: ws2bth.h defines a struct with a field named MSC, which is
-  // a #define set by gbuild. Plain #undef MSC here fails with MSVC
-  // used together with ccache (bug, presumably), so #define it to some
-  // other usable value.
-  #undef MSC
-  #define MSC mscfield
   #include <ws2bth.h>
-  #undef MSC
-  #define MSC
 #endif
 
 #ifdef __MINGW32__


More information about the Libreoffice-commits mailing list