summaryrefslogtreecommitdiff
path: root/taler-android-build
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2019-12-10 17:45:42 +0100
committerFlorian Dold <florian.dold@gmail.com>2019-12-10 22:28:08 +0100
commitd0e8ef2e22f0f8126760019d104b8858daf7cfa1 (patch)
tree539907875724993bd98484ee258e2a46c5876066 /taler-android-build
parent68874a617b5f6b43480f87bf18b681605a2f6f8c (diff)
downloadandroid-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/.gitignore1
-rw-r--r--taler-android-build/README1
-rwxr-xr-xtaler-android-build/arm62
-rwxr-xr-xtaler-android-build/arm6461
-rwxr-xr-xtaler-android-build/build-android-node25
-rwxr-xr-xtaler-android-build/build-android-v852
-rwxr-xr-xtaler-android-build/x6460
-rwxr-xr-xtaler-android-build/x8662
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/