Algorithmique Numérique Distribuée Public GIT Repository
index e65526f..9ffccff 100644 (file)
@@ -1,4 +1,3 @@
-# BEGIN OF GRAS ARCH CHECK
dnl
dnl GRAS_DO_CHECK_SIZEOF: Get the size of a datatype (even in cross-compile)
dnl  1: type tested
@@ -6,6 +5,15 @@ dnl  2: extra include lines
dnl  3: extra sizes to test
dnl
+
+dnl Copyright (C) 2004, 2005, 2006, 2007. Martin Quinson. All rights reserved.
+
+dnl This file is part of the SimGrid project. This is free software:
+dnl You can redistribute and/or modify it under the terms of the
+dnl GNU LGPL (v2.1) licence.
+
+
+# BEGIN OF GRAS ARCH CHECK
AC_DEFUN([GRAS_DO_CHECK_SIZEOF],
[changequote(<<, >>)dnl
dnl The cache variable name (and of the result).
@@ -181,18 +189,20 @@ trace="\${trace}_D:4/\${ac_cv_struct_boundary_float}:8/\${ac_cv_struct_boundary_dou
# big32_2   means that all data are aligned on a 2 bytes boundary.              (ARM)
# big32_8_4 means that some or them are aligned on 8 bytes, some are on 4 bytes (AIX)
case \$trace in
-  l_C:1/1:_I:2/2:4/4:4/4:8/8:_P:4/4:4/4:_D:4/4:8/8:) gras_arch=0; gras_arch_name=little32;;
-  l_C:1/1:_I:2/2:4/4:4/4:8/4:_P:4/4:4/4:_D:4/4:8/4:) gras_arch=1; gras_arch_name=little32_4;;
-
-  l_C:1/1:_I:2/2:4/4:8/8:8/8:_P:8/8:8/8:_D:4/4:8/8:) gras_arch=2; gras_arch_name=little64;;
-
-  B_C:1/1:_I:2/2:4/4:4/4:8/8:_P:4/4:4/4:_D:4/4:8/8:) gras_arch=3; gras_arch_name=big32;;
-  B_C:1/1:_I:2/2:4/4:4/4:8/8:_P:4/4:4/4:_D:4/4:8/4:) gras_arch=4; gras_arch_name=big32_8_4;;
-  B_C:1/1:_I:2/2:4/4:4/4:8/4:_P:4/4:4/4:_D:4/4:8/4:) gras_arch=5; gras_arch_name=big32_4;;
-  B_C:1/1:_I:2/2:4/2:4/2:8/2:_P:4/2:4/2:_D:4/2:8/2:) gras_arch=6; gras_arch_name=big32_2;;
-
-  B_C:1/1:_I:2/2:4/4:8/8:8/8:_P:8/8:8/8:_D:4/4:8/8:) gras_arch=7; gras_arch_name=big64;;
-  B_C:1/1:_I:2/2:4/4:8/8:8/8:_P:8/8:8/8:_D:4/4:8/4:) gras_arch=8; gras_arch_name=big64_8_4;;
+  l_C:1/1:_I:2/1:4/1:4/1:8/1:_P:4/1:4/1:_D:4/1:8/1:) gras_arch=0; gras_size=32; gras_arch_name=little32_1;;
+  l_C:1/1:_I:2/2:4/2:4/2:8/2:_P:4/2:4/2:_D:4/2:8/2:) gras_arch=1; gras_size=32; gras_arch_name=little32_2;;
+  l_C:1/1:_I:2/2:4/4:4/4:8/4:_P:4/4:4/4:_D:4/4:8/4:) gras_arch=2; gras_size=32; gras_arch_name=little32_4;;
+  l_C:1/1:_I:2/2:4/4:4/4:8/8:_P:4/4:4/4:_D:4/4:8/8:) gras_arch=3; gras_size=32; gras_arch_name=little32_8;;
+
+  l_C:1/1:_I:2/2:4/4:8/8:8/8:_P:8/8:8/8:_D:4/4:8/8:) gras_arch=4; gras_size=64; gras_arch_name=little64;;
+
+  B_C:1/1:_I:2/2:4/4:4/4:8/8:_P:4/4:4/4:_D:4/4:8/8:) gras_arch=5; gras_size=32; gras_arch_name=big32;;
+  B_C:1/1:_I:2/2:4/4:4/4:8/8:_P:4/4:4/4:_D:4/4:8/4:) gras_arch=6; gras_size=32; gras_arch_name=big32_8_4;;
+  B_C:1/1:_I:2/2:4/4:4/4:8/4:_P:4/4:4/4:_D:4/4:8/4:) gras_arch=7; gras_size=32; gras_arch_name=big32_4;;
+  B_C:1/1:_I:2/2:4/2:4/2:8/2:_P:4/2:4/2:_D:4/2:8/2:) gras_arch=8; gras_size=32; gras_arch_name=big32_2;;
+
+  B_C:1/1:_I:2/2:4/4:8/8:8/8:_P:8/8:8/8:_D:4/4:8/8:) gras_arch=9; gras_size=64; gras_arch_name=big64;;
+  B_C:1/1:_I:2/2:4/4:8/8:8/8:_P:8/8:8/8:_D:4/4:8/4:) gras_arch=10;gras_size=64; gras_arch_name=big64_8_4;;
esac
if test x\$gras_arch = xunknown ; then
AC_MSG_RESULT([damnit (\$trace)])
@@ -202,6 +212,23 @@ fi
echo "\$as_me:\$LINENO: GRAS trace of this machine: \$trace" >&AS_MESSAGE_LOG_FD
AC_DEFINE_UNQUOTED(GRAS_THISARCH,\$gras_arch,[defines the GRAS architecture signature of this machine])
AC_MSG_RESULT(\$gras_arch (\$gras_arch_name))
+
+AM_CONDITIONAL(GRAS_ARCH_32_BITS,[test "\$gras_size" = 32])
+
+AC_MSG_CHECKING(the maximal size of scalar)
+ac_cv_sizeof_max=0
+for s in \$ac_cv_sizeof_char \
+         \$ac_cv_sizeof_short_int \$ac_cv_sizeof_int \$ac_cv_sizeof_long_int \$ac_cv_sizeof_long_long_int \
+         \$ac_cv_sizeof_void_p \$ac_cv_sizeof_void_LpR_LvoidR \
+        4 8; do
+
+  if test \$ac_cv_sizeof_max -lt \$s ; then
+    ac_cv_sizeof_max=\$s
+  fi
+done
+AC_MSG_RESULT(\$ac_cv_sizeof_max)
+AC_DEFINE_UNQUOTED([SIZEOF_MAX],\$ac_cv_sizeof_max,[The maximal size of any scalar on this arch])
+
])
# END OF GRAS ARCH CHECK