mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			134 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
dnl CACHED_TRY_COMPILE(<description>,<cachevar>,<include>,<program>,<ifyes>,<ifno>)
 | 
						|
AC_DEFUN([CACHED_TRY_COMPILE],[
 | 
						|
 AC_MSG_CHECKING($1)
 | 
						|
 AC_CACHE_VAL($2,[
 | 
						|
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[$3]], [[$4]])],[$2=yes],[$2=no])
 | 
						|
 ])
 | 
						|
 if test "x$$2" = xyes; then
 | 
						|
  true
 | 
						|
  $5
 | 
						|
 else
 | 
						|
  true
 | 
						|
  $6
 | 
						|
 fi
 | 
						|
])
 | 
						|
 | 
						|
dnl GCC_ATTRIBUTE(<short-label>,<cachevar>,<func-params>,<attribute>,<HAVE>,<desc>,[<true-cmds>],[<false-cmds>])
 | 
						|
AC_DEFUN([GCC_ATTRIBUTE],[
 | 
						|
  CACHED_TRY_COMPILE(__attribute__(($1)),gcc_cv_c_gcc_attribute_$2,,
 | 
						|
   [extern int testfunction($3) __attribute__(($4))],
 | 
						|
   AC_MSG_RESULT(yes)
 | 
						|
   AC_DEFINE(HAVE_GNUC25_$5,,$6)
 | 
						|
   $7,
 | 
						|
   AC_MSG_RESULT(no)
 | 
						|
   $8)
 | 
						|
])
 | 
						|
 | 
						|
 | 
						|
