| 1 | # inline.m4 serial 4
 | 
|---|
| 2 | dnl Copyright (C) 2006, 2009-2021 Free Software Foundation, Inc.
 | 
|---|
| 3 | dnl This file is free software; the Free Software Foundation
 | 
|---|
| 4 | dnl gives unlimited permission to copy and/or distribute it,
 | 
|---|
| 5 | dnl with or without modifications, as long as this notice is preserved.
 | 
|---|
| 6 | 
 | 
|---|
| 7 | dnl Test for the 'inline' keyword or equivalent.
 | 
|---|
| 8 | dnl Define 'inline' to a supported equivalent, or to nothing if not supported,
 | 
|---|
| 9 | dnl like AC_C_INLINE does.  Also, define HAVE_INLINE if 'inline' or an
 | 
|---|
| 10 | dnl equivalent is effectively supported, i.e. if the compiler is likely to
 | 
|---|
| 11 | dnl drop unused 'static inline' functions.
 | 
|---|
| 12 | AC_DEFUN([gl_INLINE],
 | 
|---|
| 13 | [
 | 
|---|
| 14 |   AC_REQUIRE([AC_C_INLINE])
 | 
|---|
| 15 |   AC_CACHE_CHECK([whether the compiler generally respects inline],
 | 
|---|
| 16 |     [gl_cv_c_inline_effective],
 | 
|---|
| 17 |     [if test $ac_cv_c_inline = no; then
 | 
|---|
| 18 |        gl_cv_c_inline_effective=no
 | 
|---|
| 19 |      else
 | 
|---|
| 20 |        dnl GCC defines __NO_INLINE__ if not optimizing or if -fno-inline is
 | 
|---|
| 21 |        dnl specified.
 | 
|---|
| 22 |        dnl Use AC_COMPILE_IFELSE here, not AC_EGREP_CPP, because the result
 | 
|---|
| 23 |        dnl depends on optimization flags, which can be in CFLAGS.
 | 
|---|
| 24 |        dnl (AC_EGREP_CPP looks only at the CPPFLAGS.)
 | 
|---|
| 25 |        AC_COMPILE_IFELSE(
 | 
|---|
| 26 |          [AC_LANG_PROGRAM([[]],
 | 
|---|
| 27 |            [[#ifdef __NO_INLINE__
 | 
|---|
| 28 |                #error "inline is not effective"
 | 
|---|
| 29 |              #endif]])],
 | 
|---|
| 30 |          [gl_cv_c_inline_effective=yes],
 | 
|---|
| 31 |          [gl_cv_c_inline_effective=no])
 | 
|---|
| 32 |      fi
 | 
|---|
| 33 |     ])
 | 
|---|
| 34 |   if test $gl_cv_c_inline_effective = yes; then
 | 
|---|
| 35 |     AC_DEFINE([HAVE_INLINE], [1],
 | 
|---|
| 36 |       [Define to 1 if the compiler supports one of the keywords
 | 
|---|
| 37 |        'inline', '__inline__', '__inline' and effectively inlines
 | 
|---|
| 38 |        functions marked as such.])
 | 
|---|
| 39 |   fi
 | 
|---|
| 40 | ])
 | 
|---|