import-autoconf-fix-for-clang.patch
text/x-diff
Filename: import-autoconf-fix-for-clang.patch
Type: text/x-diff
Part: 0
Patch
Format: unified
| File | + | − |
|---|---|---|
| aclocal.m4 | 0 | 0 |
| config/check_decls.m4 | 0 | 0 |
| configure | 0 | 0 |
diff --git a/aclocal.m4 b/aclocal.m4
index a517e94..bfd34ec 100644
*** a/aclocal.m4
--- b/aclocal.m4
*************** m4_include([config/ax_prog_perl_modules.
*** 4,9 ****
--- 4,10 ----
m4_include([config/ax_pthread.m4])
m4_include([config/c-compiler.m4])
m4_include([config/c-library.m4])
+ m4_include([config/check_decls.m4])
m4_include([config/docbook.m4])
m4_include([config/general.m4])
m4_include([config/libtool.m4])
diff --git a/config/check_decls.m4 b/config/check_decls.m4
index ...0dda18b .
*** a/config/check_decls.m4
--- b/config/check_decls.m4
***************
*** 0 ****
--- 1,116 ----
+ # config/check_decls.m4
+
+ # This file redefines the standard Autoconf macro _AC_CHECK_DECL_BODY,
+ # and adds a supporting function _AC_UNDECLARED_WARNING, to make
+ # AC_CHECK_DECLS behave correctly when checking for built-in library
+ # functions with clang.
+
+ # This is based on commit 82ef7805faffa151e724aa76c245ec590d174580
+ # in the Autoconf git repository. We can drop it if they ever get
+ # around to releasing a new version of Autoconf. In the meantime,
+ # it's distributed under Autoconf's license:
+
+ # This file is part of Autoconf. This program is free
+ # software; you can redistribute it and/or modify it under the
+ # terms of the GNU General Public License as published by the
+ # Free Software Foundation, either version 3 of the License, or
+ # (at your option) any later version.
+ #
+ # This program is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ # GNU General Public License for more details.
+ #
+ # Under Section 7 of GPL version 3, you are granted additional
+ # permissions described in the Autoconf Configure Script Exception,
+ # version 3.0, as published by the Free Software Foundation.
+ #
+ # You should have received a copy of the GNU General Public License
+ # and a copy of the Autoconf Configure Script Exception along with
+ # this program; see the files COPYINGv3 and COPYING.EXCEPTION
+ # respectively. If not, see <http://www.gnu.org/licenses/>.
+
+ # Written by David MacKenzie, with help from
+ # Franc,ois Pinard, Karl Berry, Richard Pixley, Ian Lance Taylor,
+ # Roland McGrath, Noah Friedman, david d zuhn, and many others.
+
+
+ # _AC_UNDECLARED_WARNING
+ # ----------------------
+ # Set ac_[]_AC_LANG_ABBREV[]_decl_warn_flag=yes if the compiler uses a warning,
+ # not a more-customary error, to report some undeclared identifiers. Fail when
+ # an affected compiler warns also on valid input. _AC_PROG_PREPROC_WORKS_IFELSE
+ # solves a related problem.
+ AC_DEFUN([_AC_UNDECLARED_WARNING],
+ [# The Clang compiler raises a warning for an undeclared identifier that matches
+ # a compiler builtin function. All extant Clang versions are affected, as of
+ # Clang 3.6.0. Test a builtin known to every version. This problem affects the
+ # C and Objective C languages, but Clang does report an error under C++ and
+ # Objective C++.
+ #
+ # Passing -fno-builtin to the compiler would suppress this problem. That
+ # strategy would have the advantage of being insensitive to stray warnings, but
+ # it would make tests less realistic.
+ AC_CACHE_CHECK([how $[]_AC_CC[] reports undeclared, standard C functions],
+ [ac_cv_[]_AC_LANG_ABBREV[]_decl_report],
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [(void) strchr;])],
+ [AS_IF([test -s conftest.err], [dnl
+ # For AC_CHECK_DECL to react to warnings, the compiler must be silent on
+ # valid AC_CHECK_DECL input. No library function is consistently available
+ # on freestanding implementations, so test against a dummy declaration.
+ # Include always-available headers on the off chance that they somehow
+ # elicit warnings.
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([dnl
+ #include <float.h>
+ #include <limits.h>
+ #include <stdarg.h>
+ #include <stddef.h>
+ extern void ac_decl (int, char *);],
+ [@%:@ifdef __cplusplus
+ (void) ac_decl ((int) 0, (char *) 0);
+ (void) ac_decl;
+ @%:@else
+ (void) ac_decl;
+ @%:@endif
+ ])],
+ [AS_IF([test -s conftest.err],
+ [AC_MSG_FAILURE([cannot detect from compiler exit status or warnings])],
+ [ac_cv_[]_AC_LANG_ABBREV[]_decl_report=warning])],
+ [AC_MSG_FAILURE([cannot compile a simple declaration test])])],
+ [AC_MSG_FAILURE([compiler does not report undeclared identifiers])])],
+ [ac_cv_[]_AC_LANG_ABBREV[]_decl_report=error])])
+
+ case $ac_cv_[]_AC_LANG_ABBREV[]_decl_report in
+ warning) ac_[]_AC_LANG_ABBREV[]_decl_warn_flag=yes ;;
+ *) ac_[]_AC_LANG_ABBREV[]_decl_warn_flag= ;;
+ esac
+ ])# _AC_UNDECLARED_WARNING
+
+ # _AC_CHECK_DECL_BODY
+ # -------------------
+ # Shell function body for AC_CHECK_DECL.
+ m4_define([_AC_CHECK_DECL_BODY],
+ [ AS_LINENO_PUSH([$[]1])
+ # Initialize each $ac_[]_AC_LANG_ABBREV[]_decl_warn_flag once.
+ AC_DEFUN([_AC_UNDECLARED_WARNING_]_AC_LANG_ABBREV,
+ [_AC_UNDECLARED_WARNING])dnl
+ AC_REQUIRE([_AC_UNDECLARED_WARNING_]_AC_LANG_ABBREV)dnl
+ [as_decl_name=`echo $][2|sed 's/ *(.*//'`]
+ [as_decl_use=`echo $][2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`]
+ AC_CACHE_CHECK([whether $as_decl_name is declared], [$[]3],
+ [ac_save_werror_flag=$ac_[]_AC_LANG_ABBREV[]_werror_flag
+ ac_[]_AC_LANG_ABBREV[]_werror_flag="$ac_[]_AC_LANG_ABBREV[]_decl_warn_flag$ac_[]_AC_LANG_ABBREV[]_werror_flag"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$[]4],
+ [@%:@ifndef $[]as_decl_name
+ @%:@ifdef __cplusplus
+ (void) $[]as_decl_use;
+ @%:@else
+ (void) $[]as_decl_name;
+ @%:@endif
+ @%:@endif
+ ])],
+ [AS_VAR_SET([$[]3], [yes])],
+ [AS_VAR_SET([$[]3], [no])])])
+ ac_[]_AC_LANG_ABBREV[]_werror_flag=$ac_save_werror_flag
+ AS_LINENO_POP
+ ])# _AC_CHECK_DECL_BODY
diff --git a/configure b/configure
index 67b7700..cf4954f 100755
*** a/configure
--- b/configure
*************** fi
*** 1756,1768 ****
ac_fn_c_check_decl ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
! as_decl_name=`echo $2|sed 's/ *(.*//'`
as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
--- 1756,1771 ----
ac_fn_c_check_decl ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
! # Initialize each $ac_[]_AC_LANG_ABBREV[]_decl_warn_flag once.
! as_decl_name=`echo $2|sed 's/ *(.*//'`
as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
+ ac_save_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag="$ac_c_decl_warn_flag$ac_c_werror_flag"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
*************** fi
*** 1791,1796 ****
--- 1794,1800 ----
eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
+ ac_c_werror_flag=$ac_save_werror_flag
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_decl
*************** fi
*** 4990,4995 ****
--- 4994,5087 ----
test -n "$AWK" && break
done
+ # The Clang compiler raises a warning for an undeclared identifier that matches
+ # a compiler builtin function. All extant Clang versions are affected, as of
+ # Clang 3.6.0. Test a builtin known to every version. This problem affects the
+ # C and Objective C languages, but Clang does report an error under C++ and
+ # Objective C++.
+ #
+ # Passing -fno-builtin to the compiler would suppress this problem. That
+ # strategy would have the advantage of being insensitive to stray warnings, but
+ # it would make tests less realistic.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how $CC reports undeclared, standard C functions" >&5
+ $as_echo_n "checking how $CC reports undeclared, standard C functions... " >&6; }
+ if ${ac_cv_c_decl_report+:} false; then :
+ $as_echo_n "(cached) " >&6
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+ main ()
+ {
+ (void) strchr;
+ ;
+ return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+ if test -s conftest.err; then :
+ # For AC_CHECK_DECL to react to warnings, the compiler must be silent on
+ # valid AC_CHECK_DECL input. No library function is consistently available
+ # on freestanding implementations, so test against a dummy declaration.
+ # Include always-available headers on the off chance that they somehow
+ # elicit warnings.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+ #include <float.h>
+ #include <limits.h>
+ #include <stdarg.h>
+ #include <stddef.h>
+ extern void ac_decl (int, char *);
+ int
+ main ()
+ {
+ #ifdef __cplusplus
+ (void) ac_decl ((int) 0, (char *) 0);
+ (void) ac_decl;
+ #else
+ (void) ac_decl;
+ #endif
+
+ ;
+ return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+ if test -s conftest.err; then :
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ as_fn_error $? "cannot detect from compiler exit status or warnings
+ See \`config.log' for more details" "$LINENO" 5; }
+ else
+ ac_cv_c_decl_report=warning
+ fi
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ as_fn_error $? "cannot compile a simple declaration test
+ See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ as_fn_error $? "compiler does not report undeclared identifiers
+ See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ else
+ ac_cv_c_decl_report=error
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_decl_report" >&5
+ $as_echo "$ac_cv_c_decl_report" >&6; }
+
+ case $ac_cv_c_decl_report in
+ warning) ac_c_decl_warn_flag=yes ;;
+ *) ac_c_decl_warn_flag= ;;
+ esac
+
if test "$with_llvm" = yes; then :