From 271201fea935cdf85336736e87c06104ce185f61 Mon Sep 17 00:00:00 2001 From: Robert Chiras 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 PR-URL: https://github.com/nodejs/node/pull/5544 Reviewed-By: Ben Noordhuis --- android-configure | 47 +++++++++++++++++++++++++++++++++++++++-------- common.gypi | 8 ++++++++ 2 files changed, 47 insertions(+), 8 deletions(-) diff --git a/android-configure b/android-configure index 5cdfa70bbaf..cbf137f4717 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 5b8b2c09d6b..db719ef0eea 100644 --- a/common.gypi +++ b/common.gypi @@ -68,6 +68,10 @@ 'cflags': [ '-gxcoff' ], 'ldflags': [ '-Wl,-bbigtoc' ], }], + ['OS == "android"', { + 'cflags': [ '-fPIE' ], + 'ldflags': [ '-fPIE', '-pie' ] + }] ], 'msvs_settings': { 'VCCLCompilerTool': { @@ -101,6 +105,10 @@ ['OS!="mac" and OS!="win"', { 'cflags': [ '-fno-omit-frame-pointer' ], }], + ['OS == "android"', { + 'cflags': [ '-fPIE' ], + 'ldflags': [ '-fPIE', '-pie' ] + }] ], 'msvs_settings': { 'VCCLCompilerTool': {