| # 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;])]) | 
 |  | 
 |  |