1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- 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 <aduskett@gmail.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
|