[Libreoffice-commits] core.git: i18npool/CustomTarget_collator.mk i18npool/source solenv/gbuild

Tor Lillqvist tml at collabora.com
Tue Apr 22 13:13:38 PDT 2014


 i18npool/CustomTarget_collator.mk             |   61 +++++++++++++++++---------
 i18npool/source/collator/collator_unicode.cxx |   28 +++++++++++
 solenv/gbuild/Helper.mk                       |   10 ++++
 3 files changed, 77 insertions(+), 22 deletions(-)

New commits:
commit 8774a2b1279fcb43eb3cf821cadd3b969078cbcd
Author: Tor Lillqvist <tml at collabora.com>
Date:   Tue Apr 22 23:09:40 2014 +0300

    Let --with-locales prune also built-in collator data
    
    Effective in the DISABLE_DYNLOADING case.
    
    Introduce a new gbuild macro gb_Helper_optional_locale.
    
    Change-Id: I43eb39fa810f71cadb6bc6d5c117ae145629ecb9

diff --git a/i18npool/CustomTarget_collator.mk b/i18npool/CustomTarget_collator.mk
index 04527bb..9fea159 100644
--- a/i18npool/CustomTarget_collator.mk
+++ b/i18npool/CustomTarget_collator.mk
@@ -11,26 +11,37 @@ $(eval $(call gb_CustomTarget_CustomTarget,i18npool/collator))
 
 i18npool_CODIR := $(call gb_CustomTarget_get_workdir,i18npool/collator)
 i18npool_COTXTS := \
-    ca_charset.txt \
-    dz_charset.txt \
-    hu_charset.txt \
-    ja_charset.txt \
-    ja_phonetic_alphanumeric_first.txt \
-    ja_phonetic_alphanumeric_last.txt \
-    ko_charset.txt \
-    ku_alphanumeric.txt \
-    ln_charset.txt \
-    my_dictionary.txt \
-    ne_charset.txt \
-    sid_charset.txt \
-    zh_charset.txt \
-    zh_pinyin.txt \
-    zh_radical.txt \
-    zh_stroke.txt \
-    zh_TW_charset.txt \
-    zh_TW_radical.txt \
-    zh_TW_stroke.txt \
-    zh_zhuyin.txt
+    $(call gb_Helper_optional_locale,ca, \
+        ca_charset.txt) \
+    $(call gb_Helper_optional_locale,dz, \
+        dz_charset.txt) \
+    $(call gb_Helper_optional_locale,hu, \
+        hu_charset.txt) \
+    $(call gb_Helper_optional_locale,ja, \
+        ja_charset.txt \
+        ja_phonetic_alphanumeric_first.txt \
+        ja_phonetic_alphanumeric_last.txt) \
+    $(call gb_Helper_optional_locale,ko, \
+        ko_charset.txt) \
+    $(call gb_Helper_optional_locale,ku, \
+        ku_alphanumeric.txt) \
+    $(call gb_Helper_optional_locale,ln, \
+        ln_charset.txt) \
+    $(call gb_Helper_optional_locale,my, \
+        my_dictionary.txt) \
+    $(call gb_Helper_optional_locale,ne, \
+        ne_charset.txt) \
+    $(call gb_Helper_optional_locale,sid, \
+        sid_charset.txt) \
+    $(call gb_Helper_optional_locale,zh, \
+        zh_charset.txt \
+        zh_pinyin.txt \
+        zh_radical.txt \
+        zh_stroke.txt \
+        zh_TW_charset.txt \
+        zh_TW_radical.txt \
+        zh_TW_stroke.txt \
+        zh_zhuyin.txt)
 
 $(call gb_CustomTarget_get_target,i18npool/collator) : $(SRCDIR)/i18npool/CustomTarget_collator.mk \
 	$(i18npool_CODIR)/lrl_include.hxx $(foreach txt,$(i18npool_COTXTS), \
@@ -44,10 +55,20 @@ $(i18npool_CODIR)/collator_%.cxx : \
 	$(call gb_Helper_abbreviate_dirs, \
 		$(call gb_Helper_execute,gencoll_rule) $< $@ $*)
 
+define i18npool_echo_one_lang
+	echo '#define LOCAL_RULE_$(1)' >>$@
+
+endef
+
 $(i18npool_CODIR)/lrl_include.hxx : \
 		$(SRCDIR)/i18npool/source/collator/data | $(i18npool_CODIR)/.dir
 	$(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),ECH,1)
 	echo '#define LOCAL_RULE_LANGS "$(sort $(foreach txt,$(i18npool_COTXTS), \
 		$(firstword $(subst _, ,$(txt)))))"' > $@
+ifeq ($(WITH_LOCALES),)
+	echo '#define LOCAL_RULE_ALL' >>$@
+else
+	$(foreach txt,$(i18npool_COTXTS),$(call i18npool_echo_one_lang,$(subst .txt,,$(txt))))
+endif
 
 # vim: set noet sw=4 ts=4:
