mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00

This needs to be explicitly enabled for MSVC (and probably clang on Windows); otherwise the default is C++14, which is no longer sufficient for ICU[1]. While the official PHP 8.4 builds for Windows do not yet use ICU 75.1, that may change[2]. And even if not, it would be nice for custom builds to be able to build against ICU 75.1 (or later). Anyhow, using `std:c++17` is fine for ICU 72.1 which we are currently using (and likely for some older ICU versions). [1] <https://github.com/unicode-org/icu/releases/tag/release-75-1> [2] <https://github.com/winlibs/icu4c/pulls>
133 lines
4 KiB
JavaScript
133 lines
4 KiB
JavaScript
// vim:ft=javascript
|
|
|
|
ARG_ENABLE("intl", "Enable internationalization support", "no");
|
|
|
|
if (PHP_INTL != "no") {
|
|
if (CHECK_LIB("icuuc.lib", "intl", PHP_INTL) &&
|
|
CHECK_HEADER_ADD_INCLUDE("unicode/utf.h", "CFLAGS_INTL")) {
|
|
// always build as shared - zend_strtod.c/ICU type conflict
|
|
EXTENSION("intl", "php_intl.c intl_convert.c intl_convertcpp.cpp intl_error.c ", true,
|
|
"/I \"" + configure_module_dirname + "\" /DZEND_ENABLE_STATIC_TSRMLS_CACHE=1");
|
|
ADD_EXTENSION_DEP('intl', 'date');
|
|
ADD_SOURCES(configure_module_dirname + "/collator", "\
|
|
collator_attr.c \
|
|
collator_class.c \
|
|
collator_compare.c \
|
|
collator_convert.c \
|
|
collator_create.c \
|
|
collator_error.c \
|
|
collator_is_numeric.c \
|
|
collator_locale.c \
|
|
collator_sort.c \
|
|
", "intl");
|
|
ADD_SOURCES(configure_module_dirname + "/common", "\
|
|
common_error.c \
|
|
common_enum.cpp \
|
|
common_date.cpp \
|
|
", "intl");
|
|
ADD_SOURCES(configure_module_dirname + "/converter", "\
|
|
converter.c \
|
|
", "intl");
|
|
ADD_SOURCES(configure_module_dirname + "/formatter", "\
|
|
formatter_attr.c \
|
|
formatter_class.c \
|
|
formatter_data.c \
|
|
formatter_format.c \
|
|
formatter_main.c \
|
|
formatter_parse.c \
|
|
", "intl");
|
|
ADD_SOURCES(configure_module_dirname + "/locale", "\
|
|
locale.c \
|
|
locale_class.c \
|
|
locale_methods.c \
|
|
", "intl");
|
|
ADD_SOURCES(configure_module_dirname + "/msgformat", "\
|
|
msgformat.c \
|
|
msgformat_attr.c \
|
|
msgformat_class.c \
|
|
msgformat_data.c \
|
|
msgformat_format.c \
|
|
msgformat_helpers.cpp \
|
|
msgformat_parse.c \
|
|
", "intl");
|
|
ADD_SOURCES(configure_module_dirname + "/grapheme", "\
|
|
grapheme_string.c grapheme_util.c \
|
|
", "intl");
|
|
ADD_SOURCES(configure_module_dirname + "/normalizer", "\
|
|
normalizer_class.c \
|
|
normalizer_normalize.c \
|
|
", "intl");
|
|
ADD_SOURCES(configure_module_dirname + "/dateformat", "\
|
|
dateformat.c \
|
|
dateformat_class.c \
|
|
dateformat_attr.c \
|
|
dateformat_format.c \
|
|
dateformat_format_object.cpp \
|
|
dateformat_parse.c \
|
|
dateformat_data.c \
|
|
dateformat_attrcpp.cpp \
|
|
dateformat_helpers.cpp \
|
|
dateformat_create.cpp \
|
|
datepatterngenerator_class.cpp \
|
|
datepatterngenerator_methods.cpp \
|
|
", "intl");
|
|
ADD_SOURCES(configure_module_dirname + "/uchar", "\
|
|
uchar.c",
|
|
"intl");
|
|
ADD_SOURCES(configure_module_dirname + "/idn", "\
|
|
idn.c",
|
|
"intl");
|
|
ADD_SOURCES(configure_module_dirname + "/resourcebundle", "\
|
|
resourcebundle.c \
|
|
resourcebundle_class.c \
|
|
resourcebundle_iterator.c",
|
|
"intl");
|
|
|
|
if (CHECK_HEADER_ADD_INCLUDE("unicode/uspoof.h", "CFLAGS_INTL")) {
|
|
ADD_SOURCES(configure_module_dirname + "/spoofchecker", "\
|
|
spoofchecker_class.c \
|
|
spoofchecker_create.c \
|
|
spoofchecker_main.c",
|
|
"intl");
|
|
}
|
|
|
|
ADD_SOURCES(configure_module_dirname + "/transliterator", "\
|
|
transliterator_class.c \
|
|
transliterator_methods.c",
|
|
"intl");
|
|
|
|
ADD_SOURCES(configure_module_dirname + "/timezone", "\
|
|
timezone_class.cpp \
|
|
timezone_methods.cpp",
|
|
"intl");
|
|
|
|
ADD_SOURCES(configure_module_dirname + "/calendar", "\
|
|
calendar_methods.cpp \
|
|
gregoriancalendar_methods.cpp \
|
|
calendar_class.cpp",
|
|
"intl");
|
|
|
|
ADD_SOURCES(configure_module_dirname + "/breakiterator", "\
|
|
breakiterator_class.cpp \
|
|
breakiterator_methods.cpp \
|
|
breakiterator_iterators.cpp \
|
|
rulebasedbreakiterator_methods.cpp \
|
|
codepointiterator_internal.cpp \
|
|
codepointiterator_methods.cpp ",
|
|
"intl");
|
|
|
|
ADD_FLAG("LIBS_INTL", "icudt.lib icuin.lib icuio.lib");
|
|
|
|
/* Compat for ICU before 58.1.*/
|
|
if (CHECK_LIB("icule.lib", "intl", PHP_INTL)) {
|
|
ADD_FLAG("LIBS_INTL", "icule.lib");
|
|
}
|
|
if (CHECK_LIB("iculx.lib", "intl", PHP_INTL)) {
|
|
ADD_FLAG("LIBS_INTL", "iculx.lib");
|
|
}
|
|
|
|
ADD_FLAG("CFLAGS_INTL", "/std:c++17 /EHsc /DUNISTR_FROM_CHAR_EXPLICIT=explicit /DUNISTR_FROM_STRING_EXPLICIT=explicit /DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1 /DU_HIDE_OBSOLETE_UTF_OLD_H=1");
|
|
} else {
|
|
WARNING("intl not enabled; libraries and/or headers not found");
|
|
}
|
|
}
|