From 91045c0f5fa8f126fa7a407e467b6d941e7ef602 Mon Sep 17 00:00:00 2001
From: "Van Bemten, Lionel (Nokia - BE/Antwerp)" <lionel.van_bemten@nokia.com>
Date: Thu, 18 May 2017 19:38:46 +0200
Subject: [PATCH] No runtime tests for type sizes

Replace build and execution of runtime test programs for determining
some type sizes of the target with compile time test programs.

This improves support for cross-compilation.

Signed-off-by: "Van Bemten, Lionel (Nokia - BE/Antwerp)" <lionel.van_bemten@nokia.com>
Signed-off-by: Eric Le Bihan <eric.le.bihan.dev@free.fr>
---
 configure | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++-------------
 1 file changed, 60 insertions(+), 15 deletions(-)

diff --git a/configure b/configure
index 8ba948e..b129556 100755
--- a/configure
+++ b/configure
@@ -154,25 +154,70 @@ choose () {
   fi
 }
 
+findtypesize () {
+  typ=$1
+  abbr=$2
+  r=false
+  type_size=0
+  while true; do
+    cat>trysizeof${abbr}.c<<EOF
+#include <sys/types.h>
+
+int main(void)
+{
+  static int v = 1 / !!((sizeof($typ) == $type_size));
+  return 0;
+}
+EOF
+    if $CC_AUTO $CPPFLAGS_AUTO $CFLAGS_AUTO $LDFLAGS_AUTO -o trysizeof${abbr} trysizeof${abbr}.c 2>/dev/null; then
+        r=true
+        break
+    fi
+    type_size=$(expr $type_size + 1)
+    test $type_size -le 16 || break
+  done
+  rm -f trysizeof${abbr} trysizeof${abbr}.c
+  test $r = true || fail "$0: unable to determine size of $typ"
+  caps=$(echo "sizeof${abbr}" | tr a-z A-Z)
+  echo "#define ${package_macro_name}_${caps} $type_size" >> $sysdeps/sysdeps.h
+  echo "sizeof${abbr}: $type_size" >> $sysdeps/sysdeps
+}
+
+findtypesign () {
+  typ=$1
+  abbr=$2
+  caps=$(echo "signed${abbr}" | tr a-z A-Z)
+  cat>trysignof${abbr}.c<<EOF
+#include <sys/types.h>
+
+int main(void)
+{
+  static int v = 1 / !!(((($typ) -1) < 0));
+  return 0;
+}
+EOF
+  if $CC_AUTO $CPPFLAGS_AUTO $CFLAGS_AUTO $LDFLAGS_AUTO -o trysignof${abbr} trysignof${abbr}.c 2>/dev/null; then
+    echo "#define ${package_macro_name}_HASSIGNED${caps}" >> $sysdeps/sysdeps.h
+    echo "#undef ${package_macro_name}_HASUNSIGNED${caps}" >> $sysdeps/sysdeps.h
+    echo "signed${abbr}: yes" >> $sysdeps/sysdeps
+  else
+    echo "#undef ${package_macro_name}_HASSIGNED${caps}" >> $sysdeps/sysdeps.h
+    echo "#define ${package_macro_name}_HASUNSIGNED${caps}" >> $sysdeps/sysdeps.h
+    echo "signed${abbr}: no" >> $sysdeps/sysdeps
+  fi
+  rm -f trysignof${abbr} trysignof${abbr}.c
+}
+
 trytypes () {
   echo "Checking size and signedness of standard types..."
-  $CC_AUTO $CPPFLAGS_AUTO $CFLAGS_AUTO $LDFLAGS_AUTO -o output-types src/sysdeps/output-types.c
-  ./output-types >> $sysdeps/sysdeps
-  ./output-types | grep -F sizeof | while read key value ; do
-    caps=$(echo $key | sed s/:\$// | tr a-z A-Z)
-    echo "#define ${package_macro_name}_${caps} $value" >> $sysdeps/sysdeps.h
+  for t in "unsigned short" "unsigned int" "unsigned long"; do
+    abbr=$(echo "$t" | sed -e 's/nsigned //')
+    findtypesize "$t" "${abbr}"
   done
-  ./output-types | grep -F signed | while read key value ; do
-    caps=$(echo $key | sed s/:\$// | tr a-z A-Z)
-    if test $value = yes ; then
-      echo "#define ${package_macro_name}_HASSIGNED${caps}"
-      echo "#undef ${package_macro_name}_HASUNSIGNED${caps}"
-    else
-      echo "#undef ${package_macro_name}_HASSIGNED${caps}"
-      echo "#define ${package_macro_name}_HASUNSIGNED${caps}"
-    fi >> $sysdeps/sysdeps.h
+  for t in size uid gid pid time dev ino; do
+    findtypesize "${t}_t" "$t"
+    findtypesign "${t}_t" "$t"
   done
-  rm -f output-types
   echo "  ... done"
 }
 
-- 
2.9.4

