Port configure script to C99

Only apr-configure-c99-6.patch is not yet upstream.

Related to:

  <https://fedoraproject.org/wiki/Changes/PortingToModernC>
  <https://fedoraproject.org/wiki/Toolchain/PortingToModernC>
This commit is contained in:
Florian Weimer 2023-01-16 18:29:07 +01:00
parent 2c6419a831
commit 9dd114d0b9
7 changed files with 455 additions and 1 deletions

112
apr-configure-c99-1.patch Normal file
View File

@ -0,0 +1,112 @@
------------------------------------------------------------------------
r1882980 | jim | 2020-10-29 21:23:11 +0100 (Thu, 29 Oct 2020) | 2 lines
calls to exit() require stdlib.h or else we get -Werror,-Wimplicit-function-declaration
------------------------------------------------------------------------
diff --git a/build/apr_common.m4 b/build/apr_common.m4
index 6f5782e674384dbd..b8c14b977cfc422b 100644
--- a/build/apr_common.m4
+++ b/build/apr_common.m4
@@ -527,6 +527,7 @@ AC_TRY_RUN([
#include <errno.h>
#include <string.h>
#include <stdio.h>
+#include <stdlib.h>
main()
{
char buf[1024];
diff --git a/build/apr_network.m4 b/build/apr_network.m4
index 248898283080317d..d330ba16f38f649f 100644
--- a/build/apr_network.m4
+++ b/build/apr_network.m4
@@ -63,6 +63,9 @@ AC_DEFUN([APR_CHECK_WORKING_GETADDRINFO], [
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
int main(void) {
struct addrinfo hints, *ai;
@@ -151,6 +154,9 @@ AC_DEFUN([APR_CHECK_WORKING_GETNAMEINFO], [
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
int main(void) {
struct sockaddr_in sa;
@@ -194,6 +200,9 @@ AC_DEFUN([APR_CHECK_NEGATIVE_EAI], [
#ifdef HAVE_NETDB_H
#include <netdb.h>
#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
int main(void) {
if (EAI_ADDRFAMILY < 0) {
@@ -403,6 +412,9 @@ AC_DEFUN([APR_CHECK_TCP_NODELAY_INHERITED], [
#ifndef HAVE_SOCKLEN_T
typedef int socklen_t;
#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
int main(void) {
int listen_s, connected_s, client_s;
int listen_port, rc;
@@ -588,6 +600,9 @@ typedef int socklen_t;
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
int main(void) {
int listen_s, connected_s, client_s;
int listen_port, rc;
diff --git a/configure.in b/configure.in
index 6833b32d04de9639..7f6352860dfe41d5 100644
--- a/configure.in
+++ b/configure.in
@@ -2208,6 +2208,7 @@ AC_TRY_RUN([
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
+#include <stdlib.h>
main()
{
struct rlimit limit;
@@ -2244,6 +2245,7 @@ AC_TRY_RUN([
#include <stdlib.h>
#include <fcntl.h>
#include <semaphore.h>
+#include <stdlib.h>
#ifndef SEM_FAILED
#define SEM_FAILED (-1)
#endif
@@ -2307,6 +2309,7 @@ if test "$threads" = "1"; then
AC_TRY_RUN([
#include <sys/types.h>
#include <pthread.h>
+#include <stdlib.h>
int main()
{
pthread_mutex_t mutex;
@@ -2430,7 +2433,9 @@ AC_TRY_RUN([
#endif
#include <fcntl.h>
#include <errno.h>
-
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
int fd;
struct flock proc_mutex_lock_it = {0};
const char *fname = "conftest.fcntl";

26
apr-configure-c99-2.patch Normal file
View File

@ -0,0 +1,26 @@
------------------------------------------------------------------------
r1906349 | jorton | 2023-01-03 09:51:28 +0100 (Tue, 03 Jan 2023) | 8 lines
Merge r1906347 from trunk:
Fix configure for compilers which don't accept implicit
int (no longer part of C since C99).
Submitted by: Florian Weimer <fweimer redhat.com>
PR: 66396
------------------------------------------------------------------------
diff --git a/build/apr_common.m4 b/build/apr_common.m4
index b8c14b977cfc422b..2cb366c39b78380e 100644
--- a/build/apr_common.m4
+++ b/build/apr_common.m4
@@ -528,7 +528,7 @@ AC_TRY_RUN([
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
-main()
+int main(void)
{
char buf[1024];
if (strerror_r(ERANGE, buf, sizeof buf) < 1) {

142
apr-configure-c99-3.patch Normal file
View File

@ -0,0 +1,142 @@
------------------------------------------------------------------------
r1906595 | jorton | 2023-01-11 10:44:46 +0100 (Wed, 11 Jan 2023) | 7 lines
Merge r1906594 from trunk:
Fix further strict C99 compliance issue. (fixes #37)
PR: 66408
Submitted by: Sam James <sam gentoo.org>
------------------------------------------------------------------------
diff --git a/build/apr_network.m4 b/build/apr_network.m4
index d330ba16f38f649f..f70431a800f2dfdd 100644
--- a/build/apr_network.m4
+++ b/build/apr_network.m4
@@ -66,6 +66,12 @@ AC_DEFUN([APR_CHECK_WORKING_GETADDRINFO], [
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
int main(void) {
struct addrinfo hints, *ai;
@@ -397,9 +403,11 @@ AC_DEFUN([APR_CHECK_TCP_NODELAY_INHERITED], [
AC_CACHE_CHECK(if TCP_NODELAY setting is inherited from listening sockets, ac_cv_tcp_nodelay_inherited,[
AC_TRY_RUN( [
#include <stdio.h>
+#include <stdlib.h>
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
+#include <string.h>
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
@@ -749,6 +757,12 @@ AC_TRY_COMPILE([
#ifdef HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
],[
inet_addr("127.0.0.1");
],[
@@ -769,6 +783,10 @@ fi
AC_DEFUN([APR_CHECK_INET_NETWORK], [
AC_CACHE_CHECK(for inet_network, ac_cv_func_inet_network,[
AC_TRY_COMPILE([
+#include <sys/socket.h>
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -942,7 +960,9 @@ AC_DEFUN([APR_CHECK_MCAST], [
AC_CACHE_CHECK([for struct ip_mreq], [apr_cv_struct_ipmreq], [
AC_TRY_COMPILE([
#include <sys/types.h>
+#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
+#endif
], [
struct ip_mreq mip;
mip.imr_interface.s_addr = INADDR_ANY;
diff --git a/configure.in b/configure.in
index 7f6352860dfe41d5..7ab8277a2782dbef 100644
--- a/configure.in
+++ b/configure.in
@@ -1440,8 +1440,6 @@ AC_CHECK_FUNCS(sigaction, [ have_sigaction="1" ], [ have_sigaction="0" ])
AC_DECL_SYS_SIGLIST
AC_CHECK_FUNCS(fork, [ fork="1" ], [ fork="0" ])
-APR_CHECK_INET_ADDR
-APR_CHECK_INET_NETWORK
AC_SUBST(apr_inaddr_none)
AC_CHECK_FUNC(_getch)
AC_CHECK_FUNCS(strerror_r, [ strerror_r="1" ], [ strerror_r="0" ])
@@ -1547,6 +1545,9 @@ APR_FLAG_HEADERS(
sys/un.h \
sys/wait.h)
+APR_CHECK_INET_ADDR
+APR_CHECK_INET_NETWORK
+
# IRIX 6.5 has a problem in <netinet/tcp.h> which prevents it from
# being included by itself. Check for <netinet/tcp.h> manually,
# including another header file first.
@@ -2249,7 +2250,7 @@ AC_TRY_RUN([
#ifndef SEM_FAILED
#define SEM_FAILED (-1)
#endif
-main()
+int main()
{
sem_t *psem;
const char *sem_name = "/apr_autoconf";
@@ -2440,6 +2441,8 @@ int fd;
struct flock proc_mutex_lock_it = {0};
const char *fname = "conftest.fcntl";
+int lockit();
+
int main()
{
int rc, status;;
diff --git a/poll/os2/pollset.c b/poll/os2/pollset.c
index 2ec848105be1e1bf..87b3c1841f7e64f3 100644
--- a/poll/os2/pollset.c
+++ b/poll/os2/pollset.c
@@ -308,7 +308,7 @@ APR_DECLARE(apr_status_t) apr_pollset_wakeup(apr_pollset_t *pollset)
-APR_DECLARE(const char *) apr_poll_method_defname()
+APR_DECLARE(const char *) apr_poll_method_defname(void)
{
return "select";
}
diff --git a/poll/unix/pollset.c b/poll/unix/pollset.c
index 8fa817330f65e515..11b57365257bec54 100644
--- a/poll/unix/pollset.c
+++ b/poll/unix/pollset.c
@@ -188,7 +188,7 @@ APR_DECLARE(const char *) apr_pollset_method_name(apr_pollset_t *pollset)
return pollset->provider->name;
}
-APR_DECLARE(const char *) apr_poll_method_defname()
+APR_DECLARE(const char *) apr_poll_method_defname(void)
{
const apr_pollset_provider_t *provider = NULL;

116
apr-configure-c99-4.patch Normal file
View File

@ -0,0 +1,116 @@
------------------------------------------------------------------------
r1871981 | minfrin | 2019-12-26 02:19:49 +0100 (Thu, 26 Dec 2019) | 3 lines
Backport r1871980.
Use AC_CHECK_SIZEOF, so as to support cross compiling. PR 56053.
------------------------------------------------------------------------
diff --git a/build/apr_common.m4 b/build/apr_common.m4
index 2cb366c39b78380e..7239a19995218ccc 100644
--- a/build/apr_common.m4
+++ b/build/apr_common.m4
@@ -451,43 +451,6 @@ fi
])
-dnl
-dnl APR_CHECK_SIZEOF_EXTENDED(INCLUDES, TYPE [, CROSS_SIZE])
-dnl
-dnl A variant of AC_CHECK_SIZEOF which allows the checking of
-dnl sizes of non-builtin types
-dnl
-AC_DEFUN([APR_CHECK_SIZEOF_EXTENDED],
-[changequote(<<, >>)dnl
-dnl The name to #define.
-define(<<AC_TYPE_NAME>>, translit(sizeof_$2, [a-z *], [A-Z_P]))dnl
-dnl The cache variable name.
-define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_$2, [ *], [_p]))dnl
-changequote([, ])dnl
-AC_MSG_CHECKING(size of $2)
-AC_CACHE_VAL(AC_CV_NAME,
-[AC_TRY_RUN([#include <stdio.h>
-$1
-#ifdef WIN32
-#define binmode "b"
-#else
-#define binmode
-#endif
-main()
-{
- FILE *f=fopen("conftestval", "w" binmode);
- if (!f) exit(1);
- fprintf(f, "%d\n", sizeof($2));
- exit(0);
-}], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, ifelse([$3],,,
-AC_CV_NAME=$3))])dnl
-AC_MSG_RESULT($AC_CV_NAME)
-AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [The size of ]$2)
-undefine([AC_TYPE_NAME])dnl
-undefine([AC_CV_NAME])dnl
-])
-
-
dnl
dnl APR_TRY_COMPILE_NO_WARNING(INCLUDES, FUNCTION-BODY,
dnl [ACTIONS-IF-NO-WARNINGS], [ACTIONS-IF-WARNINGS])
diff --git a/configure.in b/configure.in
index 7ab8277a2782dbef..d858951af97f3a1b 100644
--- a/configure.in
+++ b/configure.in
@@ -1799,7 +1799,7 @@ else
socklen_t_value="int"
fi
-APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], pid_t, 8)
+AC_CHECK_SIZEOF(pid_t)
if test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_short"; then
pid_t_fmt='#define APR_PID_T_FMT "hd"'
@@ -1871,7 +1871,7 @@ APR_CHECK_TYPES_FMT_COMPATIBLE(size_t, unsigned long, lu, [size_t_fmt="lu"], [
APR_CHECK_TYPES_FMT_COMPATIBLE(size_t, unsigned int, u, [size_t_fmt="u"])
])
-APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], ssize_t, 8)
+AC_CHECK_SIZEOF(ssize_t)
dnl the else cases below should no longer occur;
AC_MSG_CHECKING([which format to use for apr_ssize_t])
@@ -1889,7 +1889,7 @@ fi
ssize_t_fmt="#define APR_SSIZE_T_FMT \"$ssize_t_fmt\""
-APR_CHECK_SIZEOF_EXTENDED([#include <stddef.h>], size_t, 8)
+AC_CHECK_SIZEOF(size_t)
# else cases below should no longer occur;
AC_MSG_CHECKING([which format to use for apr_size_t])
@@ -1907,7 +1907,7 @@ fi
size_t_fmt="#define APR_SIZE_T_FMT \"$size_t_fmt\""
-APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], off_t, 8)
+AC_CHECK_SIZEOF(off_t)
if test "${ac_cv_sizeof_off_t}${apr_cv_use_lfs64}" = "4yes"; then
# Enable LFS
@@ -2001,7 +2001,7 @@ case $host in
;;
*)
ino_t_value=ino_t
- APR_CHECK_SIZEOF_EXTENDED(AC_INCLUDES_DEFAULT, ino_t, $ac_cv_sizeof_long)
+ AC_CHECK_SIZEOF(ino_t)
if test $ac_cv_sizeof_ino_t = 4; then
if test $ac_cv_sizeof_long = 4; then
ino_t_value="unsigned long"
@@ -2021,8 +2021,8 @@ else
bigendian=0
fi
-APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>
-#include <sys/uio.h>],struct iovec,0)
+AC_CHECK_SIZEOF(struct iovec,,[AC_INCLUDES_DEFAULT
+#include <sys/uio.h>])
if test "$ac_cv_sizeof_struct_iovec" = "0"; then
have_iovec=0
else

24
apr-configure-c99-5.patch Normal file
View File

@ -0,0 +1,24 @@
------------------------------------------------------------------------
r1882981 | jim | 2020-10-29 21:32:54 +0100 (Thu, 29 Oct 2020) | 5 lines
#ifdef HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
is required for inet_addr
------------------------------------------------------------------------
diff --git a/build/apr_network.m4 b/build/apr_network.m4
index f70431a800f2dfdd..ba7bf9aa2497df82 100644
--- a/build/apr_network.m4
+++ b/build/apr_network.m4
@@ -160,6 +160,9 @@ AC_DEFUN([APR_CHECK_WORKING_GETNAMEINFO], [
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif

19
apr-configure-c99-6.patch Normal file
View File

@ -0,0 +1,19 @@
Avoid an implicit int in the definition of the main function.
Avoids build problems with future C compilers which will not
support them by default.
Submitted upstream: <https://bz.apache.org/bugzilla/show_bug.cgi?id=66396>
diff --git a/configure.in b/configure.in
index d858951af97f3a1b..6346d8026e7a251d 100644
--- a/configure.in
+++ b/configure.in
@@ -2210,7 +2210,7 @@ AC_TRY_RUN([
#include <sys/time.h>
#include <sys/resource.h>
#include <stdlib.h>
-main()
+int main(void)
{
struct rlimit limit;
limit.rlim_cur = 0;

View File

@ -12,7 +12,7 @@
Summary: Apache Portable Runtime library
Name: apr
Version: 1.7.0
Release: 19%{?dist}
Release: 20%{?dist}
# ASL 2.0: everything
# ISC: network_io/apr-1.4.6/network_io/unix/inet_?to?.c
# BSD with advertising: strings/apr_snprintf.c, strings/apr_fnmatch.c,
@ -28,6 +28,12 @@ Patch2: apr-1.2.7-pkgconf.patch
Patch3: apr-1.7.0-deepbind.patch
Patch4: apr-1.7.0-autoconf.patch
Patch5: apr-1.7.0-r1891269+.patch
Patch6: apr-configure-c99-1.patch
Patch7: apr-configure-c99-2.patch
Patch8: apr-configure-c99-3.patch
Patch9: apr-configure-c99-4.patch
Patch10: apr-configure-c99-5.patch
Patch11: apr-configure-c99-6.patch
BuildRequires: gcc, autoconf, libtool, libuuid-devel, python3
BuildRequires: make
@ -55,6 +61,12 @@ C data structures and routines.
%patch3 -p1 -b .deepbind
%patch4 -p1 -b .autoconf-2-71
%patch5 -p1 -b .r1891269+
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%build
# regenerate configure script etc.
@ -144,6 +156,9 @@ popd
%{_datadir}/aclocal/*.m4
%changelog
* Mon Jan 16 2023 Florian Weimer <fweimer@redhat.com> - 1.7.0-20
- Port configure script to C99
* Mon Dec 19 2022 Joe Orton <jorton@redhat.com> - 1.7.0-19
- rebuild