X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=sim%2Fucsim%2Fconfigure.in;h=f40b6138a65804ad9d3aa6ac1de574eee4a818ba;hb=285775ae6953c6f72621d83cd3022d22a2b772a3;hp=fda496264b46d85c666527186d294c36ed9485f1;hpb=fe8fd997112fd080410ef836bcdb7da67f0a190c;p=fw%2Fsdcc diff --git a/sim/ucsim/configure.in b/sim/ucsim/configure.in index fda49626..f40b6138 100644 --- a/sim/ucsim/configure.in +++ b/sim/ucsim/configure.in @@ -95,6 +95,44 @@ AC_DEFINE_UNQUOTED(HEADER_FD, ${s51_cv_fd}) # Checking for functions/libs # =========================================================================== + +AC_DEFUN(AC_CHECK_FUNC_NOCACHE, +[AC_MSG_CHECKING([for $1]) +AC_TRY_LINK( +dnl Don't include because on OSF/1 3.0 it includes +dnl which includes which contains a prototype for +dnl select. Similarly for bzero. +[/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $1(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus +extern "C" +#endif +])dnl +[/* 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 +$1(); +#endif +], eval "ac_cv_func_$1=yes", eval "ac_cv_func_$1=no") +if eval "test \"`echo '$ac_cv_func_'$1`\" = yes"; then + AC_MSG_RESULT(yes) + ifelse([$2], , :, [$2]) +else + AC_MSG_RESULT(no) +ifelse([$3], , , [$3 +])dnl +fi +]) + AC_CHECK_LIB(socket,socket) AC_CHECK_LIB(nsl,xdr_short) AC_CHECK_LIB(panel,panel_above, @@ -115,9 +153,16 @@ AC_SUBST(curses_ok) AC_SUBST(CURSES_LIBS) AC_FUNC_VPRINTF -AC_CHECK_FUNCS(vsnprintf vasprintf) +dnl Do not cache the result of the vasprintf test. +dnl This is because vasprintf is defined in the C++ runtime +dnl for egcs, but not in the C runtime. Thus, caching the result +dnl of this test (which is done with C++) will cause later C +dnl based tests to falsely conclude that vasprintf is available +dnl to C programs. +dnl It's a bloody stupid function anyway. +AC_CHECK_FUNC_NOCACHE(vasprintf) AC_CHECK_FUNCS(strlen strcpy strcat strstr strcmp strerror strtok strdup) -AC_CHECK_FUNCS(strchr memcpy) +AC_CHECK_FUNCS(vsnprintf strchr memcpy) dnl AC_CHECK_FUNCS(getline) dnl AC_CHECK_FUNCS(getdelim) AC_CHECK_FUNCS(fgets)