![Adam Duskett](/assets/img/avatar_default.png)
Also update the patch line numbers to work with 1.12.0 Signed-off-by: Adam Duskett <Adamduskett@outlook.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
90 lines
2.3 KiB
Diff
90 lines
2.3 KiB
Diff
From fb158af083e72c9aa0a8dfd4c6965f950192a230 Mon Sep 17 00:00:00 2001
|
|
From: Samuel Martin <s.martin49@gmail.com>
|
|
Date: Tue, 4 Jul 2017 11:09:20 -0400
|
|
Subject: [PATCH] auto/type/sizeof: rework autotest to be cross-compilation
|
|
friendly
|
|
|
|
Rework the sizeof test to do the checks at compile time instead of at
|
|
runtime. This way, it does not break when cross-compiling for a
|
|
different CPU architecture.
|
|
|
|
Signed-off-by: Samuel Martin <s.martin49@gmail.com>
|
|
|
|
Refresh for 1.8.0.
|
|
|
|
Signed-off-by: Danomi Manchego <danomimanchego123@gmail.com>
|
|
[martin@barkynet.com: Updated for 1.10.0]
|
|
Signed-off-by: Martin Bark <martin@barkynet.com>
|
|
Signed-off-by: Adam Duskett <Adamduskett@outlook.com>
|
|
Refresh for 1.12.0
|
|
---
|
|
auto/types/sizeof | 37 ++++++++++++++++++++++++++++---------
|
|
1 file changed, 28 insertions(+), 9 deletions(-)
|
|
|
|
diff --git a/auto/types/sizeof b/auto/types/sizeof
|
|
index 480d8cf..61dcd2d 100644
|
|
--- a/auto/types/sizeof
|
|
+++ b/auto/types/sizeof
|
|
@@ -14,7 +14,7 @@ END
|
|
|
|
ngx_size=
|
|
|
|
-cat << END > $NGX_AUTOTEST.c
|
|
+cat << _EOF > $NGX_AUTOTEST.c
|
|
|
|
#include <sys/types.h>
|
|
#include <sys/time.h>
|
|
@@ -25,22 +25,41 @@ $NGX_INCLUDE_UNISTD_H
|
|
$NGX_INCLUDE_INTTYPES_H
|
|
$NGX_INCLUDE_AUTO_CONFIG_H
|
|
|
|
-int main(void) {
|
|
- printf("%d", (int) sizeof($ngx_type));
|
|
+#if !defined( PASTE)
|
|
+#define PASTE2( x, y) x##y
|
|
+#define PASTE( x, y) PASTE2( x, y)
|
|
+#endif /* PASTE */
|
|
+
|
|
+#define SAY_IF_SIZEOF( typename, type, size) \\
|
|
+ static char PASTE( PASTE( PASTE( sizeof_, typename), _is_), size) \\
|
|
+ [(sizeof(type) == (size)) ? 1 : -1]
|
|
+
|
|
+SAY_IF_SIZEOF(TEST_TYPENAME, TEST_TYPE, TEST_SIZE);
|
|
+
|
|
+int main(void)
|
|
+{
|
|
return 0;
|
|
}
|
|
|
|
-END
|
|
+_EOF
|
|
|
|
|
|
-ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
|
|
- -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs"
|
|
+_ngx_typename=`echo "$ngx_type" | sed 's/ /_/g;s/\*/p/'`
|
|
+ngx_size="-1"
|
|
+ngx_size=`for i in 1 2 4 8 16 ; do \
|
|
+ $CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
|
|
+ -DTEST_TYPENAME="$_ngx_typename" -DTEST_TYPE="$ngx_type" -DTEST_SIZE="$i" \
|
|
+ $NGX_AUTOTEST.c -o $NGX_AUTOTEST \
|
|
+ $NGX_LD_OPT $ngx_feature_libs >/dev/null 2>&1 || continue ;\
|
|
+ echo $i ; break ; done`
|
|
|
|
-eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
|
|
+rm -rf $NGX_AUTOTEST*
|
|
|
|
+if test -z $ngx_size ; then
|
|
+ ngx_size=-1
|
|
+fi
|
|
|
|
-if [ -x $NGX_AUTOTEST ]; then
|
|
- ngx_size=`$NGX_AUTOTEST`
|
|
+if [ $ngx_size -gt 0 ]; then
|
|
echo " $ngx_size bytes"
|
|
fi
|
|
|
|
--
|
|
2.9.4
|
|
|