diff options
-rwxr-xr-x | build-android-node | 58 | ||||
-rwxr-xr-x | build-android-v8 | 47 |
2 files changed, 105 insertions, 0 deletions
diff --git a/build-android-node b/build-android-node new file mode 100755 index 0000000000..f98f56926f --- /dev/null +++ b/build-android-node @@ -0,0 +1,58 @@ +#!/usr/bin/env bash + +set -eu -o pipefail + +scriptdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" +cd $scriptdir + +NDK=$1 + +DEST_CPU_ARCH='arm' +API_LEVEL=26 +BUILD_HOST_TAG='linux-x86_64' +TOOLCHAIN_DIR=$NDK/toolchains/llvm/prebuilt/$BUILD_HOST_TAG/ + +if [[ ! -d "$NDK" ]]; then + echo "Android NDK directory '$NDK' invalid" + exit 1 +fi + +if [[ ! -d "$TOOLCHAIN_DIR" ]]; then + echo "Toolchain directory '$TOOLCHAIN_DIR' invalid" + exit 1 +fi + +# The naming of these isn't very consistent, as some tools start with arm, +# others with arm7a. +export AR=$TOOLCHAIN_DIR/bin/arm-linux-androideabi-ar +export CC=$TOOLCHAIN_DIR/bin/armv7a-linux-androideabi$API_LEVEL-clang +export CXX=$TOOLCHAIN_DIR/bin/armv7a-linux-androideabi$API_LEVEL-clang++ +export LD=$TOOLCHAIN_DIR/bin/arm-linux-androideabi-ld +export LINK=$TOOLCHAIN_DIR/bin/armv7a-linux-androideabi$API_LEVEL-clang++ +export RANLIB=$TOOLCHAIN_DIR/bin/arm-linux-androideabi-ranlib +export STRIP=$TOOLCHAIN_DIR/bin/arm-linux-androideabi-strip + +cd node + +export GYP_DEFINES="OS=android clang=1" + +function myconf() { + ./configure \ + --dest-cpu=$DEST_CPU_ARCH \ + --dest-os=android \ + --without-snapshot \ + --without-intl \ + --openssl-no-asm \ + --without-bundled-v8 \ + --shared +} + +if [ -z ${2+x} ]; then + myconf && make + cd $scriptdir + x=compiled/armeabi-v7a/ + mkdir -p $x + cp node/out/Release/lib.target/libnode.so $x/ +else + eval $2 +fi diff --git a/build-android-v8 b/build-android-v8 new file mode 100755 index 0000000000..9fa04cdcad --- /dev/null +++ b/build-android-v8 @@ -0,0 +1,47 @@ +#!/usr/bin/env bash + +set -eu -o pipefail + +scriptdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" +cd $scriptdir + +NDK=$1 + +DEST_CPU_ARCH='arm' +API_LEVEL=26 +BUILD_HOST_TAG='linux-x86_64' +TOOLCHAIN_DIR=$NDK/toolchains/llvm/prebuilt/$BUILD_HOST_TAG/ + +if [[ ! -d "$NDK" ]]; then + echo "Android NDK directory '$NDK' invalid" + exit 1 +fi + +ln -fs $NDK ./deps/v8/third_party/android_ndk + +# We do not export anything about the tool chain, as v8 +# will pick their own toolchain for android from the ndk + +cd ./deps/v8 + +python2 ./tools/node/fetch_deps.py $PWD + +mode=debug + +./tools/dev/v8gen.py arm.$mode -- \ + 'target_os="android"' \ + 'target_cpu="arm"' \ + 'is_component_build=true' \ + 'v8_android_log_stdout=true' \ + 'v8_use_external_startup_data=false' \ + 'v8_use_snapshot=true' \ + 'v8_enable_debugging_features=true' \ + 'v8_enable_embedded_builtins=true' \ + 'is_clang=true' + +./_depot_tools/ninja -C out.gn/arm.$mode v8 d8 + +cd $scriptdir +x=android-compiled/armeabi-v7a/ +mkdir -p $x +cp deps/v8/out.gn/arm.$mode/*.so $x/ |