home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cproto.zip / cproto46 / aclocal.m4 next >
M4 Source File  |  1995-08-23  |  2KB  |  97 lines

  1. dnl $Id: aclocal.m4,v 4.3 1995/08/23 21:29:04 cthuang Exp $
  2. dnl
  3. dnl    Test the supplied version of yacc to see which (if any) of the
  4. dnl    error-reporting enhancements will work.
  5. dnl
  6. dnl    Also, test the preprocessor to see if it will handle non-C files.
  7. dnl    (gcc 2.5.8 doesn't).
  8. dnl
  9. AC_DEFUN([TD_YACC_ERROR],
  10. [
  11. rm -f yacctest.y
  12. cat >yacctest.y <<EOF
  13. %{
  14. #define xstrdup(s) s
  15. #include "system.h"
  16. #include <stdio.h>
  17. #include <ctype.h>
  18. #include "yyerror.c"
  19. static void yaccError(s) char *s; { exit(0); }
  20. int yylex ARGS((void))
  21. { return 1; }
  22. %}
  23. %%
  24. dummy
  25.     : /* empty */
  26.     | error '.'
  27.     ;
  28. %%
  29. EOF
  30. $CPP yacctest.y >yacctest.out 2>/dev/null
  31. if test ! -s yacctest.out
  32. then
  33.     AC_DEFINE(CPP_DOES_ONLY_C_FILES)
  34. fi
  35. $YACC yacctest.y
  36. rm -f yacctest.*
  37. td_incl='#include "y.tab.c"'
  38. for COND in BISON_HAS_YYTNAME YACC_HAS_YYTOKS YACC_HAS_YYTOKS_2 YACC_HAS_YYNAME
  39. do
  40. AC_MSG_CHECKING(for error-reporting with $COND)
  41. AC_CACHE_VAL(ac_cv_$COND,
  42. AC_TRY_LINK([
  43. #define $COND 1
  44. #define YYDEBUG 1
  45. $td_incl],,
  46. eval 'ac_cv_'$COND'=yes',
  47. eval 'ac_cv_'$COND'=no'))
  48. eval 'td_result=$ac_cv_'$COND
  49. AC_MSG_RESULT($td_result)
  50. if test $td_result = yes; then
  51.     AC_DEFINE_UNQUOTED($COND)
  52.     break
  53. fi
  54. done
  55. rm -f y.tab.c
  56. ])dnl
  57. dnl
  58. dnl    Check to ensure that our prototype for 'popen()' doesn't conflict
  59. dnl    with the system's (this is a problem on AIX and CLIX).
  60. dnl
  61. AC_DEFUN([TD_POPEN_TEST],
  62. [AC_MSG_CHECKING(for conflicting prototype for popen)
  63. AC_CACHE_VAL(ac_cv_td_popen,
  64. AC_TRY_LINK([
  65. #include <stdio.h>
  66. #include "system.h"
  67. extern int pclose ARGS((FILE *p));
  68. extern FILE *popen ARGS((const char *c, const char *m));],,
  69. ac_cv_td_popen=no,
  70. ac_cv_td_popen=yes))
  71. AC_MSG_RESULT($ac_cv_td_popen)
  72. if test $ac_cv_td_popen = yes; then
  73.     AC_DEFINE(HAVE_POPEN_PROTOTYPE)
  74. fi
  75. ])dnl
  76. dnl
  77. dnl    This is a more stringent test for size_t than the one distributed with
  78. dnl    autoconf 2.1: some systems (CLIX, Ultrix) define size_t in <stdio.h>
  79. dnl
  80. AC_DEFUN([TD_SIZE_T],
  81. [AC_REQUIRE([AC_HEADER_STDC])dnl
  82. AC_MSG_CHECKING(for size_t in <sys/types.h> or <stdio.h>)
  83. AC_CACHE_VAL(ac_cv_td_size_t,
  84. AC_TRY_LINK([
  85. #include <sys/types.h>
  86. #if STDC_HEADERS
  87. #include <stdlib.h>
  88. #endif
  89. #include <stdio.h>],[size_t f = 0],
  90. ac_cv_td_size_t=yes,
  91. ac_cv_td_size_t=no))
  92. AC_MSG_RESULT($ac_cv_td_size_t)
  93. if test $ac_cv_td_size_t = no; then
  94.     AC_DEFINE(size_t, unsigned)
  95. fi
  96. ])dnl
  97.