mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
7afa7b9ab3
test/[ from sbase unix tools[1] throws "too many arguments" if -a or -o is provided. The syntax has been marked obsolescent as per the manual[2]. [1] http://core.suckless.org/sbase/ [2] https://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html#tag_20_128_16 PR-URL: https://github.com/nodejs/node/pull/38731 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Richard Lau <rlau@redhat.com> Reviewed-By: Minwoo Jung <nodecorelab@gmail.com> Reviewed-By: Darshan Sen <raisinten@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
86 lines
2.2 KiB
Bash
Executable File
86 lines
2.2 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 [ $# -ne 3 ]; then
|
|
echo "$0 should have 3 parameters: ndk_path, target_arch and sdk_version"
|
|
return 1
|
|
fi
|
|
|
|
NDK_PATH=$1
|
|
ARCH="$2"
|
|
ANDROID_SDK_VERSION=$3
|
|
|
|
if [ $ANDROID_SDK_VERSION -lt 23 ]; then
|
|
echo "$ANDROID_SDK_VERSION should equal or later than 23(Android 6.0)"
|
|
fi
|
|
|
|
CC_VER="4.9"
|
|
|
|
case $ARCH in
|
|
arm)
|
|
DEST_CPU="arm"
|
|
TOOLCHAIN_NAME="armv7-linux-androideabi"
|
|
;;
|
|
x86)
|
|
DEST_CPU="ia32"
|
|
TOOLCHAIN_NAME="i686-linux-android"
|
|
;;
|
|
x86_64)
|
|
DEST_CPU="x64"
|
|
TOOLCHAIN_NAME="x86_64-linux-android"
|
|
ARCH="x64"
|
|
;;
|
|
arm64|aarch64)
|
|
DEST_CPU="arm64"
|
|
TOOLCHAIN_NAME="aarch64-linux-android"
|
|
ARCH="arm64"
|
|
;;
|
|
*)
|
|
echo "Unsupported architecture provided: $ARCH"
|
|
return 1
|
|
;;
|
|
esac
|
|
|
|
HOST_OS="linux"
|
|
HOST_ARCH="x86_64"
|
|
export CC_host=$(command -v gcc)
|
|
export CXX_host=$(command -v g++)
|
|
|
|
host_gcc_version=$($CC_host --version | grep gcc | awk '{print $NF}')
|
|
major=$(echo $host_gcc_version | awk -F . '{print $1}')
|
|
minor=$(echo $host_gcc_version | awk -F . '{print $2}')
|
|
if [ -z $major ] || [ -z $minor ] || [ $major -lt 6 ] || ( [ $major -eq 6 ] && [ $minor -lt 3 ] ); then
|
|
echo "host gcc $host_gcc_version is too old, need gcc 6.3.0"
|
|
return 1
|
|
fi
|
|
|
|
SUFFIX="$TOOLCHAIN_NAME$ANDROID_SDK_VERSION"
|
|
TOOLCHAIN=$NDK_PATH/toolchains/llvm/prebuilt/$HOST_OS-$HOST_ARCH
|
|
|
|
export PATH=$TOOLCHAIN/bin:$PATH
|
|
export CC=$TOOLCHAIN/bin/$SUFFIX-clang
|
|
export CXX=$TOOLCHAIN/bin/$SUFFIX-clang++
|
|
|
|
|
|
GYP_DEFINES="target_arch=$ARCH"
|
|
GYP_DEFINES+=" v8_target_arch=$ARCH"
|
|
GYP_DEFINES+=" android_target_arch=$ARCH"
|
|
GYP_DEFINES+=" host_os=$HOST_OS OS=android"
|
|
export GYP_DEFINES
|
|
|
|
if [ -f "configure" ]; then
|
|
./configure \
|
|
--dest-cpu=$DEST_CPU \
|
|
--dest-os=android \
|
|
--without-snapshot \
|
|
--openssl-no-asm \
|
|
--cross-compiling
|
|
fi
|