diff --git a/i18npool/source/collator/collator_unicode.cxx b/i18npool/source/collator/collator_unicode.cxx
index f6fcbe7..5f03e4b 100644
--- a/i18npool/source/collator/collator_unicode.cxx
+++ b/i18npool/source/collator/collator_unicode.cxx
@@ -154,16 +154,25 @@ Collator_Unicode::loadCollatorAlgorithm(const OUString& rAlgorithm, const lang::
                 }
             }
 #else
-            if ( rLocale.Language == "ca" ) {
+            if (false) {
+                ;
+#if defined LOCAL_RULE_ALL || defined LOCAL_RULE_ca_charset
+            } else if ( rLocale.Language == "ca" ) {
                 if ( rAlgorithm == "charset" )
                     func = get_collator_data_ca_charset;
+#endif
+#if defined LOCAL_RULE_ALL || defined LOCAL_RULE_dz_charset
             } else if ( rLocale.Language == "dz" || rLocale.Language == "bo" ) {
                 // 'bo' Tibetan uses the same collation rules as 'dz' Dzongkha
                 if ( rAlgorithm == "charset" )
                     func = get_collator_data_dz_charset;
+#endif
+#if defined LOCAL_RULE_ALL || defined LOCAL_RULE_hu
             } else if ( rLocale.Language == "hu" ) {
                 if ( rAlgorithm == "charset" )
                     func = get_collator_data_hu_charset;
+#endif
+#if defined LOCAL_RULE_ALL || defined LOCAL_RULE_ja_charset
             } else if ( rLocale.Language == "ja" ) {
                 if ( rAlgorithm == "charset" )
                     func = get_collator_data_ja_charset;
@@ -171,24 +180,38 @@ Collator_Unicode::loadCollatorAlgorithm(const OUString& rAlgorithm, const lang::
                     func = get_collator_data_ja_phonetic_alphanumeric_first;
                 else if ( rAlgorithm == "phonetic (alphanumeric last)" )
                     func = get_collator_data_ja_phonetic_alphanumeric_last;
+#endif
+#if defined LOCAL_RULE_ALL || defined LOCAL_RULE_ko_charset
             } else if ( rLocale.Language == "ko" ) {
                 if ( rAlgorithm == "charset" )
                     func = get_collator_data_ko_charset;
+#endif
+#if defined LOCAL_RULE_ALL || defined LOCAL_RULE_ku_charset
             } else if ( rLocale.Language == "ku" ) {
                 if ( rAlgorithm == "alphanumeric" )
                     func = get_collator_data_ku_alphanumeric;
+#endif
+#if defined LOCAL_RULE_ALL || defined LOCAL_RULE_ln_charset
             } else if ( rLocale.Language == "ln" ) {
                 if ( rAlgorithm == "charset" )
                     func = get_collator_data_ln_charset;
+#endif
+#if defined LOCAL_RULE_ALL || defined LOCAL_RULE_my_charset
             } else if ( rLocale.Language == "my" ) {
                 if ( rAlgorithm == "dictionary" )
                     func = get_collator_data_my_dictionary;
+#endif
+#if defined LOCAL_RULE_ALL || defined LOCAL_RULE_ne_charset
             } else if ( rLocale.Language == "ne" ) {
                 if ( rAlgorithm == "charset" )
                     func = get_collator_data_ne_charset;
+#endif
+#if defined LOCAL_RULE_ALL || defined LOCAL_RULE_sid_charset
             } else if ( rLocale.Language == "sid" ) {
                 if ( rAlgorithm == "charset" )
                     func = get_collator_data_sid_charset;
+#endif
+#if defined LOCAL_RULE_ALL || defined LOCAL_RULE_zh_charset
             } else if ( rLocale.Language == "zh" && (rLocale.Country == "TW" || rLocale.Country == "HK" || rLocale.Country == "MO") ) {
                 if ( rAlgorithm == "charset" )
                     func = get_collator_data_zh_TW_charset;
@@ -207,8 +230,9 @@ Collator_Unicode::loadCollatorAlgorithm(const OUString& rAlgorithm, const lang::
                     func = get_collator_data_zh_stroke;
                 else if ( rAlgorithm == "zhuyin" )
                     func = get_collator_data_zh_zhuyin;
-            }
 #endif
+            }
+#endif // DISABLE_DYNLOADING
             if (func) {
                 const sal_uInt8* ruleImage=func();
                 uca_base = new RuleBasedCollator(static_cast<UChar*>(NULL), status);
diff --git a/solenv/gbuild/Helper.mk b/solenv/gbuild/Helper.mk
index 4b9c249..8efba98 100644
--- a/solenv/gbuild/Helper.mk
+++ b/solenv/gbuild/Helper.mk
@@ -242,6 +242,16 @@ define gb_Helper_optional
 $(if $(filter $(1),$(BUILD_TYPE)),$(2))
 endef
 
+ifeq ($(WITH_LOCALES),)
+define gb_Helper_optional_locale
+$(2)
+endef
+else
+define gb_Helper_optional_locale
+$(if $(filter $(1) $(1)_%,$(WITH_LOCALES)),$(2))
+endef
+endif
+
 define gb_Helper_optional_for_host
 $(if $(filter $(1),$(BUILD_TYPE_FOR_HOST)),$(2))
 endef


More information about the Libreoffice-commits mailing list