curl-library
[PATCH] configure: adjust tests to avoid -Werror breakage
Date: Tue, 4 Nov 2014 01:27:23 +0100
These series allow ./configure to run when CFLAGS contains -Werror.
Search for AC_LANG_PROGRAM in *.m4, configure.ac and void-cast all
unused variables. Furthermore, a sin6_scope_id variable is cast void and
two main functions gained an explicit int return value.
While gethostname and inet_ntop in curl-functions.m4 got their
parameters and const-correctness fixed, it was not trivially possible to
fix AC_LANG_FUNC_LINK_TRY which fails with "conflicting types for
built-in function 'strdup'" (for example). This patch does not fix that
remaining error, see also the autoconf manual:
"It is considered to be severely broken, and in the future will be
removed in favor of actual function calls (with properly typed
arguments)."
While at it, update copyright years.
Signed-off-by: Peter Wu <peter_at_lekensteyn.nl>
--- Hi, This patch was created because configure was bailing out due to a linking error. (due to a missing 'int' return value for main IIRC). I actually compared './configure' against: ./configure CFLAGS='-fsanitize=address -fsanitize=undefined -Wall -Wno-cpp -Werror -Wno-unused-value' LDFLAGS='-fsanitize=address -fsanitize=undefined' Besides the messages above, I also had the -static test failing, possibly due to the sanitize options. Tested with GCC 4.9.1. Remaining failing cases due to AC_LANG_FUNC_LINK_TRY being bad: - strcasecmp - gethostname - strcasecmp (checked twice, once in configure, once in curl-functions.m4) - strdup - strerror_r - strncasecmp - strstr - strtok_r - strtoll - fork Kind regards, Peter --- acinclude.m4 | 34 ++++++++++++++++++++++++++++++++-- configure.ac | 6 ++++-- m4/curl-compilers.m4 | 7 ++++++- m4/curl-functions.m4 | 8 ++++---- m4/curl-reentrant.m4 | 6 +++++- 5 files changed, 51 insertions(+), 10 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index 453358d..001fefb 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -5,7 +5,7 @@ # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # -# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel_at_haxx.se>, et al. +# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel_at_haxx.se>, et al. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. The terms @@ -183,6 +183,7 @@ AC_DEFUN([CURL_CHECK_HEADER_WINDOWS], [ HAVE_WINDOWS_H shall not be defined. #else int dummy=2*WINVER; + (void)dummy; #endif ]]) ],[ @@ -218,6 +219,7 @@ AC_DEFUN([CURL_CHECK_NATIVE_WINDOWS], [ #if defined(__MINGW32__) || defined(__MINGW32CE__) || \ (defined(_MSC_VER) && (defined(_WIN32) || defined(_WIN64))) int dummy=1; + (void)dummy; #else Not a native Windows build target. #endif @@ -253,6 +255,7 @@ AC_DEFUN([CURL_CHECK_HEADER_WINSOCK], [ HAVE_WINSOCK_H shall not be defined. #else int dummy=WSACleanup(); + (void)dummy; #endif ]]) ],[ @@ -290,6 +293,7 @@ AC_DEFUN([CURL_CHECK_HEADER_WINSOCK2], [ HAVE_WINSOCK2_H shall not be defined. #else int dummy=2*IPPROTO_ESP; + (void)dummy; #endif ]]) ],[ @@ -328,6 +332,7 @@ AC_DEFUN([CURL_CHECK_HEADER_WS2TCPIP], [ HAVE_WS2TCPIP_H shall not be defined. #else int dummy=2*IP_PKTINFO; + (void)dummy; #endif ]]) ],[ @@ -368,6 +373,7 @@ AC_DEFUN([CURL_CHECK_HEADER_WINLDAP], [ #else LDAP *ldp = ldap_init("dummy", LDAP_PORT); ULONG res = ldap_unbind(ldp); + (void)res; #endif ]]) ],[ @@ -538,6 +544,7 @@ AC_DEFUN([CURL_CHECK_HEADER_LDAP], [ ]],[[ LDAP *ldp = ldap_init("dummy", LDAP_PORT); int res = ldap_unbind(ldp); + (void)res; ]]) ],[ ac_cv_header_ldap_h="yes" @@ -586,6 +593,7 @@ AC_DEFUN([CURL_CHECK_HEADER_LDAP_SSL], [ #include <ldap_ssl.h> ]],[[ LDAP *ldp = ldapssl_init("dummy", LDAPS_PORT, 1); + (void)ldp; ]]) ],[ ac_cv_header_ldap_ssl_h="yes" @@ -638,6 +646,7 @@ AC_DEFUN([CURL_CHECK_HEADER_LDAPSSL], [ ]],[[ char *cert_label = NULL; LDAP *ldp = ldap_ssl_init("dummy", LDAPS_PORT, cert_label); + (void)ldp; ]]) ],[ ac_cv_header_ldapssl_h="yes" @@ -719,6 +728,7 @@ AC_DEFUN([CURL_CHECK_LIBS_WINLDAP], [ LDAP *ldp = ldap_init("dummy", LDAP_PORT); ULONG res = ldap_unbind(ldp); ber_free(bep, 1); + (void)res; ]]) ],[ curl_cv_ldap_LIBS="$x_nlibs" @@ -827,6 +837,7 @@ AC_DEFUN([CURL_CHECK_LIBS_LDAP], [ LDAP *ldp = ldap_init("dummy", LDAP_PORT); int res = ldap_unbind(ldp); ber_free(bep, 1); + (void)res; ]]) ],[ curl_cv_ldap_LIBS="$x_nlibs" @@ -1090,6 +1101,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETNAMEINFO], [ $gni_arg46 servlen=0; $gni_arg7 flags=0; int res = getnameinfo(0, salen, 0, hostlen, 0, servlen, flags); + (void)res; ]]) ],[ curl_cv_func_getnameinfo_args="$gni_arg1,$gni_arg2,$gni_arg46,$gni_arg7" @@ -1281,6 +1293,7 @@ AC_DEFUN([CURL_CHECK_NI_WITHSCOPEID], [ #include <netdb.h> ]],[[ unsigned int dummy= NI_NUMERICHOST | NI_NUMERICSERV | NI_WITHSCOPEID; + (void)dummy; ]]) ],[ ac_cv_working_ni_withscopeid="yes" @@ -1391,6 +1404,7 @@ AC_DEFUN([CURL_CHECK_FUNC_RECV], [ $recv_arg3 len=0; $recv_arg4 flags=0; $recv_retv res = recv(s, buf, len, flags); + (void)res; ]]) ],[ curl_cv_func_recv_args="$recv_arg1,$recv_arg2,$recv_arg3,$recv_arg4,$recv_retv" @@ -1524,6 +1538,7 @@ AC_DEFUN([CURL_CHECK_FUNC_SEND], [ $send_arg3 len=0; $send_arg4 flags=0; $send_retv res = send(s, 0, len, flags); + (void)res; ]]) ],[ curl_cv_func_send_args="$send_arg1,$send_arg2,$send_arg3,$send_arg4,$send_retv" @@ -1629,6 +1644,7 @@ AC_DEFUN([CURL_CHECK_MSG_NOSIGNAL], [ #endif ]],[[ int flag=MSG_NOSIGNAL; + (void)flag; ]]) ],[ ac_cv_msg_nosignal="yes" @@ -1691,6 +1707,7 @@ AC_DEFUN([CURL_CHECK_STRUCT_TIMEVAL], [ struct timeval ts; ts.tv_sec = 0; ts.tv_usec = 0; + (void)ts; ]]) ],[ ac_cv_struct_timeval="yes" @@ -1733,6 +1750,7 @@ AC_DEFUN([TYPE_SIG_ATOMIC_T], [ #endif ]],[[ static volatile sig_atomic_t dummy = 0; + (void)dummy; ]]) ],[ AC_MSG_RESULT([no]) @@ -1795,6 +1813,7 @@ AC_DEFUN([TYPE_IN_ADDR_T], [ #endif ]],[[ $t data = inet_addr ("1.2.3.4"); + (void)data; ]]) ],[ curl_cv_in_addr_t_equiv="$t" @@ -2137,6 +2156,7 @@ AC_DEFUN([CURL_CONFIGURE_CURL_SOCKLEN_T], [ typedef $t curl_socklen_t; ]],[[ curl_socklen_t dummy; + (void)dummy; ]]) ],[ curl_typeof_curl_socklen_t="$t" @@ -2183,6 +2203,7 @@ AC_DEFUN([CURL_CONFIGURE_CURL_SOCKLEN_T], [ typedef char dummy_arr[sizeof(curl_socklen_t) == $tst_size ? 1 : -1]; ]],[[ curl_socklen_t dummy; + (void)dummy; ]]) ],[ curl_sizeof_curl_socklen_t="$tst_size" @@ -2382,6 +2403,7 @@ AC_DEFUN([CURL_CHECK_FUNC_SELECT], [ $sel_arg234 wfds=0; $sel_arg234 efds=0; $sel_retv res = select(nfds, rfds, wfds, efds, 0); + (void)res; ]]) ],[ curl_cv_func_select_args="$sel_arg1,$sel_arg234,$sel_arg5,$sel_retv" @@ -2488,7 +2510,7 @@ AC_DEFUN([CURL_VERIFY_RUNTIMELIBS], [ dnl point also is available run-time! AC_MSG_CHECKING([run-time libs availability]) AC_TRY_RUN([ -main() +int main(void) { return 0; } @@ -2523,6 +2545,8 @@ AC_DEFUN([CURL_CHECK_VARIADIC_MACROS], [ ]],[[ int res3 = c99_vmacro3(1, 2, 3); int res2 = c99_vmacro2(1, 2); + (void)res3; + (void)res2; ]]) ],[ curl_cv_variadic_macros_c99="yes" @@ -2551,6 +2575,8 @@ AC_DEFUN([CURL_CHECK_VARIADIC_MACROS], [ ]],[[ int res3 = gcc_vmacro3(1, 2, 3); int res2 = gcc_vmacro2(1, 2); + (void)res3; + (void)res2; ]]) ],[ curl_cv_variadic_macros_gcc="yes" @@ -2714,6 +2740,8 @@ AC_DEFUN([DO_CURL_OFF_T_CHECK], [ ]],[[ $tmp_source curl_off_t dummy; + (void)dummy; + (void)f; ]]) ],[ if test -z "$tmp_fmt"; then @@ -2996,6 +3024,7 @@ AC_DEFUN([CURL_CHECK_WIN32_LARGEFILE], [ (defined(__MINGW32__) || \ (defined(_MSC_VER) && (defined(_WIN32) || defined(_WIN64)))) int dummy=1; + (void)dummy; #else WIN32 large file API not supported. #endif @@ -3010,6 +3039,7 @@ AC_DEFUN([CURL_CHECK_WIN32_LARGEFILE], [ ]],[[ #if defined(_WIN32_WCE) || defined(__MINGW32__) || defined(_MSC_VER) int dummy=1; + (void)dummy; #else WIN32 small file API not supported. #endif diff --git a/configure.ac b/configure.ac index 137662e..e3ddef0 100644 --- a/configure.ac +++ b/configure.ac @@ -1066,7 +1066,7 @@ AC_HELP_STRING([--disable-ipv6],[Disable ipv6 support]), #include <sys/types.h> #include <sys/socket.h> #include <stdlib.h> /* for exit() */ -main() +int main(void) { if (socket(AF_INET6, SOCK_STREAM, 0) < 0) exit(1); @@ -1092,7 +1092,7 @@ if test "$ipv6" = yes; then AC_TRY_COMPILE([ #include <sys/types.h> #include <netinet/in.h>] , - struct sockaddr_in6 s; s.sin6_scope_id = 0; , have_sin6_scope_id=yes) + struct sockaddr_in6 s; s.sin6_scope_id = 0; (void)s; , have_sin6_scope_id=yes) if test "$have_sin6_scope_id" = yes; then AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID, 1, [Define to 1 if struct sockaddr_in6 has the sin6_scope_id member]) @@ -1584,6 +1584,7 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then ]],[[ #if defined(YASSL_VERSION) && defined(OPENSSL_VERSION_NUMBER) int dummy = SSL_ERROR_NONE; + (void)dummy; #else Not the yaSSL OpenSSL compatibility header. #endif @@ -2902,6 +2903,7 @@ if test "xyes" = "x$longlong"; then AC_LANG_PROGRAM([[ ]],[[ long long val = 1000LL; + (void)val; ]]) ],[ AC_MSG_RESULT([yes]) diff --git a/m4/curl-compilers.m4 b/m4/curl-compilers.m4 index f1a634b..2e56201 100644 --- a/m4/curl-compilers.m4 +++ b/m4/curl-compilers.m4 @@ -5,7 +5,7 @@ # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # -# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel_at_haxx.se>, et al. +# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel_at_haxx.se>, et al. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. The terms @@ -1277,6 +1277,7 @@ AC_DEFUN([CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE], [ typedef char bad_t[sizeof(char) == sizeof(int) ? -1 : -1 ]; ]],[[ bad_t dummy; + (void)dummy; ]]) ],[ AC_MSG_RESULT([no]) @@ -1311,6 +1312,8 @@ AC_DEFUN([CURL_CHECK_COMPILER_STRUCT_MEMBER_SIZE], [ ]],[[ good_t1 dummy1; good_t2 dummy2; + (void)dummy1; + (void)dummy2; ]]) ],[ tst_compiler_check_one_works="yes" @@ -1333,6 +1336,8 @@ AC_DEFUN([CURL_CHECK_COMPILER_STRUCT_MEMBER_SIZE], [ ]],[[ bad_t1 dummy1; bad_t2 dummy2; + (void)dummy1; + (void)dummy2; ]]) ],[ tst_compiler_check_two_works="no" diff --git a/m4/curl-functions.m4 b/m4/curl-functions.m4 index 0d65421..a7c8c85 100644 --- a/m4/curl-functions.m4 +++ b/m4/curl-functions.m4 @@ -5,7 +5,7 @@ # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # -# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel_at_haxx.se>, et al. +# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel_at_haxx.se>, et al. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. The terms @@ -2850,7 +2850,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [ $curl_includes_winsock2 $curl_includes_unistd ]],[[ - if(0 != gethostname(0, 0)) + if(0 != gethostname("x", 1)) return 1; ]]) ],[ @@ -3643,8 +3643,8 @@ AC_DEFUN([CURL_CHECK_FUNC_INET_NTOP], [ char ipv4res[sizeof "255.255.255.255"]; unsigned char ipv6a[26]; unsigned char ipv4a[5]; - char *ipv6ptr = 0; - char *ipv4ptr = 0; + const char *ipv6ptr = 0; + const char *ipv4ptr = 0; /* - */ ipv4res[0] = '\0'; ipv4a[0] = 0xc0; diff --git a/m4/curl-reentrant.m4 b/m4/curl-reentrant.m4 index 842cc40..1f00990 100644 --- a/m4/curl-reentrant.m4 +++ b/m4/curl-reentrant.m4 @@ -5,7 +5,7 @@ # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # -# Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel_at_haxx.se>, et al. +# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel_at_haxx.se>, et al. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. The terms @@ -55,6 +55,7 @@ AC_DEFUN([CURL_CHECK_NEED_REENTRANT_ERRNO], [ ]],[[ #ifdef errno int dummy=1; + (void)dummy; #else force compilation error #endif @@ -69,6 +70,7 @@ AC_DEFUN([CURL_CHECK_NEED_REENTRANT_ERRNO], [ ]],[[ #ifdef errno int dummy=1; + (void)dummy; #else force compilation error #endif @@ -522,6 +524,7 @@ AC_DEFUN([CURL_CONFIGURE_REENTRANT], [ ]],[[ #ifdef _REENTRANT int dummy=1; + (void)dummy; #else force compilation error #endif @@ -582,6 +585,7 @@ AC_DEFUN([CURL_CONFIGURE_THREAD_SAFE], [ ]],[[ #ifdef _THREAD_SAFE int dummy=1; + (void)dummy; #else force compilation error #endif -- 2.1.2 ------------------------------------------------------------------- List admin: http://cool.haxx.se/list/listinfo/curl-library Etiquette: http://curl.haxx.se/mail/etiquette.htmlReceived on 2014-11-04