Ticket #157: own_inline.patch

File own_inline.patch, 2.8 KB (added by slavazanko, 11 years ago)

Some checks for GNU-extensions in compiler for support inline'ing

  • acinclude.m4

    diff --git a/acinclude.m4 b/acinclude.m4
    index f4c0e3b..a6d6580 100644
    a b if test "$mc_cv_g_module_supported" = yes; then 
    568568              [Define if gmodule functionality is supported]) 
    569569fi 
    570570]) 
     571 
     572dnl 
     573dnl  Check for __attribute__((always_inline)) 
     574dnl 
     575AC_DEFUN([MC_ATTRIBUTE_ALWAYS_INLINE_SUPPORTED], [ 
     576   AC_CACHE_CHECK([if __attribute__ ((always_inline)) supported ], mc_cv_attr_always_inline_supp, [ 
     577           ac_save_CFLAGS="$CFLAGS" 
     578           CFLAGS="$CFLAGS -Werror -fgnu89-inline" 
     579           AC_TRY_RUN([ 
     580#define _ATTRIBUTE_ALWAYS_INLINE_       __attribute__((always_inline)) 
     581 
     582extern inline int _ATTRIBUTE_ALWAYS_INLINE_ test_alws_inln(void); 
     583 
     584inline int _ATTRIBUTE_ALWAYS_INLINE_ test_alws_inln(void) { 
     585 
     586int i, S = 65535; 
     587   for (i = 0; i < S; i++) { 
     588         i = ~(S^i); 
     589    } 
     590 return (i-S); 
     591} 
     592 
     593 
     594int main(void) { 
     595 
     596   test_alws_inln(); 
     597 
     598 return 0; 
     599} 
     600            ], 
     601                [mc_cv_attr_always_inline_supp=yes], 
     602                [mc_cv_attr_always_inline_supp=no] 
     603            ) 
     604             CFLAGS="$ac_save_CFLAGS" 
     605  ]) 
     606 
     607if test "$mc_cv_attr_always_inline_supp" = yes; then 
     608    AC_DEFINE([_ATTRIBUTE_ALWAYS_INLINE_], [__attribute__((always_inline))], 
     609               [Define if __attribute__((always_inline)) supported]) 
     610else 
     611    AC_DEFINE([_ATTRIBUTE_ALWAYS_INLINE_], [], [unsupported]) 
     612fi 
     613]) 
     614 
     615 
     616dnl 
     617dnl  Check for __attribute__((gnu_inline)) 
     618dnl 
     619AC_DEFUN([MC_GNU_INLINE_SUPPORTED], [ 
     620   AC_CACHE_CHECK([if (inline) supported ], mc_cv_inline_supp, [ 
     621           ac_save_CFLAGS="$CFLAGS" 
     622           CFLAGS="$CFLAGS -Werror" 
     623           AC_TRY_RUN([ 
     624 
     625extern inline int test_inln(void); 
     626 
     627inline int test_inln(void) { 
     628 
     629int i, S = 65535; 
     630   for (i = 0; i < S; i++) { 
     631         i = ~(S^i); 
     632    } 
     633 return (i-S); 
     634} 
     635 
     636 
     637int main(void) { 
     638 
     639   test_inln(); 
     640 
     641 return 0; 
     642} 
     643            ], 
     644                [mc_cv_inline_supp=yes], 
     645                [mc_cv_inline_supp=no] 
     646            ) 
     647             CFLAGS="$ac_save_CFLAGS" 
     648  ]) 
     649 
     650if test "$mc_cv_inline_supp" = yes; then 
     651    AC_DEFINE([_GNU_INLINE_], [ inline ], [Define if inline supported]) 
     652else 
     653   AC_CACHE_CHECK([if (inline) with -fgnu89-inline supported ], mc_cv_89inline_supp, [ 
     654           ac_save_CFLAGS="$CFLAGS -fgnu89-inline" 
     655           CFLAGS="$CFLAGS -Werror -fgnu89-inline" 
     656           AC_TRY_RUN([ 
     657 
     658extern inline int test_inln(void); 
     659 
     660inline int test_inln(void) { 
     661 
     662int i, S = 65535; 
     663   for (i = 0; i < S; i++) { 
     664         i = ~(S^i); 
     665    } 
     666 return (i-S); 
     667} 
     668 
     669 
     670int main(void) { 
     671 
     672   test_inln(); 
     673 
     674 return 0; 
     675} 
     676            ], 
     677                [mc_cv_89inline_supp=yes], 
     678                [mc_cv_89inline_supp=no] 
     679            ) 
     680             CFLAGS="$ac_save_CFLAGS" 
     681  ]) 
     682 
     683    if test "$mc_cv_89inline_supp" = yes; then 
     684    AC_DEFINE([_GNU_INLINE_], [ inline ], [Define if inline supported]) 
     685    else 
     686    AC_DEFINE([_GNU_INLINE_], [ ], [Define if inline unsupported]) 
     687    fi 
     688fi 
     689]) 
     690