--- ./auto/options	2017-01-24 19:32:19.000000000 +0530
+++ ../options	2017-02-12 10:01:42.063174903 +0530
@@ -34,6 +34,8 @@
 NGX_TEST_BUILD_SOLARIS_SENDFILEV=NO
 
 NGX_PLATFORM=
+NGX_CROSS=NO
+NGX_CROSSFILE=
 NGX_WINE=
 
 EVENT_FOUND=NO
@@ -190,7 +192,9 @@
         --user=*)                        NGX_USER="$value"          ;;
         --group=*)                       NGX_GROUP="$value"         ;;
 
-        --crossbuild=*)                  NGX_PLATFORM="$value"      ;;
+        --crossbuild=*)                  NGX_PLATFORM="$value"      ;
+                                         NGX_CROSS=YES              ;;
+        --crossfile=*)                   NGX_CROSSFILE="$value"     ;;
 
         --build=*)                       NGX_BUILD="$value"         ;;
         --builddir=*)                    NGX_OBJS="$value"          ;;
@@ -416,6 +420,10 @@
   --group=GROUP                      set non-privileged group for
                                      worker processes
 
+  --crossbuild=PLAT:VER:ARCH         crossbuild for specified
+                                     NGX_PLATFORM
+  --crossfile=NAME                   file name in auto/cross
+
   --build=NAME                       set build name
   --builddir=DIR                     set build directory
 
--- ./auto/os/linux	2017-01-24 19:32:19.000000000 +0530
+++ ../linux	2017-03-17 09:46:36.557329915 +0530
@@ -18,7 +18,13 @@
 
 # Linux kernel version
 
-version=$((`uname -r \
+if [ "$NGX_CROSS" = "YES" ]; then
+    kern_version=`echo $NGX_PLATFORM | cut -d ':' -f 2`
+else
+    kern_version=`uname -r`
+fi
+
+version=$((`echo $kern_version \
     | sed -n -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/ \
                                                  \1*256*256+\2*256+\3/p' \
              -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\1*256*256+\2*256/p'`))
--- ./auto/types/sizeof	2017-01-24 19:32:19.000000000 +0530
+++ ../sizeof	2017-03-17 10:11:46.379342795 +0530
@@ -40,7 +40,13 @@
 
 
 if [ -x $NGX_AUTOTEST ]; then
-    ngx_size=`$NGX_AUTOTEST`
+    if [ "$NGX_CROSS" = "YES" ]; then
+        crossvar=`echo "sizeof_${ngx_type}_CROSS" | sed -e 's| |_|g' -e 's|\*|ptr|g'`
+        . $NGX_CROSSFILE
+        eval ngx_size=\"\${$crossvar}\"
+    else
+        ngx_size=`$NGX_AUTOTEST`
+    fi
     echo " $ngx_size bytes"
 fi
 
--- ./auto/feature	2017-01-24 19:32:19.000000000 +0530
+++ ../feature	2017-02-12 10:18:38.010242484 +0530
@@ -53,7 +53,7 @@
 
         yes)
             # /bin/sh is used to intercept "Killed" or "Abort trap" messages
-            if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then
+            if [ "$NGX_CROSS" = "YES" ] || bash -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1 ; then
                 echo " found"
                 ngx_found=yes
 
@@ -68,7 +68,24 @@
 
         value)
             # /bin/sh is used to intercept "Killed" or "Abort trap" messages
-            if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then
+            if [ "$NGX_CROSS" = "YES" ]; then
+                eval crossval=\"\${`echo "feature_${ngx_feature_name}_CROSS" | sed 's| |_|g'`}\"
+                . $NGX_CROSSFILE
+                if [ -n "$crossval"  ]; then
+                    echo " found"
+                    ngx_found=yes
+
+                    cat << END >> $NGX_AUTO_CONFIG_H
+
+#ifndef $ngx_feature_name
+#define $ngx_feature_name  `echo $crossval`
+#endif
+
+END
+                else
+                    echo " found but is not working"
+                fi
+            elif /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then
                 echo " found"
                 ngx_found=yes
 
--- ./auto/endianness	2017-01-31 20:31:10.000000000 +0530
+++ ../endianness	2017-03-19 12:00:55.871579412 +0530
@@ -31,7 +31,18 @@
 
 eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
 
-if [ -x $NGX_AUTOTEST ]; then
+if [ "$NGX_CROSS" = "YES" ]; then
+    . $NGX_CROSSFILE
+    if [ "$endianness_CROSS" = "little" ]; then
+        echo " little endian"
+        have=NGX_HAVE_LITTLE_ENDIAN . auto/have
+    else
+        echo " big endian"
+    fi
+
+    rm -rf $NGX_AUTOTEST*
+
+elif [ -x $NGX_AUTOTEST ]; then
     if $NGX_AUTOTEST >/dev/null 2>&1; then
         echo " little endian"
         have=NGX_HAVE_LITTLE_ENDIAN . auto/have