@@ -83,6 +83,20 @@ int main(void) {
8383 AS_VAR_IF ( [ php_cv_iconv_errno] [ yes] 
8484 [ AC_MSG_FAILURE ( [ The iconv check failed, 'errno' is missing.] ) ] ) 
8585
86+  dnl  iconv on some platforms (NetBSD pre-10, Solaris) may have a non-standard
87+  dnl  const input parameter; libiconv may imitate this on those platforms.
88+  AC_CACHE_CHECK ( [ if iconv input parameter is const (non-standard)] [ php_cv_iconv_const] 
89+  [ AC_COMPILE_IFELSE ( [ AC_LANG_SOURCE ( [ 
90+ #include <iconv.h> 
91+ 
92+ size_t iconv(iconv_t cd, const char **src, size_t *srcleft, char **dst, size_t *dstleft); 
93+  ]  ) ] 
94+  [ php_cv_iconv_const=const]  
95+  [ php_cv_iconv_const=non-const] ) ]  ) 
96+  dnl  non-const is just used for display, set it back
97+  AS_VAR_IF ( [ php_cv_iconv_const] [ non-const] 
98+  [ php_cv_iconv_const=] ) 
99+ 
86100 AC_CACHE_CHECK ( [ if iconv supports //IGNORE] [ php_cv_iconv_ignore] 
87101 [ AC_RUN_IFELSE ( [ AC_LANG_SOURCE ( [ 
88102#include <iconv.h> 
@@ -120,7 +134,7 @@ int main(void) {
120134 PHP_NEW_EXTENSION([ iconv] 
121135 [ iconv.c] 
122136 [ $ext_shared] 
123-  [ -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1] 
137+  [ -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -DICONV_CONST=$php_cv_iconv_const ] 
124138 PHP_SUBST([ ICONV_SHARED_LIBADD] 
125139 PHP_INSTALL_HEADERS([ ext/iconv] [ php_iconv.h] 
126140fi
0 commit comments