diff options
Diffstat (limited to 'm4/efl_attribute.m4')
-rw-r--r-- | m4/efl_attribute.m4 | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/m4/efl_attribute.m4 b/m4/efl_attribute.m4 index cd42e9cda6..4f31d93175 100644 --- a/m4/efl_attribute.m4 +++ b/m4/efl_attribute.m4 @@ -29,4 +29,55 @@ if test "x${have_attribute_vector}" = "xyes" ; then fi ]) +dnl Usage: EFL_ATTRIBUTE_ALWAYS_INLINE +dnl call AC_DEFINE for alway_inline if __attribute__((always_inline)) is available + +AC_DEFUN([EFL_ATTRIBUTE_ALWAYS_INLINE], +[ + +have_attribute_forceinline="no" + +AC_MSG_CHECKING([for __forceinline]) + +AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include <windows.h> +static __forceinline void foo(void) {} + ]], + [[ + ]])], + [ + have_attribute_always_inline="yes" + have_attribute_forceinline="yes" + ], + [have_attribute_always_inline="no"]) + +AC_MSG_RESULT([${have_attribute_always_inline}]) + +if test "x${have_attribute_always_inline}" = "xno" ; then + AC_MSG_CHECKING([for __attribute__ ((__always_inline__))]) + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +static __attribute__((__always_inline__)) inline void foo(void) {} + ]], + [[ + ]])], + [have_attribute_always_inline="yes"], + [have_attribute_always_inline="no"]) + AC_MSG_RESULT([${have_attribute_always_inline}]) +fi + +if test "x${have_attribute_always_inline}" = "xyes" ; then + if test "x${have_attribute_forceinline}" = "xyes" ; then + AC_DEFINE([EFL_ALWAYS_INLINE], [__forceinline], [Macro declaring a function to always be inlined.]) + else + AC_DEFINE([EFL_ALWAYS_INLINE], [__attribute__ ((__always_inline__)) inline], [Macro declaring a function to always be inlined.]) + fi +else + AC_DEFINE([EFL_ALWAYS_INLINE], [static inline], [Macro declaring a function to always be inlined.]) +fi +]) + dnl End of efl_attribute.m4 |