@@ -6,9 +6,11 @@ echo_help()
6
6
echo " -n Specify NDK root path for the build."
7
7
echo " -a Select target API level."
8
8
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"
10
11
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"
12
14
echo
13
15
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"
14
16
echo
@@ -17,11 +19,13 @@ echo_help()
17
19
# Init optional command line vars
18
20
NDK_ROOT=" "
19
21
API_LEVEL=28
20
- BUILD_TARGETS=" armeabi armeabi -v7a arm64-v8a x86 x86_64"
22
+ BUILD_TARGETS=" armeabi-v7a arm64-v8a x86 x86_64"
21
23
OPENSSL_VERSION=1.1.1h
22
24
SRT_VERSION=" "
25
+ ENC_LIB=openssl
26
+ MBEDTLS_VERSION=v2.26.0
23
27
24
- while getopts n:a:t:o:s: option
28
+ while getopts n:a:t:o:s:e:m: option
25
29
do
26
30
case " ${option} "
27
31
in
30
34
t) BUILD_TARGETS=${OPTARG} ;;
31
35
o) OPENSSL_VERSION=${OPTARG} ;;
32
36
s) SRT_VERSION=${OPTARG} ;;
37
+ e) ENC_LIB=${OPTARG} ;;
38
+ m) MBEDTLS_VERSION=${OPTARG} ;;
33
39
* ) twentytwo=${OPTARG} ;;
34
40
esac
35
41
done
49
55
# Determine the path of the executing script
50
56
BASE_DIR=$( readlink -f $0 | xargs dirname)
51
57
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
53
71
54
72
if [ ! -d $BASE_DIR /srt ]; then
55
73
git clone https://github.com/Haivision/srt srt
@@ -58,12 +76,20 @@ if [ ! -d $BASE_DIR/srt ]; then
58
76
fi
59
77
fi
60
78
61
- JNI_DIR=$BASE_DIR /prebuilt
62
-
63
79
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
66
84
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
69
95
done
0 commit comments