2021-11-08 13:27:45 +08:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
# Copyright © 2021 by The qTox Project Contributors
|
|
|
|
#
|
|
|
|
# This program is libre software: you can redistribute it and/or modify
|
|
|
|
# it under the terms of the GNU General Public License as published by
|
|
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
|
|
# (at your option) any later version.
|
|
|
|
#
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
# GNU General Public License for more details.
|
|
|
|
#
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
|
|
usage() {
|
|
|
|
echo "$0 [--minimal|--full] --build-type [Debug|Release]"
|
|
|
|
echo "Build script to build/test qtox from a CI environment."
|
|
|
|
echo "--minimal or --full are requied, --build-type is required."
|
|
|
|
}
|
|
|
|
|
|
|
|
while (( $# > 0 )); do
|
|
|
|
case $1 in
|
|
|
|
--minimal) MINIMAL=1 ; shift ;;
|
|
|
|
--full) MINIMAL=0; shift ;;
|
2022-02-17 23:36:14 +08:00
|
|
|
--sanitize) SANITIZE=1; shift ;;
|
2022-03-09 10:55:53 +08:00
|
|
|
--online-tests) ONLINE_TESTS=1; shift ;;
|
2021-11-08 13:27:45 +08:00
|
|
|
--build-type) BUILD_TYPE=$2; shift 2 ;;
|
|
|
|
--help|-h) usage; exit 1 ;;
|
|
|
|
*) echo "Unexpected argument $1"; usage; exit 1 ;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
|
|
|
if [ -z "${MINIMAL+x}" ]; then
|
|
|
|
echo "Please build either minimal or full version of qtox"
|
|
|
|
usage
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -z "${BUILD_TYPE+x}" ]; then
|
|
|
|
echo "Please spedify build type"
|
|
|
|
usage
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2022-02-17 23:36:14 +08:00
|
|
|
SANITIZE_ARGS=""
|
|
|
|
if [ ! -z ${SANITIZE+x} ]; then
|
|
|
|
SANITIZE_ARGS="-DASAN=ON"
|
|
|
|
fi
|
|
|
|
|
2021-11-08 13:27:45 +08:00
|
|
|
SRCDIR=/qtox
|
2022-02-17 13:17:20 +08:00
|
|
|
export CTEST_OUTPUT_ON_FAILURE=1
|
2021-11-08 13:27:45 +08:00
|
|
|
|
|
|
|
if [ $MINIMAL -eq 1 ]; then
|
|
|
|
cmake "$SRCDIR" \
|
|
|
|
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
|
|
|
|
-DSMILEYS=DISABLED \
|
|
|
|
-DSTRICT_OPTIONS=ON \
|
2022-02-17 23:36:14 +08:00
|
|
|
-DSPELL_CHECK=OFF \
|
|
|
|
$SANITIZE_ARGS
|
2021-11-08 13:27:45 +08:00
|
|
|
else
|
|
|
|
cmake "$SRCDIR" \
|
|
|
|
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
|
|
|
|
-DUPDATE_CHECK=ON \
|
|
|
|
-DSTRICT_OPTIONS=ON \
|
|
|
|
-DCODE_COVERAGE=ON \
|
2022-02-17 23:36:14 +08:00
|
|
|
-DDESKTOP_NOTIFICATIONS=ON \
|
|
|
|
$SANITIZE_ARGS
|
2021-11-08 13:27:45 +08:00
|
|
|
fi
|
|
|
|
|
2022-03-09 10:55:53 +08:00
|
|
|
EXCLUDE_TESTS=""
|
|
|
|
if [ -z ${ONLINE_TESTS+x} ]; then
|
|
|
|
EXCLUDE_TESTS="-E core"
|
|
|
|
fi
|
|
|
|
|
2021-11-08 13:27:45 +08:00
|
|
|
cmake --build . -- -j $(nproc)
|
2022-03-09 10:55:53 +08:00
|
|
|
ctest ${EXCLUDE_TESTS} -j$(nproc)
|