From 58b5c1e19f072ea2f1e1c42b2aa9f5c3bafcd3f1 Mon Sep 17 00:00:00 2001
From: Robert Chiras <robert.chiras@intel.com>
Date: Thu, 3 Mar 2016 12:02:44 +0200
Subject: [PATCH] build: add suport for x86 architecture

Modified android-configure script to support also x86 arch.
Currently added support only for ia32 target arch.
Also, compile openssl without asm, since using the asm sources will make
node fail to run on Android, because it adds text relocations.

Signed-off-by: Robert Chiras <robert.chiras@intel.com>
PR-URL: https://github.com/nodejs/node/pull/5544
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
---
 android-configure | 47 +++++++++++++++++++++++++++++++++++++++--------
 common.gypi       |  8 ++++++++
 2 files changed, 47 insertions(+), 8 deletions(-)

diff --git a/android-configure b/android-configure
index 5cdfa70bbafba7..cbf137f47174c7 100755
--- a/android-configure
+++ b/android-configure
@@ -1,18 +1,49 @@
 #!/bin/bash
 
+if [ -z "$2" ]; then
+    ARCH=arm
+else
+    ARCH="$2"
+fi
+
+CC_VER="4.9"
+case $ARCH in
+    arm)
+        DEST_CPU="$ARCH"
+        SUFFIX="$ARCH-linux-androideabi"
+        TOOLCHAIN_NAME="$SUFFIX"
+        ;;
+    x86)
+        DEST_CPU="ia32"
+        SUFFIX="i686-linux-android"
+        TOOLCHAIN_NAME="$ARCH"
+        ;;
+    x86_64)
+        DEST_CPU="ia32"
+        SUFFIX="$ARCH-linux-android"
+        TOOLCHAIN_NAME="$ARCH"
+        ;;
+    *)
+        echo "Unsupported architecture provided: $ARCH"
+        exit 1
+        ;;
+esac
+
 export TOOLCHAIN=$PWD/android-toolchain
 mkdir -p $TOOLCHAIN
 $1/build/tools/make-standalone-toolchain.sh \
-    --toolchain=arm-linux-androideabi-4.9 \
-    --arch=arm \
+    --toolchain=$TOOLCHAIN_NAME-$CC_VER \
+    --arch=$ARCH \
     --install-dir=$TOOLCHAIN \
     --platform=android-21
 export PATH=$TOOLCHAIN/bin:$PATH
-export AR=$TOOLCHAIN/bin/arm-linux-androideabi-ar
-export CC=$TOOLCHAIN/bin/arm-linux-androideabi-gcc
-export CXX=$TOOLCHAIN/bin/arm-linux-androideabi-g++
-export LINK=$TOOLCHAIN/bin/arm-linux-androideabi-g++
+export AR=$TOOLCHAIN/bin/$SUFFIX-ar
+export CC=$TOOLCHAIN/bin/$SUFFIX-gcc
+export CXX=$TOOLCHAIN/bin/$SUFFIX-g++
+export LINK=$TOOLCHAIN/bin/$SUFFIX-g++
 
 ./configure \
-    --dest-cpu=arm \
-    --dest-os=android
+    --dest-cpu=$DEST_CPU \
+    --dest-os=android \
+    --without-snapshot \
+    --openssl-no-asm
diff --git a/common.gypi b/common.gypi
index 5a07332100d024..811a7b3da3d502 100644
--- a/common.gypi
+++ b/common.gypi
@@ -70,6 +70,10 @@
             'cflags': [ '-gxcoff' ],
             'ldflags': [ '-Wl,-bbigtoc' ],
           }],
+          ['OS == "android"', {
+            'cflags': [ '-fPIE' ],
+            'ldflags': [ '-fPIE', '-pie' ]
+          }]
         ],
         'msvs_settings': {
           'VCCLCompilerTool': {
@@ -103,6 +107,10 @@
           ['OS!="mac" and OS!="win"', {
             'cflags': [ '-fno-omit-frame-pointer' ],
           }],
+          ['OS == "android"', {
+            'cflags': [ '-fPIE' ],
+            'ldflags': [ '-fPIE', '-pie' ]
+          }]
         ],
         'msvs_settings': {
           'VCCLCompilerTool': {