54 lines
1.2 KiB
Bash
Executable File
54 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
set -eo pipefail
|
|
|
|
ASAN=0
|
|
for arg; do
|
|
case "$arg" in
|
|
--asan) ASAN=1 ;;
|
|
-j*) JOBS="${arg#-j}" ;;
|
|
esac
|
|
done
|
|
|
|
# --- dependencies ---
|
|
PKGS="cmake librlottie-dev zlib1g-dev qtbase5-dev libssl-dev"
|
|
MISSING=""
|
|
for p in $PKGS; do
|
|
dpkg -s "$p" &>/dev/null || MISSING="$MISSING $p"
|
|
done
|
|
|
|
if [ -n "$MISSING" ]; then
|
|
echo "Installing missing packages:$MISSING"
|
|
sudo apt update && sudo apt install -y $MISSING
|
|
else
|
|
echo "All dependencies OK"
|
|
fi
|
|
|
|
# --- build ---
|
|
SRCDIR="$(cd "$(dirname "$0")" && pwd)"
|
|
BUILDDIR="$SRCDIR/build"
|
|
JOBS="${JOBS:-$(nproc)}"
|
|
|
|
echo "Source: $SRCDIR"
|
|
echo "Build: $BUILDDIR"
|
|
echo "Jobs: $JOBS"
|
|
echo ""
|
|
|
|
SAN_FLAGS="-fsanitize=address -fno-omit-frame-pointer -g"
|
|
if [ "$ASAN" -eq 1 ]; then
|
|
echo "*** ASAN ENABLED ***"
|
|
CMAKE_ARGS=(-DCMAKE_C_FLAGS="$SAN_FLAGS" -DCMAKE_CXX_FLAGS="$SAN_FLAGS" -DCMAKE_EXE_LINKER_FLAGS=-fsanitize=address)
|
|
rm -f "$BUILDDIR/CMakeCache.txt" "$BUILDDIR/Makefile"
|
|
else
|
|
CMAKE_ARGS=()
|
|
fi
|
|
|
|
[ -f "$BUILDDIR/Makefile" ] || cmake -S "$SRCDIR" -B "$BUILDDIR" "${CMAKE_ARGS[@]}"
|
|
cmake --build "$BUILDDIR" -j"$JOBS"
|
|
|
|
echo ""
|
|
if [ "$ASAN" -eq 1 ]; then
|
|
echo "OK. Run: ASAN_OPTIONS=detect_leaks=1:halt_on_error=0 $BUILDDIR/chatgui"
|
|
else
|
|
echo "OK. Run: $BUILDDIR/chatgui"
|
|
fi
|