Skip to content

Commit 349bc49

Browse files
author
Mikołaj Małecki
committed
Merge branch 'master' into dev-add-atomic
2 parents 80cef25 + e37f4ab commit 349bc49

File tree

3 files changed

+73
-13
lines changed

3 files changed

+73
-13
lines changed

scripts/build-android/build-android

+37-11
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@ echo_help()
66
echo " -n Specify NDK root path for the build."
77
echo " -a Select target API level."
88
echo " -t Select target architectures."
9-
echo " Android supports the following architectures: armeabi armeabi-v7a arm64-v8a x86 x86_64."
9+
echo " Android supports the following architectures: armeabi-v7a arm64-v8a x86 x86_64."
10+
echo " -e Encryption library to be used. Possible options: openssl (default) mbedtls"
1011
echo " -o Select OpenSSL (1.1.1 series) version. E.g. 1.1.1h"
11-
echo " -s Select a specific SRT tag. E.g. v1.4.3"
12+
echo " -m Select Mbed TLS version. E.g. v2.26.0"
13+
echo " -s Select SRT version. E.g. v1.4.3"
1214
echo
1315
echo "Example: ./build-android -n /home/username/Android/Sdk/ndk/21.4.7075529 -a 28 -t \"armeabi-v7a arm64-v8a x86 x86_64\" -o 1.1.1h -s v1.4.3"
1416
echo
@@ -17,11 +19,13 @@ echo_help()
1719
# Init optional command line vars
1820
NDK_ROOT=""
1921
API_LEVEL=28
20-
BUILD_TARGETS="armeabi armeabi-v7a arm64-v8a x86 x86_64"
22+
BUILD_TARGETS="armeabi-v7a arm64-v8a x86 x86_64"
2123
OPENSSL_VERSION=1.1.1h
2224
SRT_VERSION=""
25+
ENC_LIB=openssl
26+
MBEDTLS_VERSION=v2.26.0
2327

24-
while getopts n:a:t:o:s: option
28+
while getopts n:a:t:o:s:e:m: option
2529
do
2630
case "${option}"
2731
in
@@ -30,6 +34,8 @@ do
3034
t) BUILD_TARGETS=${OPTARG};;
3135
o) OPENSSL_VERSION=${OPTARG};;
3236
s) SRT_VERSION=${OPTARG};;
37+
e) ENC_LIB=${OPTARG};;
38+
m) MBEDTLS_VERSION=${OPTARG};;
3339
*) twentytwo=${OPTARG};;
3440
esac
3541
done
@@ -49,7 +55,19 @@ fi
4955
# Determine the path of the executing script
5056
BASE_DIR=$(readlink -f $0 | xargs dirname)
5157

52-
$BASE_DIR/mkssl -n $NDK_ROOT -a $API_LEVEL -t "$BUILD_TARGETS" -o $OPENSSL_VERSION
58+
if [ $ENC_LIB = 'openssl' ]; then
59+
$BASE_DIR/mkssl -n $NDK_ROOT -a $API_LEVEL -t "$BUILD_TARGETS" -o $OPENSSL_VERSION
60+
elif [ $ENC_LIB = 'mbedtls' ]; then
61+
if [ ! -d $BASE_DIR/mbedtls ]; then
62+
git clone https://github.com/ARMmbed/mbedtls mbedtls
63+
if [ ! -z "$MBEDTLS_VERSION" ]; then
64+
git -C $BASE_DIR/mbedtls checkout $MBEDTLS_VERSION
65+
fi
66+
fi
67+
else
68+
echo "Unknown encryption library. Possible options: openssl mbedtls"
69+
exit 128
70+
fi
5371

5472
if [ ! -d $BASE_DIR/srt ]; then
5573
git clone https://github.com/Haivision/srt srt
@@ -58,12 +76,20 @@ if [ ! -d $BASE_DIR/srt ]; then
5876
fi
5977
fi
6078

61-
JNI_DIR=$BASE_DIR/prebuilt
62-
6379
for build_target in $BUILD_TARGETS; do
64-
git -C $BASE_DIR/srt clean -fd
65-
$BASE_DIR/mksrt -n $NDK_ROOT -a $API_LEVEL -t $build_target -s $BASE_DIR/srt -i $BASE_DIR/$build_target
80+
LIB_DIR=$BASE_DIR/$build_target/lib
81+
JNI_DIR=$BASE_DIR/prebuilt/$build_target
82+
83+
mkdir -p $JNI_DIR
6684

