1 Star 0 Fork 0

float996/aws-iot-fleetwise-edge

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
install-deps-cross-android.sh 8.61 KB
一键复制 编辑 原始数据 按行查看 历史
Geoff Phillips 提交于 2023-08-02 19:41 +08:00 . Release v1.0.7
#!/bin/bash
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
set -euo pipefail
SCRIPT_DIR=$(dirname $(realpath "$0"))
source ${SCRIPT_DIR}/install-deps-versions.sh
USE_CACHE="true"
SDK_PREFIX="/usr/local/android_sdk"
ARCHS="x86_64:x86_64-linux-android:android-x86_64 \
armeabi-v7a:armv7a-linux-androideabi:android-arm \
arm64-v8a:aarch64-linux-android:android-arm64"
parse_args() {
while [ "$#" -gt 0 ]; do
case $1 in
--archs)
ARCHS=$2
shift
;;
--native-prefix)
NATIVE_PREFIX="$2"
USE_CACHE="false"
shift
;;
--help)
echo "Usage: $0 [OPTION]"
echo " --archs <ARCHS> Space separated list of archs in the format <ARCH>:<HOST_PLATFORM>:<SSL_TARGET>"
echo " --native-prefix Native install prefix"
exit 0
;;
esac
shift
done
}
parse_args "$@"
apt update
apt install -y \
unzip \
git \
wget \
curl \
default-jre \
build-essential \
file
if [ ! -d ${SDK_PREFIX} ]; then
curl -o cmdline-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-${VERSION_ANDROID_CMDLINE_TOOLS}_latest.zip
unzip cmdline-tools.zip
rm cmdline-tools.zip
mkdir -p ${SDK_PREFIX}/cmdline-tools
mv cmdline-tools ${SDK_PREFIX}/cmdline-tools/latest
yes | ${SDK_PREFIX}/cmdline-tools/latest/bin/sdkmanager --licenses || true
${SDK_PREFIX}/cmdline-tools/latest/bin/sdkmanager --install \
"ndk;${VERSION_ANDROID_NDK}" \
"cmake;${VERSION_CMAKE}" \
"platforms;android-${VERSION_ANDROID_SDK}" \
"platform-tools" \
"emulator" \
"build-tools;${VERSION_ANDROID_BUILD_TOOLS}"
fi
export PATH=${SDK_PREFIX}/cmake/${VERSION_CMAKE}/bin/:${PATH}
if [ -z "${NATIVE_PREFIX+x}" ]; then
NATIVE_PREFIX="/usr/local/`gcc -dumpmachine`"
fi
install_deps() {
TARGET_ARCH="$1"
HOST_PLATFORM="$2"
SSL_TARGET="$3"
INSTALL_PREFIX="/usr/local/${HOST_PLATFORM}"
mkdir -p ${INSTALL_PREFIX}
mkdir -p ${NATIVE_PREFIX}
mkdir deps-cross-android && cd deps-cross-android
# Boost
git clone https://github.com/moritz-wundke/Boost-for-Android.git
cd Boost-for-Android
git checkout 53e6c16ea80c7dcb2683fd548e0c7a09ddffbfc1
./build-android.sh \
${SDK_PREFIX}/ndk/${VERSION_ANDROID_NDK} \
--boost=${VERSION_BOOST} \
--with-libraries=system,thread,filesystem,chrono,date_time,atomic \
--layout=system \
--arch=${TARGET_ARCH} \
--target-version=${VERSION_ANDROID_API} > /dev/null
mv build/out/${TARGET_ARCH}/lib ${INSTALL_PREFIX}
mv build/out/${TARGET_ARCH}/include ${INSTALL_PREFIX}
cd ..
# Snappy
git clone -b ${VERSION_SNAPPY} https://github.com/google/snappy.git
cd snappy
mkdir build && cd build
cmake \
-DSNAPPY_BUILD_TESTS=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DSNAPPY_BUILD_BENCHMARKS=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DANDROID_ABI=${TARGET_ARCH} \
-DANDROID_PLATFORM=android-${VERSION_ANDROID_API} \
-DCMAKE_ANDROID_NDK=${SDK_PREFIX}/ndk/${VERSION_ANDROID_NDK} \
-DCMAKE_TOOLCHAIN_FILE=${SDK_PREFIX}/ndk/${VERSION_ANDROID_NDK}/build/cmake/android.toolchain.cmake \
-DANDROID_TOOLCHAIN=clang \
-DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
..
make install -j`nproc`
cd ../..
# Protobuf
wget -q https://github.com/protocolbuffers/protobuf/releases/download/${VERSION_PROTOBUF_RELEASE}/protobuf-cpp-${VERSION_PROTOBUF}.tar.gz
tar -zxf protobuf-cpp-${VERSION_PROTOBUF}.tar.gz
cd protobuf-${VERSION_PROTOBUF}
if [ ! -f ${NATIVE_PREFIX}/bin/protoc ]; then
mkdir build_native && cd build_native
../configure --prefix=${NATIVE_PREFIX}
make install -j`nproc`
cd ..
fi
mkdir build_target && cd build_target
NDK=${SDK_PREFIX}/ndk/${VERSION_ANDROID_NDK} \
TOOLCHAIN=${NDK}/toolchains/llvm/prebuilt/linux-x86_64 \
TARGET=${HOST_PLATFORM} \
API=${VERSION_ANDROID_API} \
AR=${TOOLCHAIN}/bin/llvm-ar \
CC=${TOOLCHAIN}/bin/${TARGET}${API}-clang \
AS=${CC} \
CXX=${TOOLCHAIN}/bin/${TARGET}${API}-clang++ \
LD=${TOOLCHAIN}/bin/ld \
RANLIB=${TOOLCHAIN}/bin/llvm-ranlib \
STRIP=${TOOLCHAIN}/bin/llvm-strip \
../configure \
--host=${HOST_PLATFORM} \
--prefix=${INSTALL_PREFIX} \
"CFLAGS=-fPIC" "CXXFLAGS=-fPIC"
make install -j`nproc`
cd ../..
# JsonCpp
git clone -b ${VERSION_JSON_CPP} https://github.com/open-source-parsers/jsoncpp.git
cd jsoncpp
mkdir build && cd build
cmake \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=On \
-DJSONCPP_WITH_TESTS=Off \
-DJSONCPP_WITH_POST_BUILD_UNITTEST=Off \
-DANDROID_ABI=${TARGET_ARCH} \
-DANDROID_PLATFORM=android-${VERSION_ANDROID_API} \
-DCMAKE_ANDROID_NDK=${SDK_PREFIX}/ndk/${VERSION_ANDROID_NDK} \
-DCMAKE_TOOLCHAIN_FILE=${SDK_PREFIX}/ndk/${VERSION_ANDROID_NDK}/build/cmake/android.toolchain.cmake \
-DANDROID_TOOLCHAIN=clang \
-DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
..
make install -j`nproc`
cd ../..
# OpenSSL
wget -q https://www.openssl.org/source/openssl-${VERSION_OPENSSL}.tar.gz
tar -zxf openssl-${VERSION_OPENSSL}.tar.gz
cd openssl-${VERSION_OPENSSL}
ANDROID_NDK_HOME=${SDK_PREFIX}/ndk/${VERSION_ANDROID_NDK} \
PATH=${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:${PATH} \
INSTALL_PREFIX=${INSTALL_PREFIX} SSL_TARGET=${SSL_TARGET} VERSION_ANDROID_API=${VERSION_ANDROID_API} \
bash -c './Configure ${SSL_TARGET} -D__ANDROID_API__=${VERSION_ANDROID_API} --prefix=${INSTALL_PREFIX} no-shared \
&& make -j`nproc`'
make install > /dev/null
cd ..
# curl
wget -q https://github.com/curl/curl/releases/download/${VERSION_CURL_RELEASE}/curl-${VERSION_CURL}.tar.gz
tar -zxf curl-${VERSION_CURL}.tar.gz
cd curl-${VERSION_CURL}
NDK=${SDK_PREFIX}/ndk/${VERSION_ANDROID_NDK} \
TOOLCHAIN=${NDK}/toolchains/llvm/prebuilt/linux-x86_64 \
TARGET=${HOST_PLATFORM} \
API=${VERSION_ANDROID_API} \
AR=${TOOLCHAIN}/bin/llvm-ar \
CC=${TOOLCHAIN}/bin/${TARGET}${API}-clang \
AS=${CC} \
CXX=${TOOLCHAIN}/bin/${TARGET}${API}-clang++ \
LD=${TOOLCHAIN}/bin/ld \
RANLIB=${TOOLCHAIN}/bin/llvm-ranlib \
STRIP=${TOOLCHAIN}/bin/llvm-strip \
LDFLAGS="-static" \
PKG_CONFIG="pkg-config --static" \
./configure \
--disable-shared \
--enable-static \
--disable-ldap \
--enable-ipv6 \
--with-ssl=${INSTALL_PREFIX} \
--disable-unix-sockets \
--disable-rtsp \
--host=${HOST_PLATFORM} \
--prefix=${INSTALL_PREFIX}
make install -j`nproc` V=1 LDFLAGS="-static -L${INSTALL_PREFIX}/lib"
cd ..
# AWS C++ SDK
git clone -b ${VERSION_AWS_SDK_CPP} --recursive https://github.com/aws/aws-sdk-cpp.git
cd aws-sdk-cpp
mkdir build && cd build
CFLAGS=-I${INSTALL_PREFIX}/include cmake \
-DENABLE_TESTING=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_ONLY='s3-crt;iot' \
-DAWS_CUSTOM_MEMORY_MANAGEMENT=ON \
-DANDROID_ABI=${TARGET_ARCH} \
-DANDROID_PLATFORM=android-${VERSION_ANDROID_API} \
-DCMAKE_ANDROID_NDK=${SDK_PREFIX}/ndk/${VERSION_ANDROID_NDK} \
-DCMAKE_TOOLCHAIN_FILE=${SDK_PREFIX}/ndk/${VERSION_ANDROID_NDK}/build/cmake/android.toolchain.cmake \
-DANDROID_TOOLCHAIN=clang \
-DCURL_LIBRARY=${INSTALL_PREFIX}/lib/libcurl.a \
-DCMAKE_FIND_ROOT_PATH=${INSTALL_PREFIX} \
-DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
..
make install -j`nproc`
cd ../..
# pthread is directly linked somewhere, so just create a dummy .a file
ar -rc ${INSTALL_PREFIX}/lib/libpthread.a
cd ..
rm -rf deps-cross-android
}
ARCH_NOT_INSTALLED="false"
for ARCH in ${ARCHS}; do
HOST_PLATFORM=`echo $ARCH | cut -d ':' -f2`
if [ ! -d /usr/local/${HOST_PLATFORM} ]; then
ARCH_NOT_INSTALLED="true"
break
fi
done
if ! ${USE_CACHE} || ${ARCH_NOT_INSTALLED} || [ ! -d ${NATIVE_PREFIX} ]; then
for ARCH in ${ARCHS}; do
TARGET_ARCH=`echo $ARCH | cut -d ':' -f1`
HOST_PLATFORM=`echo $ARCH | cut -d ':' -f2`
SSL_TARGET=`echo $ARCH | cut -d ':' -f3`
install_deps ${TARGET_ARCH} ${HOST_PLATFORM} ${SSL_TARGET}
done
fi
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/float996/aws-iot-fleetwise-edge.git
git@gitee.com:float996/aws-iot-fleetwise-edge.git
float996
aws-iot-fleetwise-edge
aws-iot-fleetwise-edge
main

搜索帮助