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