67-
mkdir -p $JNI_DIR/$build_target
68-
cp $BASE_DIR/$build_target/lib/libsrt.so $JNI_DIR/$build_target/libsrt.so
85+
if [ $ENC_LIB = 'mbedtls' ]; then
86+
$BASE_DIR/mkmbedtls -n $NDK_ROOT -a $API_LEVEL -t $build_target -s $BASE_DIR/mbedtls -i $BASE_DIR/$build_target
87+
cp $LIB_DIR/libmbedcrypto.so $JNI_DIR/libmbedcrypto.so
88+
cp $LIB_DIR/libmbedtls.so $JNI_DIR/libmbedtls.so
89+
cp $LIB_DIR/libmbedx509.so $JNI_DIR/libmbedx509.so
90+
fi
91+
92+
git -C $BASE_DIR/srt clean -fd
93+
$BASE_DIR/mksrt -n $NDK_ROOT -a $API_LEVEL -t $build_target -e $ENC_LIB -s $BASE_DIR/srt -i $BASE_DIR/$build_target
94+
cp $LIB_DIR/libsrt.so $JNI_DIR/libsrt.so
6995
done

scripts/build-android/mkmbedtls

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/bin/sh
2+
3+
while getopts s:i:t:n:a: option
4+
do
5+
case "${option}"
6+
in
7+
s) SRC_DIR=${OPTARG};;
8+
i) INSTALL_DIR=${OPTARG};;
9+
t) ARCH_ABI=${OPTARG};;
10+
n) NDK_ROOT=${OPTARG};;
11+
a) API_LEVEL=${OPTARG};;
12+
*) twentytwo=${OPTARG};;
13+
esac
14+
done
15+
16+
17+
BUILD_DIR=/tmp/mbedtls_android_build
18+
rm -rf $BUILD_DIR
19+
mkdir $BUILD_DIR
20+
cd $BUILD_DIR
21+
cmake -DENABLE_TESTING=Off -DUSE_SHARED_MBEDTLS_LIBRARY=On \
22+
-DCMAKE_PREFIX_PATH=$INSTALL_DIR -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR -DCMAKE_ANDROID_NDK=$NDK_ROOT \
23+
-DCMAKE_SYSTEM_NAME=Android -DCMAKE_SYSTEM_VERSION=$API_LEVEL -DCMAKE_ANDROID_ARCH_ABI=$ARCH_ABI \
24+
-DCMAKE_C_FLAGS="-fPIC" -DCMAKE_SHARED_LINKER_FLAGS="-Wl,--build-id" \
25+
-DCMAKE_BUILD_TYPE=RelWithDebInfo $SRC_DIR
26+
cmake --build .
27+
cmake --install .

scripts/build-android/mksrt

+9-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/sh
22

3-
while getopts s:i:t:n:a: option
3+
while getopts s:i:t:n:a:e: option
44
do
55
case "${option}"
66
in
@@ -9,13 +9,20 @@ do
99
t) ARCH_ABI=${OPTARG};;
1010
n) NDK_ROOT=${OPTARG};;
1111
a) API_LEVEL=${OPTARG};;
12+
e) ENC_LIB=${OPTARG};;
1213
*) twentytwo=${OPTARG};;
1314
esac
1415
done
1516

1617

1718
cd $SRC_DIR
18-
./configure --use-openssl-pc=OFF --OPENSSL_USE_STATIC_LIBS=true \
19+
./configure --use-enclib=$ENC_LIB \
20+
--use-openssl-pc=OFF --OPENSSL_USE_STATIC_LIBS=TRUE \
21+
--OPENSSL_INCLUDE_DIR=$INSTALL_DIR/include \
22+
--OPENSSL_CRYPTO_LIBRARY=$INSTALL_DIR/lib/libcrypto.a --OPENSSL_SSL_LIBRARY=$INSTALL_DIR/lib/libssl.a \
23+
--STATIC_MBEDTLS=FALSE \
24+
--MBEDTLS_INCLUDE_DIR=$INSTALL_DIR/include --MBEDTLS_INCLUDE_DIRS=$INSTALL_DIR/include \
25+
--MBEDTLS_LIBRARIES=$INSTALL_DIR/lib/libmbedtls.so \
1926
--CMAKE_PREFIX_PATH=$INSTALL_DIR --CMAKE_INSTALL_PREFIX=$INSTALL_DIR --CMAKE_ANDROID_NDK=$NDK_ROOT \
2027
--CMAKE_SYSTEM_NAME=Android --CMAKE_SYSTEM_VERSION=$API_LEVEL --CMAKE_ANDROID_ARCH_ABI=$ARCH_ABI \
2128
--CMAKE_C_FLAGS="-fPIC" --CMAKE_SHARED_LINKER_FLAGS="-Wl,--build-id" \

0 commit comments

Comments
 (0)