From 710284cbc4a54cac0a9ec4ea29a7486e0d99a33b Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 28 Mar 2018 18:00:28 +0200 Subject: [PATCH] Fixed bug #76153 Intl compilation fails with icu4c 61.1 Additionally, ICU >= 59.1 requires C++11, so add the flags. Some refactoring is needed to comply with the latest recommended build options, such as automatic icu namespace addition. --- acinclude.m4 | 3 +++ ext/intl/config.m4 | 2 +- ext/intl/config.w32 | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index 0e6fb5de855..3881b2da93d 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -2248,6 +2248,9 @@ AC_DEFUN([PHP_SETUP_ICU],[ ICU_LIBS=`$ICU_CONFIG --ldflags --ldflags-icuio` PHP_EVAL_INCLINE($ICU_INCS) PHP_EVAL_LIBLINE($ICU_LIBS, $1) + + ICU_EXTRA_FLAGS=`$ICU_CONFIG --cxxflags` + ICU_EXTRA_FLAGS="$ICU_EXTRA_FLAGS -DU_USING_ICU_NAMESPACE=1" fi ]) diff --git a/ext/intl/config.m4 b/ext/intl/config.m4 index ca2cd822f48..a496d8d70c3 100644 --- a/ext/intl/config.m4 +++ b/ext/intl/config.m4 @@ -86,7 +86,7 @@ if test "$PHP_INTL" != "no"; then breakiterator/codepointiterator_methods.cpp \ uchar/uchar.c \ idn/idn.c \ - $icu_spoof_src, $ext_shared,,$ICU_INCS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1,cxx) + $icu_spoof_src, $ext_shared,,$ICU_INCS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 $ICU_EXTRA_FLAGS,cxx) PHP_ADD_BUILD_DIR($ext_builddir/collator) PHP_ADD_BUILD_DIR($ext_builddir/converter) PHP_ADD_BUILD_DIR($ext_builddir/common) diff --git a/ext/intl/config.w32 b/ext/intl/config.w32 index 5b37d934bd6..328288be3da 100644 --- a/ext/intl/config.w32 +++ b/ext/intl/config.w32 @@ -130,7 +130,7 @@ if (PHP_INTL != "no") { ADD_FLAG("LIBS_INTL", "iculx.lib"); } - ADD_FLAG("CFLAGS_INTL", "/EHsc"); + ADD_FLAG("CFLAGS_INTL", "/EHsc /D U_USING_ICU_NAMESPACE=1"); AC_DEFINE("HAVE_INTL", 1, "Internationalization support enabled"); } else { WARNING("intl not enabled; libraries and/or headers not found");