65 lines
1.7 KiB
Bash
65 lines
1.7 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
CURRENT_DIR=$(pwd)
|
|
|
|
ABI=${1:-"arm64-v8a"}
|
|
API_LEVEL=${2:-21}
|
|
BUILD_TYPE=${3:-"Release"}
|
|
|
|
# step1: use host env to compile protoc
|
|
echo "step1: building protoc for host..."
|
|
HOST_BUILD_DIR="build_host"
|
|
mkdir -p $HOST_BUILD_DIR
|
|
cd $HOST_BUILD_DIR
|
|
|
|
cmake -DCMAKE_BUILD_TYPE="$BUILD_TYPE" ..
|
|
make -j protoc
|
|
PROTOC_EXECUTABLE=$CURRENT_DIR/$HOST_BUILD_DIR/bin/protoc
|
|
cd $CURRENT_DIR
|
|
|
|
echo "step1: Done!!!"
|
|
|
|
# step2: cross build zvec based on android ndk
|
|
echo "step2: building zvec for android..."
|
|
|
|
# reset thirdparty directory
|
|
git submodule foreach --recursive 'git stash --include-untracked'
|
|
|
|
export ANDROID_SDK_ROOT=$HOME/Library/Android/sdk
|
|
export ANDROID_HOME=$ANDROID_SDK_ROOT
|
|
export ANDROID_NDK_HOME=$ANDROID_SDK_ROOT/ndk/28.2.13676358
|
|
export CMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake
|
|
|
|
export PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin
|
|
export PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools
|
|
export PATH=$PATH:$ANDROID_NDK_HOME
|
|
|
|
if [ -z "$ANDROID_NDK_HOME" ]; then
|
|
echo "error: ANDROID_NDK_HOME env not set"
|
|
echo "please install NDK and set env variable ANDROID_NDK_HOME"
|
|
exit 1
|
|
fi
|
|
|
|
BUILD_DIR="build_android_${ABI}"
|
|
mkdir -p $BUILD_DIR
|
|
cd $BUILD_DIR
|
|
|
|
echo "configure CMake..."
|
|
cmake \
|
|
-DANDROID_NDK="$ANDROID_NDK_HOME" \
|
|
-DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake" \
|
|
-DANDROID_ABI="$ABI" \
|
|
-DANDROID_NATIVE_API_LEVEL="$API_LEVEL" \
|
|
-DANDROID_STL="c++_static" \
|
|
-DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
|
|
-DBUILD_PYTHON_BINDINGS=OFF \
|
|
-DBUILD_TOOLS=OFF \
|
|
-DCMAKE_INSTALL_PREFIX="./install" \
|
|
-DGLOBAL_CC_PROTOBUF_PROTOC=$PROTOC_EXECUTABLE \
|
|
../
|
|
|
|
echo "building..."
|
|
CORE_COUNT=$(sysctl -n hw.ncpu)
|
|
make -j$CORE_COUNT
|
|
|
|
echo "step2: Done!!!" |