AC_DEFUN([GCC_ATTRIBUTE_SUPPORTED],[
 | 
						|
 GCC_ATTRIBUTE([,,],supported,[int x],[,,],ATTRIB,[Define if function attributes a la GCC 2.5 and higher are available.])
 | 
						|
 AH_BOTTOM([/* GNU C attributes. */
 | 
						|
#ifndef FUNCATTR
 | 
						|
#ifdef HAVE_GNUC25_ATTRIB
 | 
						|
#define FUNCATTR(x) __attribute__(x)
 | 
						|
#else
 | 
						|
#define FUNCATTR(x)
 | 
						|
#endif
 | 
						|
#endif])
 | 
						|
 | 
						|
])
 | 
						|
AC_DEFUN([GCC_ATTRIBUTE_CONST],[
 | 
						|
 AC_REQUIRE([GCC_ATTRIBUTE_SUPPORTED])
 | 
						|
 GCC_ATTRIBUTE(const,const,[int x],const,CONST,[Define if constant functions a la GCC 2.5 and higher are available.])
 | 
						|
 AH_BOTTOM([/* GNU C constant functions, or null. */
 | 
						|
#ifndef ATTRCONST
 | 
						|
#ifdef HAVE_GNUC25_CONST
 | 
						|
#define ATTRCONST const
 | 
						|
#else
 | 
						|
#define ATTRCONST
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
#ifndef CONSTANT
 | 
						|
#define CONSTANT FUNCATTR((ATTRCONST))
 | 
						|
#endif])
 | 
						|
])
 | 
						|
AC_DEFUN([GCC_ATTRIBUTE_NORETURN],[
 | 
						|
 AC_REQUIRE([GCC_ATTRIBUTE_SUPPORTED])
 | 
						|
 GCC_ATTRIBUTE(noreturn,noreturn,[int x],noreturn,NORETURN,[Define if nonreturning functions a la GCC 2.5 and higher are available.])
 | 
						|
 AH_BOTTOM([/* GNU C nonreturning functions, or null. */
 | 
						|
#ifndef ATTRNORETURN
 | 
						|
#ifdef HAVE_GNUC25_NORETURN
 | 
						|
#define ATTRNORETURN noreturn
 | 
						|
#else /* ! HAVE_GNUC25_NORETURN */
 | 
						|
#define ATTRNORETURN
 | 
						|
#endif /* HAVE_GNUC25_NORETURN */
 | 
						|
#endif /* ATTRNORETURN */
 | 
						|
#ifndef NONRETURNING
 | 
						|
#define NONRETURNING FUNCATTR((ATTRNORETURN))
 | 
						|
#endif /* NONRETURNING */])
 | 
						|
])
 | 
						|
AC_DEFUN([GCC_ATTRIBUTE_UNUSED],[
 | 
						|
 AC_REQUIRE([GCC_ATTRIBUTE_SUPPORTED])
 | 
						|
 GCC_ATTRIBUTE(unused,unused,[int x],unused,UNUSED,[Define if unused variables la GCC 2.5 and higher are available.])
 | 
						|
 AH_BOTTOM([/* GNU C unused functions, or null. */
 | 
						|
#ifndef ATTRUNUSED
 | 
						|
#ifdef HAVE_GNUC25_UNUSED
 | 
						|
#define ATTRUNUSED unused
 | 
						|
#else
 | 
						|
#define ATTRUNUSED
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
#ifndef UNUSED
 | 
						|
#define UNUSED FUNCATTR((ATTRUNUSED))
 | 
						|
#endif])
 | 
						|
])
 | 
						|
AC_DEFUN([GCC_ATTRIBUTE_FORMAT],[
 | 
						|
 AC_REQUIRE([GCC_ATTRIBUTE_SUPPORTED])
 | 
						|
 GCC_ATTRIBUTE(format...,format,[char *y, ...],[format(printf,1,2)],PRINTFFORMAT,[Define if printf-format argument lists a la GCC are available.])
 | 
						|
 AH_BOTTOM([/* GNU C printf formats, or null. */
 | 
						|
#ifndef ATTRPRINTF
 | 
						|
#ifdef HAVE_GNUC25_PRINTFFORMAT
 | 
						|
#define ATTRPRINTF(si,tc) format(printf,si,tc)
 | 
						|
#else
 | 
						|
#define ATTRPRINTF(si,tc)
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
#ifndef PRINTFFORMAT
 | 
						|
#define PRINTFFORMAT(si,tc) FUNCATTR((ATTRPRINTF(si,tc)))
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef NONRETURNPRINTFFORMAT
 | 
						|
#define NONRETURNPRINTFFORMAT(si,tc) FUNCATTR((ATTRPRINTF(si,tc),ATTRNORETURN))
 | 
						|
#endif])
 | 
						|
])
 | 
						|
AC_DEFUN([GCC_ATTRIBUTE_ALWAYS_INLINE],[
 | 
						|
 AC_REQUIRE([GCC_ATTRIBUTE_SUPPORTED])
 | 
						|
 GCC_ATTRIBUTE(always_inline,always_inline,[int x],always_inline,ALWAYS_INLINE,[Define if unconditional inlining of functions a la GCC 3.1 and higher are available.])
 | 
						|
 AH_BOTTOM([/* GNU C constant functions, or null. */
 | 
						|
#ifndef ATTRALWAYS_INLINE
 | 
						|
#ifdef HAVE_GNUC25_ALWAYS_INLINE
 | 
						|
#define ATTRALWAYS_INLINE always_inline
 | 
						|
#else
 | 
						|
#define ATTRALWAYS_INLINE
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
#ifndef ALWAYS_INLINE
 | 
						|
#define ALWAYS_INLINE FUNCATTR((ATTRALWAYS_INLINE))
 | 
						|
#endif])
 | 
						|
])
 | 
						|
AC_DEFUN([GCC_ATTRIBUTE_PACKED],[
 | 
						|
 AC_REQUIRE([GCC_ATTRIBUTE_SUPPORTED])
 | 
						|
 GCC_ATTRIBUTE(packed,packed,[int x],packed,PACKED,[Define if packing of struct members a la GCC 2.5 and higher is available.])
 | 
						|
 AH_BOTTOM([/* GNU C constant functions, or null. */
 | 
						|
#ifndef ATTRPACKED
 | 
						|
#ifdef HAVE_GNUC25_PACKED
 | 
						|
#define ATTRPACKED packed
 | 
						|
#else
 | 
						|
#define ATTRPACKED
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
#ifndef PACKED
 | 
						|
#define PACKED FUNCATTR((ATTRPACKED))
 | 
						|
#endif])
 | 
						|
])
 |