⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c.m4

📁 MSYS在windows下模拟了一个类unix的终端
💻 M4
📖 第 1 页 / 共 3 页
字号:
# option to output variable @code{CC} to make it so.  This macro tries# various options that select ANSI C on some system or another.  It# considers the compiler to be in ANSI C mode if it handles function# prototypes correctly.AC_DEFUN([_AC_PROG_CC_STDC],[AC_MSG_CHECKING([for $CC option to accept ANSI C])AC_CACHE_VAL(ac_cv_prog_cc_stdc,[ac_cv_prog_cc_stdc=noac_save_CC=$CCAC_LANG_CONFTEST([AC_LANG_PROGRAM([[#include <stdarg.h>#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */struct buf { int x; };FILE * (*rcsopen) (struct buf *, struct stat *, int);static char *e (p, i)     char **p;     int i;{  return p[i];}static char *f (char * (*g) (char **, int), char **p, ...){  char *s;  va_list v;  va_start (v,p);  s = g (p, va_arg (v,int));  va_end (v);  return s;}int test (int i, double x);struct s1 {int (*f) (int a);};struct s2 {int (*f) (double a);};int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);int argc;char **argv;]],[[return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];]])])# Don't try gcc -ansi; that turns off useful extensions and# breaks some systems' header files.# AIX			-qlanglvl=ansi# Ultrix and OSF/1	-std1# HP-UX 10.20 and later	-Ae# HP-UX older versions	-Aa -D_HPUX_SOURCE# SVR4			-Xc -D__EXTENSIONS__for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"do  CC="$ac_save_CC $ac_arg"  _AC_COMPILE_IFELSE([],                     [ac_cv_prog_cc_stdc=$ac_argbreak])donerm -f conftest.$ac_ext conftest.$ac_objextCC=$ac_save_CC])case "x$ac_cv_prog_cc_stdc" in  x|xno)    AC_MSG_RESULT([none needed]) ;;  *)    AC_MSG_RESULT([$ac_cv_prog_cc_stdc])    CC="$CC $ac_cv_prog_cc_stdc" ;;esac])# _AC_PROG_CC_STDC# AC_PROG_CC_STDC# ---------------# Has been merged into AC_PROG_CC.AU_DEFUN([AC_PROG_CC_STDC], [])# AC_C_BACKSLASH_A# ----------------AC_DEFUN([AC_C_BACKSLASH_A],[  AC_CACHE_CHECK([whether backslash-a works in strings], ac_cv_c_backslash_a,   [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],     [[#if '\a' == 'a'      syntax error;#endif      char buf['\a' == 'a' ? -1 : 1];      buf[0] = '\a';      return buf[0] != "\a"[0];     ]])],     [ac_cv_c_backslash_a=yes],     [ac_cv_c_backslash_a=no])])  if test $ac_cv_c_backslash_a = yes; then    AC_DEFINE(HAVE_C_BACKSLASH_A, 1,      [Define if backslash-a works in C strings.])  fi])# AC_C_CROSS# ----------# Has been merged into AC_PROG_CC.AU_DEFUN([AC_C_CROSS], [])# AC_C_CHAR_UNSIGNED# ------------------AC_DEFUN([AC_C_CHAR_UNSIGNED],[AH_VERBATIM([__CHAR_UNSIGNED__],[/* Define to 1 if type `char' is unsigned and you are not using gcc.  */#ifndef __CHAR_UNSIGNED__# undef __CHAR_UNSIGNED__#endif])dnlAC_CACHE_CHECK(whether char is unsigned, ac_cv_c_char_unsigned,[AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([AC_INCLUDES_DEFAULT([])],                                             [((char) -1) < 0])],                   ac_cv_c_char_unsigned=no, ac_cv_c_char_unsigned=yes)])if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then  AC_DEFINE(__CHAR_UNSIGNED__)fi])# AC_C_CHAR_UNSIGNED# AC_C_LONG_DOUBLE# ----------------AC_DEFUN([AC_C_LONG_DOUBLE],[AC_CACHE_CHECK(   [for working long double with more range or precision than double],   [ac_cv_c_long_double],   [AC_COMPILE_IFELSE(      [AC_LANG_BOOL_COMPILE_TRY(	 [#include <float.h>	  long double foo = 0.0;],	 [/* Using '|' rather than '||' catches a GCC 2.95.2 x86 bug.  */          (DBL_MAX < LDBL_MAX) | (LDBL_EPSILON < DBL_EPSILON)	  | (DBL_MAX_EXP < LDBL_MAX_EXP) | (DBL_MANT_DIG < LDBL_MANT_DIG)])],      ac_cv_c_long_double=yes,      ac_cv_c_long_double=no)])if test $ac_cv_c_long_double = yes; then  AC_DEFINE(HAVE_LONG_DOUBLE, 1,            [Define to 1 if long double works and has more range or precision than double.])fi])# AC_C_LONG_DOUBLE# AC_C_BIGENDIAN ([ACTION-IF-TRUE], [ACTION-IF-FALSE], [ACTION-IF-UNKNOWN])# -------------------------------------------------------------------------AC_DEFUN([AC_C_BIGENDIAN],[AC_CACHE_CHECK(whether byte ordering is bigendian, ac_cv_c_bigendian,[# See if sys/param.h defines the BYTE_ORDER macro.AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>#include <sys/param.h>],[#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN bogus endian macros#endif])],[# It does; now see whether it defined to BIG_ENDIAN or not.AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>#include <sys/param.h>], [#if BYTE_ORDER != BIG_ENDIAN not big endian#endif])], [ac_cv_c_bigendian=yes], [ac_cv_c_bigendian=no])],[# It does not; compile a test program.AC_RUN_IFELSE([AC_LANG_SOURCE([[intmain (){  /* Are we little or big endian?  From Harbison&Steele.  */  union  {    long l;    char c[sizeof (long)];  } u;  u.l = 1;  exit (u.c[sizeof (long) - 1] == 1);}]])],              [ac_cv_c_bigendian=no],              [ac_cv_c_bigendian=yes],[# try to guess the endianness by grepping values into an object file  ac_cv_c_bigendian=unknown  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; }short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; }]],[[ _ascii (); _ebcdic (); ]])],[if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then  ac_cv_c_bigendian=yesfiif grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then  if test "$ac_cv_c_bigendian" = unknown; then    ac_cv_c_bigendian=no  else    # finding both strings is unlikely to happen, but who knows?    ac_cv_c_bigendian=unknown  fifi])])])])case $ac_cv_c_bigendian in  yes)    m4_default([$1],      [AC_DEFINE([WORDS_BIGENDIAN], 1,        [Define to 1 if your processor stores words with the most significant	 byte first (like Motorola and SPARC, unlike Intel and VAX).])]) ;;  no)    $2 ;;  *)    m4_default([$3],      [AC_MSG_ERROR([unknown endiannesspresetting ac_cv_c_bigendian=no (or yes) will help])]) ;;esac])# AC_C_BIGENDIAN# AC_C_INLINE# -----------# Do nothing if the compiler accepts the inline keyword.# Otherwise define inline to __inline__ or __inline if one of those work,# otherwise define inline to be empty.## HP C version B.11.11.04 doesn't allow a typedef as the return value for an# inline function, only builtin types.#AN_IDENTIFIER([inline], [AC_C_INLINE])AC_DEFUN([AC_C_INLINE],[AC_CACHE_CHECK([for inline], ac_cv_c_inline,[ac_cv_c_inline=nofor ac_kw in inline __inline__ __inline; do  AC_COMPILE_IFELSE([AC_LANG_SOURCE([#ifndef __cplusplustypedef int foo_t;static $ac_kw foo_t static_foo () {return 0; }$ac_kw foo_t foo () {return 0; }#endif])],                    [ac_cv_c_inline=$ac_kw; break])done])case $ac_cv_c_inline in  inline | yes) ;;  no) AC_DEFINE(inline,,                [Define as `__inline' if that's what the C compiler calls it,                 or to nothing if it is not supported.]) ;;  *)  AC_DEFINE_UNQUOTED(inline, $ac_cv_c_inline) ;;esac])# AC_C_INLINE# AC_C_CONST# ----------AN_IDENTIFIER([const],  [AC_C_CONST])AC_DEFUN([AC_C_CONST],[AC_CACHE_CHECK([for an ANSI C-conforming const], ac_cv_c_const,[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[[/* FIXME: Include the comments suggested by Paul. */#ifndef __cplusplus  /* Ultrix mips cc rejects this.  */  typedef int charset[2];  const charset x;  /* SunOS 4.1.1 cc rejects this.  */  char const *const *ccp;  char **p;  /* NEC SVR4.0.2 mips cc rejects this.  */  struct point {int x, y;};  static struct point const zero = {0,0};  /* AIX XL C 1.02.0.0 rejects this.     It does not let you subtract one const X* pointer from another in     an arm of an if-expression whose if-part is not a constant     expression */  const char *g = "string";  ccp = &g + (g ? g-g : 0);  /* HPUX 7.0 cc rejects these. */  ++ccp;  p = (char**) ccp;  ccp = (char const *const *) p;  { /* SCO 3.2v4 cc rejects this.  */    char *t;    char const *s = 0 ? (char *) 0 : (char const *) 0;    *t++ = 0;  }  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */    int x[] = {25, 17};    const int *foo = &x[0];    ++foo;  }  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */    typedef const int *iptr;    iptr p = 0;    ++p;  }  { /* AIX XL C 1.02.0.0 rejects this saying       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */    struct s { int j; const int *ap[3]; };    struct s *b; b->j = 5;  }  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */    const int foo = 10;  }#endif]])],                   [ac_cv_c_const=yes],                   [ac_cv_c_const=no])])if test $ac_cv_c_const = no; then  AC_DEFINE(const,,            [Define to empty if `const' does not conform to ANSI C.])fi])# AC_C_CONST# AC_C_VOLATILE# -------------# Note that, unlike const, #defining volatile to be the empty string can# actually turn a correct program into an incorrect one, since removing# uses of volatile actually grants the compiler permission to perform# optimizations that could break the user's code.  So, do not #define# volatile away unless it is really necessary to allow the user's code# to compile cleanly.  Benign compiler failures should be tolerated.AN_IDENTIFIER([volatile], [AC_C_VOLATILE])AC_DEFUN([AC_C_VOLATILE],[AC_CACHE_CHECK([for working volatile], ac_cv_c_volatile,[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [volatile int x;int * volatile y;])],                   [ac_cv_c_volatile=yes],                   [ac_cv_c_volatile=no])])if test $ac_cv_c_volatile = no; then  AC_DEFINE(volatile,,            [Define to empty if the keyword `volatile' does not work.             Warning: valid code using `volatile' can become incorrect             without.  Disable with care.])fi])# AC_C_VOLATILE# AC_C_STRINGIZE# --------------# Checks if `#' can be used to glue strings together at the CPP level.# Defines HAVE_STRINGIZE if positive.AC_DEFUN([AC_C_STRINGIZE],[AC_CACHE_CHECK([for preprocessor stringizing operator],                [ac_cv_c_stringize],[AC_EGREP_CPP([@%:@teststring],              [@%:@define x(y) #ychar *s = x(teststring);],              [ac_cv_c_stringize=no],              [ac_cv_c_stringize=yes])])if test $ac_cv_c_stringize = yes; then  AC_DEFINE(HAVE_STRINGIZE, 1,            [Define to 1 if cpp supports the ANSI @%:@ stringizing operator.])fi])# AC_C_STRINGIZE# AC_C_PROTOTYPES# ---------------# Check if the C compiler supports prototypes, included if it needs# options.AC_DEFUN([AC_C_PROTOTYPES],[AC_REQUIRE([AC_PROG_CC])dnlAC_MSG_CHECKING([for function prototypes])if test "$ac_cv_prog_cc_stdc" != no; then  AC_MSG_RESULT([yes])  AC_DEFINE(PROTOTYPES, 1,            [Define to 1 if the C compiler supports function prototypes.])  AC_DEFINE(__PROTOTYPES, 1,            [Define like PROTOTYPES; this can be used by system headers.])else  AC_MSG_RESULT([no])fi])# AC_C_PROTOTYPES

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -