diff --git a/m4/tuklib_integer.m4 b/m4/tuklib_integer.m4 index 7c6653df864d2ddae65e1ee9337a5872e4c427a5_bTQvdHVrbGliX2ludGVnZXIubTQ=..ddb6913fa8fd96d9673f183dbaab4d41b864f1d9_bTQvdHVrbGliX2ludGVnZXIubTQ= 100644 --- a/m4/tuklib_integer.m4 +++ b/m4/tuklib_integer.m4 @@ -7,7 +7,7 @@ # # Checks for tuklib_integer.h: # - Endianness -# - Does operating system provide byte swapping macros +# - Does the compiler or the operating system provide byte swapping macros # - Does the hardware support fast unaligned access to 16-bit # and 32-bit integers # @@ -22,5 +22,4 @@ AC_DEFUN_ONCE([TUKLIB_INTEGER], [ AC_REQUIRE([TUKLIB_COMMON]) AC_REQUIRE([AC_C_BIGENDIAN]) -AC_CHECK_HEADERS([byteswap.h sys/endian.h sys/byteorder.h], [break]) @@ -26,9 +25,25 @@ -# Even if we have byteswap.h, we may lack the specific macros/functions. -if test x$ac_cv_header_byteswap_h = xyes ; then - m4_foreach([FUNC], [bswap_16,bswap_32,bswap_64], [ - AC_MSG_CHECKING([if FUNC is available]) - AC_LINK_IFELSE([AC_LANG_SOURCE([ +AC_MSG_CHECKING([if __builtin_bswap16/32/64 are supported]) +AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], + [[__builtin_bswap16(1); + __builtin_bswap32(1); + __builtin_bswap64(1);]])], +[ + AC_DEFINE([HAVE___BUILTIN_BSWAPXX], [1], + [Define to 1 if the GNU C extensions + __builtin_bswap16/32/64 are supported.]) + AC_MSG_RESULT([yes]) +], [ + AC_MSG_RESULT([no]) + + # Look for other byteswapping methods. + AC_CHECK_HEADERS([byteswap.h sys/endian.h sys/byteorder.h], [break]) + + # Even if we have byteswap.h we may lack the specific macros/functions. + if test x$ac_cv_header_byteswap_h = xyes ; then + m4_foreach([FUNC], [bswap_16,bswap_32,bswap_64], [ + AC_MSG_CHECKING([if FUNC is available]) + AC_LINK_IFELSE([AC_LANG_SOURCE([ #include <byteswap.h> int main(void) @@ -36,6 +51,6 @@ FUNC[](42); return 0; } - ])], [ - AC_DEFINE(HAVE_[]m4_toupper(FUNC), [1], + ])], [ + AC_DEFINE(HAVE_[]m4_toupper(FUNC), [1], [Define to 1 if] FUNC [is available.]) @@ -41,7 +56,4 @@ [Define to 1 if] FUNC [is available.]) - AC_MSG_RESULT([yes]) - ], [AC_MSG_RESULT([no])]) - - ])dnl -fi + AC_MSG_RESULT([yes]) + ], [AC_MSG_RESULT([no])]) @@ -47,17 +59,7 @@ -AC_MSG_CHECKING([if __builtin_bswap16/32/64 are supported]) -AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], - [[__builtin_bswap16(1); - __builtin_bswap32(1); - __builtin_bswap64(1);]])], - [ - AC_DEFINE([HAVE___BUILTIN_BSWAPXX], [1], - [Define to 1 if the GNU C extensions - __builtin_bswap16/32/64 are supported.]) - AC_MSG_RESULT([yes]) - ], [ - AC_MSG_RESULT([no]) - ]) + ])dnl + fi +]) AC_MSG_CHECKING([if unaligned memory access should be used]) AC_ARG_ENABLE([unaligned-access], AS_HELP_STRING([--enable-unaligned-access],