mirror of https://github.com/python/cpython
58 lines
2.1 KiB
Plaintext
58 lines
2.1 KiB
Plaintext
# Code swiped wholesale from the GCC project, see
|
|
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12100
|
|
|
|
# This file can go away once autoconf 2.58 is out and being used -
|
|
# it's reported that this is fixed in the autoconf cvs already.
|
|
|
|
# AC_LANG_FUNC_LINK_TRY(C)(FUNCTION)
|
|
# ----------------------------------
|
|
# Don't include <ctype.h> because on OSF/1 3.0 it includes
|
|
# <sys/types.h> which includes <sys/select.h> which contains a
|
|
# prototype for select. Similarly for bzero.
|
|
#
|
|
# A similar problem afflicts HP/UX, but it also hits <sys/time.h>
|
|
#
|
|
# This test used to merely assign f=$1 in main(), but that was
|
|
# optimized away by HP unbundled cc A.05.36 for ia64 under +O3,
|
|
# presumably on the basis that there's no need to do that store if the
|
|
# program is about to exit. Conversely, the AIX linker optimizes an
|
|
# unused external declaration that initializes f=$1. So this test
|
|
# program has both an external initialization of f, and a use of f in
|
|
# main that affects the exit status.
|
|
#
|
|
m4_define([AC_LANG_FUNC_LINK_TRY(C)],
|
|
[AC_LANG_PROGRAM(
|
|
[/* System header to define __stub macros and hopefully few prototypes,
|
|
which can conflict with char $1 (); below.
|
|
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|
|
<limits.h> exists even on freestanding compilers. Under hpux,
|
|
including <limits.h> includes <sys/time.h> and causes problems
|
|
checking for functions defined therein. */
|
|
#if defined (__STDC__) && !defined (_HPUX_SOURCE)
|
|
# include <limits.h>
|
|
#else
|
|
# include <assert.h>
|
|
#endif
|
|
/* Override any gcc2 internal prototype to avoid an error. */
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
/* We use char because int might match the return type of a gcc2
|
|
builtin and then its argument prototype would still apply. */
|
|
char $1 ();
|
|
/* The GNU C library defines this for functions which it implements
|
|
to always fail with ENOSYS. Some functions are actually named
|
|
something starting with __ and the normal name is an alias. */
|
|
#if defined (__stub_$1) || defined (__stub___$1)
|
|
choke me
|
|
#else
|
|
char (*f) () = $1;
|
|
#endif
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
], [return f != $1;])])
|
|
|
|
|