You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.1 KiB
73 lines
2.1 KiB
3 months ago
|
From 79df2b9dcbe0388667c832b2c702ca3158330ed7 Mon Sep 17 00:00:00 2001
|
||
|
From: Michael Orlitzky <michael@orlitzky.com>
|
||
|
Date: Mon, 4 Mar 2024 11:48:01 -0500
|
||
|
Subject: [PATCH] ext/iconv/config.m4: add missing stdio.h include.
|
||
|
|
||
|
The next generation of C compilers is going to enforce the C standard
|
||
|
more strictly:
|
||
|
|
||
|
https://wiki.gentoo.org/wiki/Modern_C_porting
|
||
|
|
||
|
One warning that will eventually become an error is
|
||
|
-Wimplicit-function-declaration. This is relatively easy to catch in
|
||
|
most code (it will fail to compile), but inside of autoconf tests it
|
||
|
can go unnoticed because many feature-test compilations fail by
|
||
|
design. For example,
|
||
|
|
||
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <iconv.h>]],
|
||
|
[[iconv_ccs_init(NULL, NULL);]])]...
|
||
|
|
||
|
is designed to fail if iconv_ccs_init() is not in iconv.h. On the
|
||
|
other hand,
|
||
|
|
||
|
AC_RUN_IFELSE([AC_LANG_SOURCE([[
|
||
|
#include <iconv.h>
|
||
|
int main() {
|
||
|
printf("%d", _libiconv_version);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
should pass if _libiconv_version is defined. If the user has
|
||
|
-Werror=implicit-function-declaration in his CFLAGS, however,
|
||
|
it will not:
|
||
|
|
||
|
$ export CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
|
||
|
$ ./configure
|
||
|
...
|
||
|
checking if using GNU libiconv... no
|
||
|
|
||
|
This is because the stdio.h header that defines printf() is missing:
|
||
|
|
||
|
conftest.c:240:3: error: implicit declaration of function 'printf'
|
||
|
[-Werror=implicit-function-declaration]
|
||
|
240 | printf("%d", _libiconv_version);
|
||
|
| ^~~~~~
|
||
|
conftest.c:239:1: note: include '<stdio.h>' or provide a declaration
|
||
|
of 'printf'
|
||
|
|
||
|
This commit adds the include, correcting the test with any compiler
|
||
|
that balks at implicit function definitions.
|
||
|
|
||
|
(Backport to php-8.1.27)
|
||
|
|
||
|
Closes GH-10751
|
||
|
---
|
||
|
ext/iconv/config.m4 | 1 +
|
||
|
1 file changed, 1 insertion(+)
|
||
|
|
||
|
diff --git a/ext/iconv/config.m4 b/ext/iconv/config.m4
|
||
|
index ac57c81e..b8044bf2 100644
|
||
|
--- a/ext/iconv/config.m4
|
||
|
+++ b/ext/iconv/config.m4
|
||
|
@@ -30,6 +30,7 @@ if test "$PHP_ICONV" != "no"; then
|
||
|
AC_MSG_CHECKING([if using GNU libiconv])
|
||
|
AC_RUN_IFELSE([AC_LANG_SOURCE([[
|
||
|
#include <iconv.h>
|
||
|
+#include <stdio.h>
|
||
|
int main() {
|
||
|
printf("%d", _libiconv_version);
|
||
|
return 0;
|
||
|
--
|
||
|
2.43.0
|
||
|
|