diff options
author | Florian Dold <florian.dold@gmail.com> | 2019-12-10 17:45:42 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2019-12-10 22:28:08 +0100 |
commit | d0e8ef2e22f0f8126760019d104b8858daf7cfa1 (patch) | |
tree | 539907875724993bd98484ee258e2a46c5876066 /taler-android-build | |
parent | 68874a617b5f6b43480f87bf18b681605a2f6f8c (diff) | |
download | android-node-v8-d0e8ef2e22f0f8126760019d104b8858daf7cfa1.tar.gz android-node-v8-d0e8ef2e22f0f8126760019d104b8858daf7cfa1.tar.bz2 android-node-v8-d0e8ef2e22f0f8126760019d104b8858daf7cfa1.zip |
android build
Diffstat (limited to 'taler-android-build')
-rw-r--r-- | taler-android-build/.gitignore | 1 | ||||
-rw-r--r-- | taler-android-build/README | 1 | ||||
-rwxr-xr-x | taler-android-build/arm | 62 | ||||
-rwxr-xr-x | taler-android-build/arm64 | 61 | ||||
-rwxr-xr-x | taler-android-build/build-android-node | 25 | ||||
-rwxr-xr-x | taler-android-build/build-android-v8 | 52 | ||||
-rwxr-xr-x | taler-android-build/x64 | 60 | ||||
-rwxr-xr-x | taler-android-build/x86 | 62 |
8 files changed, 324 insertions, 0 deletions
diff --git a/taler-android-build/.gitignore b/taler-android-build/.gitignore new file mode 100644 index 0000000000..724bbe1c11 --- /dev/null +++ b/taler-android-build/.gitignore @@ -0,0 +1 @@ +compiled/ diff --git a/taler-android-build/README b/taler-android-build/README new file mode 100644 index 0000000000..fdac6b7d39 --- /dev/null +++ b/taler-android-build/README @@ -0,0 +1 @@ +names are based on the v8 CPU names diff --git a/taler-android-build/arm b/taler-android-build/arm new file mode 100755 index 0000000000..69c130054a --- /dev/null +++ b/taler-android-build/arm @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +set -eu -o pipefail + +scriptdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" +cd $scriptdir + +NDK=$1 + +API_LEVEL=21 +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 + +########## +# Build V8 +########## + +./build-android-v8 "$NDK" arm + +cd $scriptdir/.. +x=$scriptdir/compiled/armeabi-v7a/ +mkdir -p $x +cp deps/v8/out.gn/android-arm/*.so $x/ + + +############ +# Build Node +############ + +cd $scriptdir + +export DEST_CPU_ARCH=arm + +# 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 LD=$TOOLCHAIN_DIR/bin/arm-linux-androideabi-ld +export RANLIB=$TOOLCHAIN_DIR/bin/arm-linux-androideabi-ranlib +export STRIP=$TOOLCHAIN_DIR/bin/arm-linux-androideabi-strip + +export LINK=$TOOLCHAIN_DIR/bin/armv7a-linux-androideabi$API_LEVEL-clang++ +export CC=$TOOLCHAIN_DIR/bin/armv7a-linux-androideabi$API_LEVEL-clang +export CXX=$TOOLCHAIN_DIR/bin/armv7a-linux-androideabi$API_LEVEL-clang++ + +export CXXFLAGS='-D_LIBCPP_HAS_NO_OFF_T_FUNCTIONS' + +./build-android-node "$1" arm + +cd $scriptdir/.. +x=$scriptdir/compiled/armeabi-v7a/ +mkdir -p $x +cp out/Release/lib/libnode.so $x/ diff --git a/taler-android-build/arm64 b/taler-android-build/arm64 new file mode 100755 index 0000000000..31bf46c13a --- /dev/null +++ b/taler-android-build/arm64 @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +set -eu -o pipefail + +scriptdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" +cd $scriptdir + +NDK=$1 + +API_LEVEL=21 +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 + +########## +# Build V8 +########## + +./build-android-v8 "$1" arm64 + +cd $scriptdir/.. +x=$scriptdir/compiled/arm64-v8a/ +mkdir -p $x +cp deps/v8/out.gn/android-arm64/*.so $x/ + + + +############ +# Build Node +############ + +# The naming of these isn't very consistent, as some tools start with arm, +# others with arm7a. +export AR=$TOOLCHAIN_DIR/bin/aarch64-linux-android-ar +export LD=$TOOLCHAIN_DIR/bin/aarch64-linux-android-ld +export RANLIB=$TOOLCHAIN_DIR/bin/aarch64-linux-android-ranlib +export STRIP=$TOOLCHAIN_DIR/bin/aarch64-linux-android-strip + +export CC=$TOOLCHAIN_DIR/bin/aarch64-linux-android$API_LEVEL-clang +export CXX=$TOOLCHAIN_DIR/bin/aarch64-linux-android$API_LEVEL-clang++ +export LINK=$TOOLCHAIN_DIR/bin/aarch64-linux-android$API_LEVEL-clang++ + +export DEST_CPU_ARCH=arm64 + +cd $scriptdir + +./build-android-node "$1" arm64 + +cd $scriptdir/.. +x=$scriptdir/compiled/arm64-v8a/ +mkdir -p $x +cp out/Release/lib/libnode.so $x/ diff --git a/taler-android-build/build-android-node b/taler-android-build/build-android-node new file mode 100755 index 0000000000..c9e5a41da5 --- /dev/null +++ b/taler-android-build/build-android-node @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +# This script assumes that all the right environment variables +# (CC, LD, STRIP, ...) areset. + +set -eu -o pipefail + +scriptdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" +cd $scriptdir/.. + +export GYP_DEFINES="OS=android clang=1" + +function myconf() { + ./configure \ + --ninja \ + --cross-compiling \ + --dest-cpu=$DEST_CPU_ARCH \ + --dest-os=android \ + --without-intl \ + --openssl-no-asm \ + --without-bundled-v8 \ + --shared +} + +myconf && make diff --git a/taler-android-build/build-android-v8 b/taler-android-build/build-android-v8 new file mode 100755 index 0000000000..70057b9c5e --- /dev/null +++ b/taler-android-build/build-android-v8 @@ -0,0 +1,52 @@ +#!/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=$2 + +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 + +python3 ./tools/node/fetch_deps.py $PWD + +gn_args=$(cat <<EOF +is_official_build = true +is_debug = false +v8_enable_backtrace = false +v8_enable_slow_dchecks = true +v8_optimized_debug = false +v8_target_cpu = "$DEST_CPU_ARCH" +target_os="android" +target_cpu="$DEST_CPU_ARCH" +is_component_build=true +v8_android_log_stdout=true +v8_use_external_startup_data=false +v8_enable_debugging_features=false +v8_enable_embedded_builtins=true +is_clang=true +use_custom_libcxx=false +EOF +) + +echo gn_args $gn_args + +echo "executing gn gen" + +./buildtools/linux64/gn gen out.gn/android-$DEST_CPU_ARCH "--args=$gn_args" + +echo "executing ninja" + +./_depot_tools/ninja -C out.gn/android-$DEST_CPU_ARCH v8 d8 diff --git a/taler-android-build/x64 b/taler-android-build/x64 new file mode 100755 index 0000000000..22002bdd3e --- /dev/null +++ b/taler-android-build/x64 @@ -0,0 +1,60 @@ +#!/usr/bin/env bash + +set -eu -o pipefail + +scriptdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" +cd $scriptdir + +NDK=$1 + +API_LEVEL=21 +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 + +########## +# Build V8 +########## + +./build-android-v8 "$NDK" x64 + +cd $scriptdir/.. +x=$scriptdir/compiled/x86_64/ +mkdir -p $x +cp deps/v8/out.gn/android-x64/*.so $x/ + + +############ +# Build Node +############ + +cd $scriptdir + +export DEST_CPU_ARCH=x64 + +# The naming of these isn't very consistent, as some tools start with arm, +# others with arm7a. +export AR=$TOOLCHAIN_DIR/bin/x86_64-linux-android-ar +export LD=$TOOLCHAIN_DIR/bin/x86_64-linux-android-ld +export RANLIB=$TOOLCHAIN_DIR/bin/x86_64-linux-android-ranlib +export STRIP=$TOOLCHAIN_DIR/bin/x86_64-linux-android-strip + +export LINK=$TOOLCHAIN_DIR/bin/x86_64-linux-android$API_LEVEL-clang++ +export CC=$TOOLCHAIN_DIR/bin/x86_64-linux-android$API_LEVEL-clang +export CXX=$TOOLCHAIN_DIR/bin/x86_64-linux-android$API_LEVEL-clang++ + +./build-android-node "$1" x64 + +cd $scriptdir/.. +x=$scriptdir/compiled/x86_64/ +mkdir -p $x +cp out/Release/lib/libnode.so $x/ diff --git a/taler-android-build/x86 b/taler-android-build/x86 new file mode 100755 index 0000000000..f1a5d582d6 --- /dev/null +++ b/taler-android-build/x86 @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +set -eu -o pipefail + +scriptdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" +cd $scriptdir + +NDK=$1 + +API_LEVEL=21 +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 + +########## +# Build V8 +########## + +./build-android-v8 "$NDK" x86 + +cd $scriptdir/.. +x=$scriptdir/compiled/x86/ +mkdir -p $x +cp deps/v8/out.gn/android-x86/*.so $x/ + + +############ +# Build Node +############ + +cd $scriptdir + +export DEST_CPU_ARCH=x86 + +# The naming of these isn't very consistent, as some tools start with arm, +# others with arm7a. +export AR=$TOOLCHAIN_DIR/bin/i686-linux-android-ar +export LD=$TOOLCHAIN_DIR/bin/i686-linux-android-ld +export RANLIB=$TOOLCHAIN_DIR/bin/i686-linux-android-ranlib +export STRIP=$TOOLCHAIN_DIR/bin/i686-linux-android-strip + +export LINK=$TOOLCHAIN_DIR/bin/i686-linux-android$API_LEVEL-clang++ +export CC=$TOOLCHAIN_DIR/bin/i686-linux-android$API_LEVEL-clang +export CXX=$TOOLCHAIN_DIR/bin/i686-linux-android$API_LEVEL-clang++ + +export CXXFLAGS='-D_LIBCPP_HAS_NO_OFF_T_FUNCTIONS' + +./build-android-node "$1" x86 + +cd $scriptdir/.. +x=$scriptdir/compiled/x86/ +mkdir -p $x +cp out/Release/lib/libnode.so $x/ |