changelog
[platform/upstream/freerdp.git] / scripts / android-build-freerdp.sh
1 #!/bin/bash
2
3 JPEG_TAG=master
4 OPENH264_TAG=master
5 OPENSSL_TAG=master
6
7 WITH_JPEG=0
8 WITH_OPENH264=0
9 WITH_OPENSSL=0
10
11 SRC_DIR=$(dirname "${BASH_SOURCE[0]}")
12 SRC_DIR=$(realpath "$SRC_DIR")
13 BUILD_SRC=$(pwd)
14 BUILD_DST=$(pwd)
15
16 CMAKE_BUILD_TYPE=Debug
17 BUILD_DEPS=0
18
19 SCRIPT_PATH=$(dirname "${BASH_SOURCE[0]}")
20 source $SCRIPT_PATH/android-build-common.sh
21 source $SCRIPT_PATH/android-build.conf
22
23 # Parse arguments.
24 REMAINING=""
25 while [[ $# > 0 ]]
26 do
27         key="$1"
28         case $key in
29                 --freerdp-src)
30                         SRC_DIR="$2"
31                         shift
32                         ;;
33                 --jpeg)
34                         WITH_JPEG=1
35                         shift
36                         ;;
37                 --openh264)
38                         WITH_OPENH264=1
39                         shift
40                         ;;
41                 --openh264-ndk)
42                         shift
43                         ANDROID_NDK_OPENH264=$1
44                         shift
45                         ;;
46                 --openssl)
47                         WITH_OPENSSL=1
48                         shift
49                         ;;
50                 --debug)
51                         CMAKE_BUILD_TYPE=Debug
52                         shift
53                         ;;
54                 --release)
55                         CMAKE_BUILD_TYPE=Release
56                         shift
57                         ;;
58                 --relWithDebug)
59                         CMAKE_BUILD_TYPE=RelWithDebug
60                         shift
61                         ;;
62                 --build-deps)
63                         BUILD_DEPS=1
64                         shift
65                         ;;
66                 *)
67                         REMAINING="$REMAINING $key"
68                         shift
69                         ;;
70         esac
71 done
72 common_parse_arguments $REMAINING
73
74 # clean up top
75 if [ -d $BUILD_SRC ];
76 then
77         common_clean $BUILD_SRC
78 fi
79
80 if [ -d $BUILD_DST ];
81 then
82         common_run mkdir -p $BUILD_DST
83 fi
84
85 # Prepare the environment
86 common_run mkdir -p $BUILD_SRC
87
88 CMAKE_CMD_ARGS="-DANDROID_NDK=$ANDROID_NDK \
89         -DANDROID_NATIVE_API_LEVEL=android-${NDK_TARGET} \
90         -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
91         -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE \
92         -DFREERDP_EXTERNAL_PATH=$BUILD_DST \
93         -DCMAKE_MAKE_PROGRAM=make"
94
95 BASE=$(pwd)
96 for ARCH in $BUILD_ARCH
97 do
98     # build dependencies.
99     if [ $WITH_JPEG -ne 0 ];
100     then
101         if [ $BUILD_DEPS -ne 0 ];
102         then
103             common_run bash $SCRIPT_PATH/android-build-jpeg.sh \
104                 --src $BUILD_SRC/jpeg --dst $BUILD_DST \
105                 --ndk $ANDROID_NDK \
106                 --arch $ARCH \
107                 --target $NDK_TARGET \
108                 --tag $JPEG_TAG
109         fi
110         CMAKE_CMD_ARGS="$CMAKE_CMD_ARGS -DWITH_JPEG=ON"
111     else
112         CMAKE_CMD_ARGS="$CMAKE_CMD_ARGS -DWITH_JPEG=OFF"
113     fi
114     if [ $WITH_OPENH264 -ne 0 ];
115     then
116         if [ -z "$ANDROID_NDK_OPENH264" ]
117         then
118             echo
119             echo "Warning: Missing openh264-ndk, using $ANDROID_NDK" >&2
120             echo
121             ANDROID_NDK_OPENH264=$ANDROID_NDK
122         fi
123         if [ $BUILD_DEPS -ne 0 ];
124         then
125             common_run bash $SCRIPT_PATH/android-build-openh264.sh \
126                 --src $BUILD_SRC/openh264 --dst $BUILD_DST \
127                 --sdk "$ANDROID_SDK" \
128                 --ndk "$ANDROID_NDK_OPENH264" \
129                 --arch $ARCH \
130                 --target $NDK_TARGET \
131                 --tag $OPENH264_TAG
132         fi
133         CMAKE_CMD_ARGS="$CMAKE_CMD_ARGS -DWITH_OPENH264=ON"
134     else
135         CMAKE_CMD_ARGS="$CMAKE_CMD_ARGS -DWITH_OPENH264=OFF"
136     fi
137     if [ $WITH_OPENSSL -ne 0 ];
138     then
139         if [ $BUILD_DEPS -ne 0 ];
140         then
141             common_run bash $SCRIPT_PATH/android-build-openssl.sh \
142                 --src $BUILD_SRC/openssl --dst $BUILD_DST \
143                 --sdk "$ANDROID_SDK" \
144                 --ndk $ANDROID_NDK \
145                 --arch $ARCH \
146                 --target $NDK_TARGET \
147                 --tag $OPENSSL_TAG
148         fi
149     fi
150
151     # Build and install the library.
152     if [ $DEPS_ONLY -eq 0 ];
153     then
154         common_run cd $BASE
155         common_run mkdir -p $BUILD_SRC/freerdp-build/$ARCH
156         common_run cd $BUILD_SRC/freerdp-build/$ARCH
157         common_run export ANDROID_NDK=$ANDROID_NDK
158         common_run $CMAKE_PROGRAM $CMAKE_CMD_ARGS \
159                 -DANDROID_ABI=$ARCH \
160                 -DCMAKE_INSTALL_PREFIX=$BUILD_DST/$ARCH \
161                 -DCMAKE_INSTALL_LIBDIR=. \
162                 $SRC_DIR
163         echo $(pwd)
164         common_run cmake --build . --target install
165     fi
166 done
167
168 echo "Successfully build library for architectures $BUILD_ARCH"