1*4882a593SmuzhiyunFrom 4bd8fe780ff2064f2d4e9c905d8a98dd0f9b6191 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Nevo Hed <nhed+buildroot@starry.com> 3*4882a593SmuzhiyunDate: Mon, 30 Aug 2021 13:28:13 -0400 4*4882a593SmuzhiyunSubject: [PATCH] Allow forcing of endianness for cross-compilation 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunUpstream-status: Invalid (upstream doesn't support cross-compilation) 7*4882a593SmuzhiyunSee https://trac.nginx.org/nginx/ticket/2240 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunSigned-off-by: Nevo Hed <nhed+buildroot@starry.com> 10*4882a593Smuzhiyun--- 11*4882a593Smuzhiyun auto/endianness | 61 ++++++++++++++++++++++++++++++++----------------- 12*4882a593Smuzhiyun auto/options | 6 +++++ 13*4882a593Smuzhiyun 2 files changed, 46 insertions(+), 21 deletions(-) 14*4882a593Smuzhiyun 15*4882a593Smuzhiyundiff --git a/auto/endianness b/auto/endianness 16*4882a593Smuzhiyunindex 1b552b6b..4b2a3cd7 100644 17*4882a593Smuzhiyun--- a/auto/endianness 18*4882a593Smuzhiyun+++ b/auto/endianness 19*4882a593Smuzhiyun@@ -26,25 +26,44 @@ int main(void) { 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun END 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun-ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \ 24*4882a593Smuzhiyun- -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs" 25*4882a593Smuzhiyun- 26*4882a593Smuzhiyun-eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1" 27*4882a593Smuzhiyun- 28*4882a593Smuzhiyun-if [ -x $NGX_AUTOTEST ]; then 29*4882a593Smuzhiyun- if $NGX_AUTOTEST >/dev/null 2>&1; then 30*4882a593Smuzhiyun- echo " little endian" 31*4882a593Smuzhiyun+case "${NGX_FORCE_ENDIANNESS}" in 32*4882a593Smuzhiyun+ little) 33*4882a593Smuzhiyun+ echo " little endian (forced)" 34*4882a593Smuzhiyun have=NGX_HAVE_LITTLE_ENDIAN . auto/have 35*4882a593Smuzhiyun- else 36*4882a593Smuzhiyun- echo " big endian" 37*4882a593Smuzhiyun- fi 38*4882a593Smuzhiyun- 39*4882a593Smuzhiyun- rm -rf $NGX_AUTOTEST* 40*4882a593Smuzhiyun- 41*4882a593Smuzhiyun-else 42*4882a593Smuzhiyun- rm -rf $NGX_AUTOTEST* 43*4882a593Smuzhiyun- 44*4882a593Smuzhiyun- echo 45*4882a593Smuzhiyun- echo "$0: error: cannot detect system byte ordering" 46*4882a593Smuzhiyun- exit 1 47*4882a593Smuzhiyun-fi 48*4882a593Smuzhiyun+ ;; 49*4882a593Smuzhiyun+ 50*4882a593Smuzhiyun+ big) 51*4882a593Smuzhiyun+ echo " big endian (forced)" 52*4882a593Smuzhiyun+ ;; 53*4882a593Smuzhiyun+ 54*4882a593Smuzhiyun+ "") 55*4882a593Smuzhiyun+ ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \ 56*4882a593Smuzhiyun+ -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs" 57*4882a593Smuzhiyun+ 58*4882a593Smuzhiyun+ eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1" 59*4882a593Smuzhiyun+ 60*4882a593Smuzhiyun+ if [ -x $NGX_AUTOTEST ]; then 61*4882a593Smuzhiyun+ if $NGX_AUTOTEST >/dev/null 2>&1; then 62*4882a593Smuzhiyun+ echo " little endian" 63*4882a593Smuzhiyun+ have=NGX_HAVE_LITTLE_ENDIAN . auto/have 64*4882a593Smuzhiyun+ else 65*4882a593Smuzhiyun+ echo " big endian" 66*4882a593Smuzhiyun+ fi 67*4882a593Smuzhiyun+ 68*4882a593Smuzhiyun+ rm -rf $NGX_AUTOTEST* 69*4882a593Smuzhiyun+ 70*4882a593Smuzhiyun+ else 71*4882a593Smuzhiyun+ rm -rf $NGX_AUTOTEST* 72*4882a593Smuzhiyun+ 73*4882a593Smuzhiyun+ echo 74*4882a593Smuzhiyun+ echo "$0: error: cannot detect system byte ordering" 75*4882a593Smuzhiyun+ exit 1 76*4882a593Smuzhiyun+ fi 77*4882a593Smuzhiyun+ ;; 78*4882a593Smuzhiyun+ 79*4882a593Smuzhiyun+ *) 80*4882a593Smuzhiyun+ echo 81*4882a593Smuzhiyun+ echo "$0: error: invalid \"--force-endianness=${NGX_FORCE_ENDIANNESS}\"" 82*4882a593Smuzhiyun+ exit 1 83*4882a593Smuzhiyun+ ;; 84*4882a593Smuzhiyun+esac 85*4882a593Smuzhiyundiff --git a/auto/options b/auto/options 86*4882a593Smuzhiyunindex 80be906e..85a06456 100644 87*4882a593Smuzhiyun--- a/auto/options 88*4882a593Smuzhiyun+++ b/auto/options 89*4882a593Smuzhiyun@@ -17,6 +17,8 @@ NGX_USER= 90*4882a593Smuzhiyun NGX_GROUP= 91*4882a593Smuzhiyun NGX_BUILD= 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun+NGX_FORCE_ENDIANNESS= 94*4882a593Smuzhiyun+ 95*4882a593Smuzhiyun CC=${CC:-cc} 96*4882a593Smuzhiyun CPP= 97*4882a593Smuzhiyun NGX_OBJS=objs 98*4882a593Smuzhiyun@@ -196,6 +198,8 @@ do 99*4882a593Smuzhiyun --user=*) NGX_USER="$value" ;; 100*4882a593Smuzhiyun --group=*) NGX_GROUP="$value" ;; 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun+ --force-endianness=*) NGX_FORCE_ENDIANNESS="$value" ;; 103*4882a593Smuzhiyun+ 104*4882a593Smuzhiyun --crossbuild=*) NGX_PLATFORM="$value" ;; 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun --build=*) NGX_BUILD="$value" ;; 107*4882a593Smuzhiyun@@ -432,6 +436,8 @@ cat << END 108*4882a593Smuzhiyun --build=NAME set build name 109*4882a593Smuzhiyun --builddir=DIR set build directory 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun+ --force-endianness=<big>|<little> force endianness 112*4882a593Smuzhiyun+ 113*4882a593Smuzhiyun --with-select_module enable select module 114*4882a593Smuzhiyun --without-select_module disable select module 115*4882a593Smuzhiyun --with-poll_module enable poll module 116*4882a593Smuzhiyun-- 117*4882a593Smuzhiyun2.31.1 118*4882a593Smuzhiyun 119