]> rtime.felk.cvut.cz Git - orte.git/blobdiff - configure.ac
Merge branch 'master' of ssh://git@rtime.felk.cvut.cz/orte into android
[orte.git] / configure.ac
index 04c0dc9d44e6c905b68b3e576ed8236c57559e33..ce6c0a2a9dcee9f7a65cb839cda2cb52129fce1a 100644 (file)
@@ -236,7 +236,64 @@ AC_SUBST(INCLUDES)
 
 ###############################
 # Checks for typedefs, structures, and compiler characteristics.
-AC_C_BIGENDIAN
+need_endian_test=yes
+AC_CHECK_HEADERS([endian.h sys/param.h], [], [],[])
+
+if test "$ac_cv_header_sys_param_h" == 'yes' ; then
+    AC_MSG_CHECKING([whether BYTE_ORDER defined in sys/param.h])
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/param.h>], [
+                        unsigned int a=BYTE_ORDER;
+                        unsigned int b=BIG_ENDIAN;
+                        unsigned int c=LITTLE_ENDIAN;])],
+                      [AC_MSG_RESULT([yes])
+                       need_endian_test=no],[AC_MSG_RESULT([no])])
+
+    if test "$need_endian_test" == 'yes' ; then
+        AC_MSG_CHECKING([whether __BYTE_ORDER defined in sys/param.h])
+        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/param.h>], [
+                        unsigned int a=__BYTE_ORDER;
+                        unsigned int b=__BIG_ENDIAN;
+                        unsigned int c=__LITTLE_ENDIAN;])],
+                      [AC_MSG_RESULT([yes])
+                       need_endian_test=no],[AC_MSG_RESULT([no])])
+    fi
+fi
+if test "$ac_cv_header_endian_h" == 'yes' ; then
+    if test "$need_endian_test" == 'yes' ; then
+        AC_MSG_CHECKING([whether endian can be determined from endian.h])
+        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <endian.h>], [
+                        unsigned int a=__BYTE_ORDER;
+                        unsigned int b=__BIG_ENDIAN;
+                        unsigned int c=__LITTLE_ENDIAN;])],
+                      [AC_MSG_RESULT([yes])
+                       need_endian_test=no],[AC_MSG_RESULT([no])])
+    fi
+fi
+
+if test "$need_endian_test" == 'yes' ; then
+  AC_C_BIGENDIAN
+fi
+
+AH_BOTTOM([
+#if defined(HAVE_ENDIAN_H) || defined(HAVE_SYS_PARAM_H)
+  #ifdef HAVE_SYS_PARAM_H
+    #include <sys/param.h>
+  #endif
+  #if defined(HAVE_ENDIAN_H) && !defined(BYTE_ORDER) && !defined(__BYTE_ORDER)
+    #include <endian.h>
+  #endif
+  #if defined(__BYTE_ORDER)
+    #if __BYTE_ORDER == __BIG_ENDIAN
+      #define WORDS_BIGENDIAN 1
+    #endif
+  #elif defined(BYTE_ORDER)
+    #if BYTE_ORDER == BIG_ENDIAN
+      #define WORDS_BIGENDIAN 1
+    #endif
+  #endif
+#endif
+])
+
 AC_C_CONST
 AC_C_INLINE