80 строки
1.9 KiB
Bash
Executable File
80 строки
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# In order to cross-compile node for Android using NDK, run:
|
|
# source android-configure <path_to_ndk> [arch]
|
|
#
|
|
# By running android-configure with source, will allow environment variables to
|
|
# be persistent in current session. This is useful for installing native node
|
|
# modules with npm. Also, don't forget to set the arch in npm config using
|
|
# 'npm config set arch=<arch>'
|
|
|
|
|
|
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
|
|
|
|
NDK_PATH=$1
|
|
function make_toolchain {
|
|
$NDK_PATH/build/tools/make-standalone-toolchain.sh \
|
|
--toolchain=$TOOLCHAIN_NAME-$CC_VER \
|
|
--arch=$ARCH \
|
|
--install-dir=$TOOLCHAIN \
|
|
--platform=android-21
|
|
}
|
|
|
|
export TOOLCHAIN=$PWD/android-toolchain
|
|
if [ -d "$TOOLCHAIN" ]; then
|
|
read -r -p "NDK toolchain already exists. Replace it? [y/N]" response
|
|
case "$response" in
|
|
[Yy])
|
|
rm -rf "$TOOLCHAIN"
|
|
make_toolchain
|
|
esac
|
|
else
|
|
make_toolchain
|
|
fi
|
|
export PATH=$TOOLCHAIN/bin:$PATH
|
|
export AR=$TOOLCHAIN/bin/$SUFFIX-ar
|
|
export CC=$TOOLCHAIN/bin/$SUFFIX-gcc
|
|
export CXX=$TOOLCHAIN/bin/$SUFFIX-g++
|
|
export LINK=$TOOLCHAIN/bin/$SUFFIX-g++
|
|
|
|
GYP_DEFINES="target_arch=$ARCH"
|
|
GYP_DEFINES+=" v8_target_arch=$ARCH"
|
|
GYP_DEFINES+=" android_target_arch=$ARCH"
|
|
GYP_DEFINES+=" host_os=linux OS=android"
|
|
export GYP_DEFINES
|
|
|
|
if [ -f "configure" ]; then
|
|
./configure \
|
|
--dest-cpu=$DEST_CPU \
|
|
--dest-os=android \
|
|
--without-snapshot \
|
|
--openssl-no-asm
|
|
fi
|