php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Return to Bug #77241
Patch Use-pkg-config-to-detect-icu revision 2018-12-05 11:29 UTC by hugh dot mcmaster at outlook dot com
revision 2018-12-05 10:39 UTC by hugh dot mcmaster at outlook dot com

Patch Use-pkg-config-to-detect-icu for *Compile Issues Bug #77241

Patch version 2018-12-05 11:29 UTC

Return to Bug #77241 | Download this patch
Patch Revisions:

Developer: hugh.mcmaster@outlook.com

From 137318ad88801756535bfcc664e14b382fc9a4ac Mon Sep 17 00:00:00 2001
From: Hugh McMaster <hugh.mcmaster@outlook.com>
Date: Wed, 5 Dec 2018 21:30:39 +1100
Subject: [PATCH] ext/intl: Use pkg-config to detect icu

The developers of icu recommend using pkg-config to detect icu,
because icu-config is deprecated.

Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
---
 acinclude.m4       | 58 ----------------------------------------------
 ext/intl/config.m4 | 15 ++++++++++--
 2 files changed, 13 insertions(+), 60 deletions(-)

diff --git a/acinclude.m4 b/acinclude.m4
index 728cb72654..8983615511 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -2113,64 +2113,6 @@ dnl -------------------------------------------------------------------------
 dnl Common setup macros: PHP_SETUP_<what>
 dnl -------------------------------------------------------------------------
 
-dnl
-dnl PHP_SETUP_ICU([shared-add])
-dnl
-dnl Common setup macro for ICU
-dnl
-AC_DEFUN([PHP_SETUP_ICU],[
-  PHP_ARG_WITH(icu-dir,,
-  [  --with-icu-dir=DIR      Specify where ICU libraries and headers can be found], DEFAULT, no)
-
-  if test "$PHP_ICU_DIR" = "no"; then
-    PHP_ICU_DIR=DEFAULT
-  fi
-
-  if test "$PHP_ICU_DIR" = "DEFAULT"; then
-    dnl Try to find icu-config
-    AC_PATH_PROG(ICU_CONFIG, icu-config, no, [$PATH:/usr/local/bin])
-  else
-    ICU_CONFIG="$PHP_ICU_DIR/bin/icu-config"
-  fi
-
-  AC_MSG_CHECKING([for location of ICU headers and libraries])
-
-  dnl Trust icu-config to know better what the install prefix is..
-  icu_install_prefix=`$ICU_CONFIG --prefix 2> /dev/null`
-  if test "$?" != "0" || test -z "$icu_install_prefix"; then
-    AC_MSG_RESULT([not found])
-    AC_MSG_ERROR([Unable to detect ICU prefix or $ICU_CONFIG failed. Please verify ICU install prefix and make sure icu-config works.])
-  else
-    AC_MSG_RESULT([$icu_install_prefix])
-
-    dnl Check ICU version
-    AC_MSG_CHECKING([for ICU 50.1 or greater])
-    icu_version_full=`$ICU_CONFIG --version`
-    ac_IFS=$IFS
-    IFS="."
-    set $icu_version_full
-    IFS=$ac_IFS
-    icu_version=`expr [$]1 \* 1000 + [$]2`
-    AC_MSG_RESULT([found $icu_version_full])
-
-    if test "$icu_version" -lt "50001"; then
-      AC_MSG_ERROR([ICU version 50.1 or later is required])
-    fi
-
-    ICU_VERSION=$icu_version
-    ICU_INCS=`$ICU_CONFIG --cppflags-searchpath`
-    ICU_LIBS=`$ICU_CONFIG --ldflags --ldflags-icuio`
-    PHP_EVAL_INCLINE($ICU_INCS)
-    PHP_EVAL_LIBLINE($ICU_LIBS, $1)
-
-    ICU_CXXFLAGS="$ICU_CXXFLAGS -DUNISTR_FROM_CHAR_EXPLICIT=explicit -DUNISTR_FROM_STRING_EXPLICIT=explicit"
-    ICU_CFLAGS="-DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1"
-    if test "$icu_version" -ge "60000"; then
-      ICU_CFLAGS="$ICU_CFLAGS -DU_HIDE_OBSOLETE_UTF_OLD_H=1"
-    fi
-  fi
-])
-
 dnl
 dnl PHP_SETUP_KERBEROS(shared-add [, action-found [, action-not-found]])
 dnl
diff --git a/ext/intl/config.m4 b/ext/intl/config.m4
index a80391bb58..3a729890aa 100644
--- a/ext/intl/config.m4
+++ b/ext/intl/config.m4
@@ -6,9 +6,20 @@ PHP_ARG_ENABLE(intl, whether to enable internationalization support,
 [  --enable-intl           Enable internationalization support])
 
 if test "$PHP_INTL" != "no"; then
-  PHP_SETUP_ICU(INTL_SHARED_LIBADD)
+  PKG_CHECK_MODULES([ICU], [icu-io >= 50.1])
+
+  PHP_EVAL_INCLINE($ICU_CFLAGS)
+  PHP_EVAL_LIBLINE($ICU_LIBS, INTL_SHARED_LIBADD)
+
+  ICU_CFLAGS="$ICU_CFLAGS -DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1"
+  ICU_CXXFLAGS="$ICU_CXXFLAGS -DUNISTR_FROM_CHAR_EXPLICIT=explicit -DUNISTR_FROM_STRING_EXPLICIT=explicit"
+
+  if test "$PKG_CONFIG icu-io --atleast-version=60"; then
+    ICU_CFLAGS="$ICU_CFLAGS -DU_HIDE_OBSOLETE_UTF_OLD_H=1"
+  fi
+
   PHP_SUBST(INTL_SHARED_LIBADD)
-  INTL_COMMON_FLAGS="$ICU_INCS $ICU_CFLAGS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"
+  INTL_COMMON_FLAGS="$ICU_CFLAGS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"
   PHP_NEW_EXTENSION(intl, php_intl.c \
     intl_error.c \
     intl_convert.c \
-- 
2.20.0.rc2

 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun May 05 05:01:31 2024 UTC