mirror of
https://github.com/php/php-src.git
synced 2024-09-22 10:27:25 +00:00
9ac49c0dd3
mb_convert_kana now uses the new text encoding conversion filters. Microbenchmarking shows speed gains of 50%-150% across various text encodings and input string lengths. The behavior is the same as the old mb_convert_kana except for one fix: if the 'zero codepoint' U+0000 appeared in the input, the old implementation would sometimes drop it, not passing it through to the output. This is now fixed.
65 lines
3.1 KiB
JavaScript
65 lines
3.1 KiB
JavaScript
// vim:ft=javascript
|
|
|
|
ARG_ENABLE("mbstring", "multibyte string functions", "no");
|
|
ARG_ENABLE("mbregex", "multibyte regex support", "no");
|
|
|
|
if (PHP_MBSTRING != "no") {
|
|
|
|
if (CHECK_HEADER_ADD_INCLUDE("mbstring.h", "CFLAGS_MBSTRING", PHP_MBSTRING + ";" + PHP_PHP_BUILD + "\\include")) {
|
|
EXTENSION("mbstring", "mbstring.c php_unicode.c mb_gpc.c", PHP_MBSTRING_SHARED);
|
|
|
|
STDOUT.WriteLine("Using bundled libmbfl...");
|
|
|
|
ADD_FLAG("CFLAGS_MBSTRING", "-Iext/mbstring -Iext/mbstring/libmbfl -Iext/mbstring/libmbfl/mbfl \
|
|
/D HAVE_STRICMP /D MBFL_DLL_EXPORT=1 /DZEND_ENABLE_STATIC_TSRMLS_CACHE=1")
|
|
|
|
FSO.CopyFile("ext\\mbstring\\libmbfl\\config.h.w32",
|
|
"ext\\mbstring\\libmbfl\\config.h", true);
|
|
|
|
ADD_SOURCES("ext/mbstring/libmbfl/filters", "html_entities.c \
|
|
mbfilter_7bit.c mbfilter_base64.c mbfilter_big5.c mbfilter_cp932.c \
|
|
mbfilter_cp936.c mbfilter_cp51932.c mbfilter_euc_cn.c \
|
|
mbfilter_euc_jp.c mbfilter_euc_jp_win.c mbfilter_euc_kr.c \
|
|
mbfilter_euc_tw.c mbfilter_htmlent.c mbfilter_hz.c mbfilter_iso2022_kr.c \
|
|
mbfilter_jis.c mbfilter_iso2022_jp_ms.c mbfilter_gb18030.c \
|
|
mbfilter_sjis_2004.c mbfilter_qprint.c mbfilter_sjis.c mbfilter_ucs2.c \
|
|
mbfilter_ucs4.c mbfilter_uhc.c mbfilter_utf16.c mbfilter_utf32.c \
|
|
mbfilter_utf7.c mbfilter_utf7imap.c mbfilter_utf8.c \
|
|
mbfilter_utf8_mobile.c mbfilter_uuencode.c \
|
|
mbfilter_cp5022x.c mbfilter_sjis_mobile.c \
|
|
mbfilter_sjis_mac.c \
|
|
mbfilter_iso2022jp_mobile.c mbfilter_singlebyte.c", "mbstring");
|
|
|
|
ADD_SOURCES("ext/mbstring/libmbfl/mbfl", "mbfilter.c mbfilter_8bit.c \
|
|
mbfilter_pass.c mbfilter_wchar.c mbfl_convert.c mbfl_encoding.c \
|
|
mbfl_filter_output.c mbfl_language.c mbfl_memory_device.c \
|
|
mbfl_string.c", "mbstring");
|
|
|
|
ADD_SOURCES("ext/mbstring/libmbfl/nls", "nls_de.c nls_en.c nls_ja.c \
|
|
nls_kr.c nls_neutral.c nls_ru.c nls_uni.c nls_zh.c nls_hy.c \
|
|
nls_ua.c nls_tr.c", "mbstring");
|
|
|
|
PHP_INSTALL_HEADERS("ext/mbstring", "mbstring.h libmbfl/config.h libmbfl/mbfl/eaw_table.h libmbfl/mbfl/mbfilter.h libmbfl/mbfl/mbfilter_8bit.h libmbfl/mbfl/mbfilter_pass.h libmbfl/mbfl/mbfilter_wchar.h libmbfl/mbfl/mbfl_consts.h libmbfl/mbfl/mbfl_convert.h libmbfl/mbfl/mbfl_defs.h libmbfl/mbfl/mbfl_encoding.h libmbfl/mbfl/mbfl_filter_output.h libmbfl/mbfl/mbfl_language.h libmbfl/mbfl/mbfl_memory_device.h libmbfl/mbfl/mbfl_string.h");
|
|
|
|
AC_DEFINE('HAVE_MBSTRING', 1, 'Have mbstring support');
|
|
|
|
if (PHP_MBREGEX != "no") {
|
|
if (CHECK_HEADER_ADD_INCLUDE("oniguruma.h", "CFLAGS_MBSTRING", PHP_MBREGEX) &&
|
|
CHECK_LIB("onig_a.lib;libonig_a.lib", "mbstring", PHP_MBSTRING)) {
|
|
AC_DEFINE('HAVE_MBREGEX', 1);
|
|
|
|
/* XXX libonig is only usable as a static library ATM, code change required to link with a DLL. */
|
|
ADD_FLAG("CFLAGS_MBSTRING", "/DONIG_EXTERN=extern /DPHP_ONIG_BAD_KOI8_ENTRY=1 /DZEND_ENABLE_STATIC_TSRMLS_CACHE=1");
|
|
|
|
ADD_SOURCES("ext/mbstring", "php_mbregex.c", "mbstring");
|
|
PHP_INSTALL_HEADERS("ext/mbstring", "php_mbregex.h php_onig_compat.h");
|
|
} else {
|
|
WARNING("mbregex not enabled; libraries and headers not found");
|
|
}
|
|
}
|
|
|
|
} else {
|
|
WARNING("mbstring not enabled; libraries and headers not found");
|
|
}
|
|
}
|