![Eric Le Bihan](/assets/img/avatar_default.png)
Signed-off-by: Eric Le Bihan <eric.le.bihan.dev@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
116 lines
3.9 KiB
Diff
116 lines
3.9 KiB
Diff
From f411b502222c8fe442d7b3beb00b530c9e16b7a2 Mon Sep 17 00:00:00 2001
|
|
From: "Van Bemten, Lionel (Nokia - BE/Antwerp)" <lionel.van_bemten@nokia.com>
|
|
Date: Sun, 29 Apr 2018 19:53:40 +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 434eec8..c09e9c8 100755
|
|
--- a/configure
|
|
+++ b/configure
|
|
@@ -155,23 +155,69 @@ 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 $CPPFLAGS $CPPFLAGS_POST $CFLAGS_AUTO $CFLAGS $CFLAGS_POST $LDFLAGS_AUTO $LDFLAGS $LDFLAGS_POST -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 $CPPFLAGS $CPPFLAGS_POST $CFLAGS_AUTO $CFLAGS $CFLAGS_POST $LDFLAGS_AUTO $LDFLAGS $LDFLAGS_POST -o trysignof${abbr} trysignof${abbr}.c 2>/dev/null; then
|
|
+ echo "#define ${package_macro_name}_HAS${caps}" >> $sysdeps/sysdeps.h
|
|
+ echo "#undef ${package_macro_name}_HASUN${caps}" >> $sysdeps/sysdeps.h
|
|
+ echo "signed${abbr}: yes" >> $sysdeps/sysdeps
|
|
+ else
|
|
+ echo "#undef ${package_macro_name}_HAS${caps}" >> $sysdeps/sysdeps.h
|
|
+ echo "#define ${package_macro_name}_HASUN${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 $CPPFLAGS $CPPFLAGS_POST $CFLAGS_AUTO $CFLAGS $CFLAGS_POST $LDFLAGS_AUTO $LDFLAGS $LDFLAGS_POST -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}_HAS${caps}"
|
|
- echo "#undef ${package_macro_name}_HASUN${caps}"
|
|
- else
|
|
- echo "#undef ${package_macro_name}_HAS${caps}"
|
|
- echo "#define ${package_macro_name}_HASUN${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"
|
|
@@ -548,7 +594,6 @@ EOF
|
|
choose cl itimer ITIMER 'setitimer()'
|
|
choose cl namespaces NAMESPACES 'namespaces'
|
|
choose cl nsgetparent NSGETPARENT 'NS_GET_PARENT'
|
|
- choose cl explicit_bzero EXPLICIT_BZERO 'explicit_bzero()'
|
|
|
|
echo '#endif' >> $sysdeps/sysdeps.h
|
|
fi
|
|
--
|
|
2.14.3
|
|
|