diff --git a/configure.in b/configure.in index f3e93afb72e017edccf64fe81aa6e77403c1f31f..d6acef071a6ada21deee12f4c65ca060df345e33 100644 --- a/configure.in +++ b/configure.in @@ -2811,6 +2811,24 @@ AC_DEFINE_UNQUOTED([MYSQL_DEFAULT_CHARSET_NAME], ["$default_charset"], AC_DEFINE_UNQUOTED([MYSQL_DEFAULT_COLLATION_NAME], ["$default_collation"], [Define the default charset name]) + +# Shall we build the UCA-based Unicode collations +AC_ARG_WITH(uca, + [ --without-uca Skip building of the national Unicode collations.], + [with_uca=$withval], + [with_uca=yes] +) + +AC_MSG_CHECKING([whether to compile national Unicode collations]) + +if test "$with_uca" = "yes" +then + AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_UCA_COLLATIONS], [1], [national Unicode collations]) +else + AC_MSG_RESULT(no) +fi + MYSQL_CHECK_ISAM MYSQL_CHECK_BDB MYSQL_CHECK_INNODB diff --git a/mysys/charset-def.c b/mysys/charset-def.c index 3dcd2a2d1165b9b1f6b564ea9d7e6756f373475a..3278566788cc1182c83cdb2b4ddb97cff9ab0280 100644 --- a/mysys/charset-def.c +++ b/mysys/charset-def.c @@ -22,6 +22,8 @@ init_compiled_charsets() that only adds those that he wants */ +#ifdef HAVE_UCA_COLLATIONS + #ifdef HAVE_CHARSET_ucs2 extern CHARSET_INFO my_charset_ucs2_general_uca; extern CHARSET_INFO my_charset_ucs2_icelandic_uca_ci; @@ -62,6 +64,8 @@ extern CHARSET_INFO my_charset_utf8_roman_uca_ci; extern CHARSET_INFO my_charset_utf8_persian_uca_ci; #endif +#endif /* HAVE_UCA_COLLATIONS */ + my_bool init_compiled_charsets(myf flags __attribute__((unused))) { CHARSET_INFO *cs; @@ -113,6 +117,7 @@ my_bool init_compiled_charsets(myf flags __attribute__((unused))) #ifdef HAVE_CHARSET_ucs2 add_compiled_collation(&my_charset_ucs2_general_ci); add_compiled_collation(&my_charset_ucs2_bin); +#ifdef HAVE_UCA_COLLATIONS add_compiled_collation(&my_charset_ucs2_general_uca); add_compiled_collation(&my_charset_ucs2_icelandic_uca_ci); add_compiled_collation(&my_charset_ucs2_latvian_uca_ci); @@ -131,6 +136,7 @@ my_bool init_compiled_charsets(myf flags __attribute__((unused))) add_compiled_collation(&my_charset_ucs2_roman_uca_ci); add_compiled_collation(&my_charset_ucs2_persian_uca_ci); #endif +#endif #ifdef HAVE_CHARSET_ujis add_compiled_collation(&my_charset_ujis_japanese_ci); @@ -140,6 +146,7 @@ my_bool init_compiled_charsets(myf flags __attribute__((unused))) #ifdef HAVE_CHARSET_utf8 add_compiled_collation(&my_charset_utf8_general_ci); add_compiled_collation(&my_charset_utf8_bin); +#ifdef HAVE_UCA_COLLATIONS add_compiled_collation(&my_charset_utf8_general_uca_ci); add_compiled_collation(&my_charset_utf8_icelandic_uca_ci); add_compiled_collation(&my_charset_utf8_latvian_uca_ci); @@ -157,6 +164,7 @@ my_bool init_compiled_charsets(myf flags __attribute__((unused))) add_compiled_collation(&my_charset_utf8_spanish2_uca_ci); add_compiled_collation(&my_charset_utf8_roman_uca_ci); add_compiled_collation(&my_charset_utf8_persian_uca_ci); +#endif #endif /* Copy compiled charsets */ diff --git a/mysys/charset.c b/mysys/charset.c index 5587a6d685f13ecedffe6b0f2e952df54362c1c0..bb8f2d178b9ed1f2cc7b30fcaa767de2fc76bb12 100644 --- a/mysys/charset.c +++ b/mysys/charset.c @@ -215,7 +215,7 @@ static int add_collation(CHARSET_INFO *cs) if (!strcmp(cs->csname,"ucs2") ) { -#ifdef HAVE_CHARSET_ucs2 +#if defined(HAVE_CHARSET_ucs2) && defined(HAVE_UCA_COLLATIONS) new->cset= my_charset_ucs2_general_uca.cset; new->coll= my_charset_ucs2_general_uca.coll; new->strxfrm_multiply= my_charset_ucs2_general_uca.strxfrm_multiply; diff --git a/strings/ctype-uca.c b/strings/ctype-uca.c index 452ca263433f985fbdd8df7c638be5f4b05025ef..7678ee051200bceac7ecc01acb3adab3e5f92bdb 100644 --- a/strings/ctype-uca.c +++ b/strings/ctype-uca.c @@ -36,6 +36,7 @@ #include "m_string.h" #include "m_ctype.h" +#ifdef HAVE_UCA_COLLATIONS #define MY_UCA_NPAGES 256 #define MY_UCA_NCHARS 256 @@ -8990,4 +8991,6 @@ CHARSET_INFO my_charset_utf8_persian_uca_ci= &my_collation_any_uca_handler }; -#endif +#endif /* HAVE_CHARSET_utf8 */ + +#endif /* HAVE_UCA_COLLATIONS */